public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/39280]  New: Optimizing integer power
@ 2009-02-23 19:50 tkoenig at gcc dot gnu dot org
  2009-02-24 10:10 ` [Bug fortran/39280] " rguenth at gcc dot gnu dot org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: tkoenig at gcc dot gnu dot org @ 2009-02-23 19:50 UTC (permalink / raw)
  To: gcc-bugs

$ cat foo.f90
subroutine foo
  implicit none
  integer :: i,n
  do i=1,10
    n = (-1)**(i+1)
    call bar(n)
  end do
end subroutine foo
$ gfortran -S -O2 -fdump-tree-optimized foo.f90
...

  i = i + 1;
  n.0 = _gfortran_pow_i4_i4 (-1, i);
  n = n.0;
  bar (&n);

We could eliminate the call to _gfortran_pow_i4_i4.


-- 
           Summary: Optimizing integer power
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tkoenig at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
@ 2009-02-24 10:10 ` rguenth at gcc dot gnu dot org
  2009-02-24 12:01 ` burnus at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-02-24 10:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2009-02-24 10:10 -------
... this asks for a POW_EXPR middle-end tree I guess.  Or you can use
builtins.c:expand_powi* do generate an expanded power series.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
  2009-02-24 10:10 ` [Bug fortran/39280] " rguenth at gcc dot gnu dot org
@ 2009-02-24 12:01 ` burnus at gcc dot gnu dot org
  2009-02-24 12:14 ` rguenther at suse dot de
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-02-24 12:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from burnus at gcc dot gnu dot org  2009-02-24 12:00 -------
> ... this asks for a POW_EXPR middle-end tree I guess.
I think that would be useful. See also middle-end PR 32503.

> Or you can use builtins.c:expand_powi* do generate an expanded power series.
That won't work for (-1)**variable, does it?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
  2009-02-24 10:10 ` [Bug fortran/39280] " rguenth at gcc dot gnu dot org
  2009-02-24 12:01 ` burnus at gcc dot gnu dot org
@ 2009-02-24 12:14 ` rguenther at suse dot de
  2009-03-28 14:12 ` fxcoudert at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenther at suse dot de @ 2009-02-24 12:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenther at suse dot de  2009-02-24 12:14 -------
Subject: Re:  Optimizing integer power

On Tue, 24 Feb 2009, burnus at gcc dot gnu dot org wrote:

> ------- Comment #2 from burnus at gcc dot gnu dot org  2009-02-24 12:00 -------
> > ... this asks for a POW_EXPR middle-end tree I guess.
> I think that would be useful. See also middle-end PR 32503.
> 
> > Or you can use builtins.c:expand_powi* do generate an expanded power series.
> That won't work for (-1)**variable, does it?

We likely don't special-case constant bases, yes.

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-02-24 12:14 ` rguenther at suse dot de
@ 2009-03-28 14:12 ` fxcoudert at gcc dot gnu dot org
  2010-05-09 21:09 ` dfranke at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2009-03-28 14:12 UTC (permalink / raw)
  To: gcc-bugs



-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-03-28 14:12:04
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2009-03-28 14:12 ` fxcoudert at gcc dot gnu dot org
@ 2010-05-09 21:09 ` dfranke at gcc dot gnu dot org
  2010-05-09 21:29 ` dominiq at lps dot ens dot fr
  2010-05-10  8:41 ` rguenther at suse dot de
  6 siblings, 0 replies; 8+ messages in thread
From: dfranke at gcc dot gnu dot org @ 2010-05-09 21:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from dfranke at gcc dot gnu dot org  2010-05-09 21:08 -------
Situation still the same with gcc version 4.6.0 20100509 (experimental) (GCC).

(In reply to comment #1)
> ... this asks for a POW_EXPR middle-end tree I guess.  Or you can use
> builtins.c:expand_powi* do generate an expanded power series.

Would that be enough of a gain to be worth the effort?


-- 

dfranke at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dfranke at gcc dot gnu dot
                   |                            |org
OtherBugsDependingO|                            |36854
              nThis|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
                   ` (4 preceding siblings ...)
  2010-05-09 21:09 ` dfranke at gcc dot gnu dot org
@ 2010-05-09 21:29 ` dominiq at lps dot ens dot fr
  2010-05-10  8:41 ` rguenther at suse dot de
  6 siblings, 0 replies; 8+ messages in thread
From: dominiq at lps dot ens dot fr @ 2010-05-09 21:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from dominiq at lps dot ens dot fr  2010-05-09 21:29 -------
I am not sure to understand the requested optimization. Is it only for the
special value j=-1 in j**i?

Note that for this situation I hate to rely on the compiler and I use a
"flipper", i.e., I replace

  do i=1,10
    n = (-1)**(i+1)
    call bar(n)
  end do

with

  n = -1
  do i=1,10
    n = -n
    call bar(n)
  end do


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/39280] Optimizing integer power
  2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
                   ` (5 preceding siblings ...)
  2010-05-09 21:29 ` dominiq at lps dot ens dot fr
@ 2010-05-10  8:41 ` rguenther at suse dot de
  6 siblings, 0 replies; 8+ messages in thread
From: rguenther at suse dot de @ 2010-05-10  8:41 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from rguenther at suse dot de  2010-05-10 08:41 -------
Subject: Re:  Optimizing integer power

On Sun, 9 May 2010, dfranke at gcc dot gnu dot org wrote:

> ------- Comment #4 from dfranke at gcc dot gnu dot org  2010-05-09 21:08 -------
> Situation still the same with gcc version 4.6.0 20100509 (experimental) (GCC).
> 
> (In reply to comment #1)
> > ... this asks for a POW_EXPR middle-end tree I guess.  Or you can use
> > builtins.c:expand_powi* do generate an expanded power series.
> 
> Would that be enough of a gain to be worth the effort?

If the Fortran standard allows integer powers to be expanded as
power series by default then I would say yes (at least for
non-constant power, for constant power one needs to compare
generated code - the frontend does the power series expansion
manually in this case, no?).

Richard.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39280


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-05-10  8:41 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-23 19:50 [Bug fortran/39280] New: Optimizing integer power tkoenig at gcc dot gnu dot org
2009-02-24 10:10 ` [Bug fortran/39280] " rguenth at gcc dot gnu dot org
2009-02-24 12:01 ` burnus at gcc dot gnu dot org
2009-02-24 12:14 ` rguenther at suse dot de
2009-03-28 14:12 ` fxcoudert at gcc dot gnu dot org
2010-05-09 21:09 ` dfranke at gcc dot gnu dot org
2010-05-09 21:29 ` dominiq at lps dot ens dot fr
2010-05-10  8:41 ` rguenther at suse dot de

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).