public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
@ 2005-03-08  2:49 canqun at nudt dot edu dot cn
  2005-03-08  3:13 ` [Bug rtl-optimization/20376] " pinskia at gcc dot gnu dot org
                   ` (15 more replies)
  0 siblings, 16 replies; 21+ messages in thread
From: canqun at nudt dot edu dot cn @ 2005-03-08  2:49 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2577 bytes --]

Induction variables are variables whose successive values form an arithmetic 
progression over a loop. Induction variables are often divided into bivs 
(basic induction variables), which are explicitly modified by 
the same constant amount during each iteration of a loop, and gives (general 
induction variables), which may be modified or computed by a linear-function 
of a basic induction variable. 

There are three important transformations that apply to them: strength 
reduction, induction-variable removal, and linear-function test replacement. 
For example, we can do strength reduction of address givs which are usually 
used for address calculation of array elements. On platforms with post-
increment load and store instructions, this will make chance to combine a 
load/store with the following address calculation instruction.

Also the induction variable splitting is an effective optimization during loop 
unrolling.

The new loop optimizer only support a limited gives analysis (ref. loop-iv.c), 
and has not yet implemented giv strength reduction and splitting (ref. ¡®loop-
unroll.c¡¯, ¡®analyze_iv_to_split_insn¡¯, and comments in this function, ¡°For 
now we just split the basic induction 
variables. Later this may be extended for example by selecting also addresses 
of memory references.¡±)

I test 171.swim on IA64 Linux system with 1GHz itanium2 CPU. After implemented 
or improved/adjusted several compile optimizations, such as Fortran alias 
analysis (very simple one), loop unrolling (the old one), loop arrays pre-
fetching, and giv optimizations, it costs just 9.1s (28s for GCC-4.0.0) to 
execute the train mode of 171.swim. But, apply those changes on current GCC-
4.0.0 (the old loop unroller was removed), it costs 
13.4 to execute this benchmark program, and I found that giv optimizations are 
the major factor of such performance degradation.

-- 
           Summary: The missed-optimization of general induction variables
                    in the new rtl-level loop optimizer cause performance
                    degradation.
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: canqun at nudt dot edu dot cn
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: ia64-unknown-linux
  GCC host triplet: ia64-unknown-linux
GCC target triplet: ia64-unknown-linux


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
@ 2005-03-08  3:13 ` pinskia at gcc dot gnu dot org
  2005-03-08  3:16   ` Diego Novillo
  2005-03-08  3:16 ` dnovillo at redhat dot com
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-03-08  3:13 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-08 03:13 -------
Why isn't the tree level loop IV-OPTs doing this?

-- 


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


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

* Re: [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  3:13 ` [Bug rtl-optimization/20376] " pinskia at gcc dot gnu dot org
@ 2005-03-08  3:16   ` Diego Novillo
  2005-03-08  3:18     ` Andrew Pinski
  0 siblings, 1 reply; 21+ messages in thread
From: Diego Novillo @ 2005-03-08  3:16 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

pinskia at gcc dot gnu dot org wrote:

> Why isn't the tree level loop IV-OPTs doing this?
> 
Because variable i is static.


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
  2005-03-08  3:13 ` [Bug rtl-optimization/20376] " pinskia at gcc dot gnu dot org
@ 2005-03-08  3:16 ` dnovillo at redhat dot com
  2005-03-08  3:18 ` pinskia at physics dot uc dot edu
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: dnovillo at redhat dot com @ 2005-03-08  3:16 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From dnovillo at redhat dot com  2005-03-08 03:16 -------
Subject: Re:  The missed-optimization of general
 induction variables in the new rtl-level loop optimizer cause performance
 degradation.

pinskia at gcc dot gnu dot org wrote:

> Why isn't the tree level loop IV-OPTs doing this?
> 
Because variable i is static.


-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
  2005-03-08  3:13 ` [Bug rtl-optimization/20376] " pinskia at gcc dot gnu dot org
  2005-03-08  3:16 ` dnovillo at redhat dot com
@ 2005-03-08  3:18 ` pinskia at physics dot uc dot edu
  2005-03-08  3:30   ` Daniel Berlin
  2005-03-08  3:21 ` dnovillo at redhat dot com
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 21+ messages in thread
From: pinskia at physics dot uc dot edu @ 2005-03-08  3:18 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at physics dot uc dot edu  2005-03-08 03:18 -------
Subject: Re:  The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.


On Mar 7, 2005, at 10:16 PM, Diego Novillo wrote:

> pinskia at gcc dot gnu dot org wrote:
>
>> Why isn't the tree level loop IV-OPTs doing this?
> Because variable i is static.

I think you commenting on the wrong bug.

-- Pinski



-- 


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


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

* Re: [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  3:16   ` Diego Novillo
@ 2005-03-08  3:18     ` Andrew Pinski
  2005-03-08  3:20       ` Diego Novillo
  0 siblings, 1 reply; 21+ messages in thread
From: Andrew Pinski @ 2005-03-08  3:18 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc-bugs, gcc-bugzilla


On Mar 7, 2005, at 10:16 PM, Diego Novillo wrote:

> pinskia at gcc dot gnu dot org wrote:
>
>> Why isn't the tree level loop IV-OPTs doing this?
> Because variable i is static.

I think you commenting on the wrong bug.

-- Pinski


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

* Re: [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  3:18     ` Andrew Pinski
@ 2005-03-08  3:20       ` Diego Novillo
  0 siblings, 0 replies; 21+ messages in thread
From: Diego Novillo @ 2005-03-08  3:20 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: gcc-bugs, gcc-bugzilla

Andrew Pinski wrote:

> I think you commenting on the wrong bug.
> 
Indeed.  I misread 20376 as 20367.  Sorry about that.


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (2 preceding siblings ...)
  2005-03-08  3:18 ` pinskia at physics dot uc dot edu
@ 2005-03-08  3:21 ` dnovillo at redhat dot com
  2005-03-08  3:30 ` dberlin at dberlin dot org
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: dnovillo at redhat dot com @ 2005-03-08  3:21 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From dnovillo at redhat dot com  2005-03-08 03:20 -------
Subject: Re:  The missed-optimization of general
 induction variables in the new rtl-level loop optimizer cause performance
 degradation.

Andrew Pinski wrote:

> I think you commenting on the wrong bug.
> 
Indeed.  I misread 20376 as 20367.  Sorry about that.


-- 


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


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

* Re: [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  3:18 ` pinskia at physics dot uc dot edu
@ 2005-03-08  3:30   ` Daniel Berlin
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel Berlin @ 2005-03-08  3:30 UTC (permalink / raw)
  To: gcc-bugzilla; +Cc: gcc-bugs

On Tue, 2005-03-08 at 03:18 +0000, pinskia at physics dot uc dot edu
wrote:
> ------- Additional Comments From pinskia at physics dot uc dot edu  2005-03-08 03:18 -------
> Subject: Re:  The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
> 
> 
> On Mar 7, 2005, at 10:16 PM, Diego Novillo wrote:
> 
> > pinskia at gcc dot gnu dot org wrote:
> >
> >> Why isn't the tree level loop IV-OPTs doing this?
> > Because variable i is static.
> 
> I think you commenting on the wrong bug.

In swim, most of the loop bounds are accessed through the COMMON block,
which is a structure.



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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (3 preceding siblings ...)
  2005-03-08  3:21 ` dnovillo at redhat dot com
@ 2005-03-08  3:30 ` dberlin at dberlin dot org
  2005-03-09 17:53 ` sje at cup dot hp dot com
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: dberlin at dberlin dot org @ 2005-03-08  3:30 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From dberlin at gcc dot gnu dot org  2005-03-08 03:30 -------
Subject: Re:  The missed-optimization of
	general induction variables in the new rtl-level loop optimizer cause
	performance degradation.

On Tue, 2005-03-08 at 03:18 +0000, pinskia at physics dot uc dot edu
wrote:
> ------- Additional Comments From pinskia at physics dot uc dot edu  2005-03-08 03:18 -------
> Subject: Re:  The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
> 
> 
> On Mar 7, 2005, at 10:16 PM, Diego Novillo wrote:
> 
> > pinskia at gcc dot gnu dot org wrote:
> >
> >> Why isn't the tree level loop IV-OPTs doing this?
> > Because variable i is static.
> 
> I think you commenting on the wrong bug.

In swim, most of the loop bounds are accessed through the COMMON block,
which is a structure.




-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (4 preceding siblings ...)
  2005-03-08  3:30 ` dberlin at dberlin dot org
@ 2005-03-09 17:53 ` sje at cup dot hp dot com
  2005-03-27 10:19 ` steven at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: sje at cup dot hp dot com @ 2005-03-09 17:53 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sje at cup dot hp dot com


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (5 preceding siblings ...)
  2005-03-09 17:53 ` sje at cup dot hp dot com
@ 2005-03-27 10:19 ` steven at gcc dot gnu dot org
  2005-03-30 11:38 ` steven at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-03-27 10:19 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2005-03-27 10:19 -------
Two things: 
1) Test case?  No test case, no way to reproduce it without re-doing the 
   investigating you have already done.  Stop work duplication, provide 
   test cases to your fellow GCC hackers.  I don't think anyone will 
   confirm this bug until there is a self-contained test case (that you 
   can add to this PR as an attachment), preferably with an annotated RTL 
   dump to show the problem (also as an attachment).  See also the bug 
   reporting guide, "http://gcc.gnu.org/bugs.html#report". 
2) Try compiling with -fweb, it may result in the code you are looking 
   for.  It basically is live range splitting, and it is a known problem 
   that we don't do that after unrolling.  Really, his is a job for the 
   register allocator, but since the existing one in GCC can not do this, 
   we need a live range splitting pass after unrolling. (And no, we do 
   not need this pass in the general case because when going out of SSA 
   form from trees we already do live range splitting too, and web is a 
   surprisingly expensive pass). 
 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |stevenb at suse dot de


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (6 preceding siblings ...)
  2005-03-27 10:19 ` steven at gcc dot gnu dot org
@ 2005-03-30 11:38 ` steven at gcc dot gnu dot org
  2005-03-30 14:43 ` canqun at nudt dot edu dot cn
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-03-30 11:38 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2005-03-30 11:38 -------
Waiting for a test case...

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (7 preceding siblings ...)
  2005-03-30 11:38 ` steven at gcc dot gnu dot org
@ 2005-03-30 14:43 ` canqun at nudt dot edu dot cn
  2005-03-30 19:54 ` steven at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: canqun at nudt dot edu dot cn @ 2005-03-30 14:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From canqun at nudt dot edu dot cn  2005-03-30 14:42 -------
(In reply to comment #7)
> Waiting for a test case...

Part 1
! Test sase for address giv (general induction variable) optimization.
subroutine dot_product (sum, a, b, n)
   real*8 a(n), b(n), sum
   sum = 0
   do i = 1, n
     sum = sum + a (i) * b(i)
   end do
end

Part 2
// IA-64 Assembly code generated by GCC without address giv splitting
        mov ar.lc = r14
.L4:
// Loop is unrolled, but the address givs are not splitted.
// Register r17, r19 is used to calculate all the addresses
// of the array elements.
        .mmb
        ldfd f7 = [r17]
        ldfd f6 = [r19]
        nop 0
        .mmi
        add r17 = r15, r33
        add r19 = r15, r34
        shladd r15 = r18, 3, r0
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f8 = f7, f6, f9
        .mmi
        ldfd f7 = [r17]
        ldfd f6 = [r19]
        add r17 = r15, r33
        .mfi
     nop 0
        shladd r15 = r16, 3, r0
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f8 = f7, f6, f8
        .mmi
        ldfd f7 = [r17]
        ldfd f6 = [r19]
        add r17 = r15, r33
        .mmb
        nop 0
        add r19 = r15, r34
        nop 0
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f8 = f7, f6, f8
        .mmb
        ldfd f7 = [r17]
        ldfd f6 = [r19]
        nop 0
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f8 = f7, f6, f8
        ;;
        .mfb
        nop 0
        mov f9 = f8
        br.cloop.sptk.few .L4
        ...
        .endp dot_product__#
        .ident  "GCC: (GNU) 4.1.0 20050302 (experimental)"

Part 3
// IA-64 assembly code generated by GCC with address giv splitting
        mov ar.lc = r16
.L28:
[.L3:]
[.L2:]
        ...
// The loop is unrolled, and the address givs are splitted.
// Register r14, r8, r3, r35, r33, r31,r28, r29 is used to
// caculate the address of each array element respectively.
        .mmi
        ldfd f38 = [r14]
        ldfd f39 = [r8]
        add r31 = r34, r23
        .mmi
        ldfd f35 = [r3]
        ldfd f37 = [r35]
        add r33 = r34, r24
        ;;
        .mmb
        ldfd f33 = [r33]
        ldfd f34 = [r31]
        nop 0
        .mmi
        add r28 = r30, r23
        add r29 = r30, r24
        adds r22 = 4, r22
        ;;
        .mmf
        ldfd f32 = [r29]
        ldfd f15 = [r28]
        fma.d f36 = f38, f39, f14
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f13 = f35, f37, f36
        ;;
        .mmf
        nop 0
        nop 0
        fma.d f12 = f33, f34, f13
        ;;
        .mfb
        nop 0
        fma.d f14 = f32, f15, f12
        br.cloop.sptk.few .L28
        ;;
.L9:
        .mfb
        stfd [r32] = f14
        nop 0
        nop 0
        ...
        .endp dot_product__#
        .ident  "GCC: (GNU) 3.5-tree-ssa 20031221 (CCRG)"

-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (8 preceding siblings ...)
  2005-03-30 14:43 ` canqun at nudt dot edu dot cn
@ 2005-03-30 19:54 ` steven at gcc dot gnu dot org
  2005-06-24 16:39 ` rakdver at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-03-30 19:54 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2005-03-30 19:54:01
               date|                            |


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (9 preceding siblings ...)
  2005-03-30 19:54 ` steven at gcc dot gnu dot org
@ 2005-06-24 16:39 ` rakdver at gcc dot gnu dot org
  2005-06-24 16:56 ` rakdver at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2005-06-24 16:39 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rakdver at gcc dot gnu dot org  2005-06-24 16:39 -------
Induction variable splitting works as expected (note that r17 and r19 from each 
iteration are computed independently, so they should not block scheduling).

Iv splitting does not rename the variables in different iterations of the 
unrolled loop directly.  But you will get this if you also use -fweb.

Note however that even with -fweb you won't get the code you would like,
simply because register allocator decides to put all the new registers back
into one (which is ok, since their life ranges do not overlap).

-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (10 preceding siblings ...)
  2005-06-24 16:39 ` rakdver at gcc dot gnu dot org
@ 2005-06-24 16:56 ` rakdver at gcc dot gnu dot org
  2005-06-26 12:13 ` steven at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2005-06-24 16:56 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rakdver at gcc dot gnu dot org  2005-06-24 16:56 -------
Actually, with -funroll-loops -fweb -frename-registers you get the code you 
want.

-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (11 preceding siblings ...)
  2005-06-24 16:56 ` rakdver at gcc dot gnu dot org
@ 2005-06-26 12:13 ` steven at gcc dot gnu dot org
  2005-07-13  9:41 ` cvs-commit at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 21+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-06-26 12:13 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2005-06-26 12:12 -------
But there are bugs about -frename-registers being slow and broken, see 
PR15023.  It looks to me like the issues from that bug report may be 
fixed already, but someone should verify this. 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |15023


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (12 preceding siblings ...)
  2005-06-26 12:13 ` steven at gcc dot gnu dot org
@ 2005-07-13  9:41 ` cvs-commit at gcc dot gnu dot org
  2005-07-13 11:38 ` pinskia at gcc dot gnu dot org
  2005-07-14 15:33 ` canqun at nudt dot edu dot cn
  15 siblings, 0 replies; 21+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-07-13  9:41 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-07-13 09:38 -------
Subject: Bug 20376

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rakdver@gcc.gnu.org	2005-07-13 09:38:49

Modified files:
	gcc            : ChangeLog toplev.c 
	gcc/doc        : invoke.texi 

Log message:
	PR rtl-optimization/20376
	* toplev.c (process_options): Enable -fweb and -frename-registers when
	unrolling.
	* doc/invoke.texi: Update the information about when -fweb and
	-frename-registers are enabled.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9426&r2=2.9427
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/toplev.c.diff?cvsroot=gcc&r1=1.969&r2=1.970
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/invoke.texi.diff?cvsroot=gcc&r1=1.647&r2=1.648



-- 


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (13 preceding siblings ...)
  2005-07-13  9:41 ` cvs-commit at gcc dot gnu dot org
@ 2005-07-13 11:38 ` pinskia at gcc dot gnu dot org
  2005-07-14 15:33 ` canqun at nudt dot edu dot cn
  15 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-07-13 11:38 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-07-13 11:38 -------
Fixed.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
           Keywords|                            |missed-optimization
         Resolution|                            |FIXED
   Target Milestone|---                         |4.1.0


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


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

* [Bug rtl-optimization/20376] The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation.
  2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
                   ` (14 preceding siblings ...)
  2005-07-13 11:38 ` pinskia at gcc dot gnu dot org
@ 2005-07-14 15:33 ` canqun at nudt dot edu dot cn
  15 siblings, 0 replies; 21+ messages in thread
From: canqun at nudt dot edu dot cn @ 2005-07-14 15:33 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From canqun at nudt dot edu dot cn  2005-07-14 15:25 -------
(In reply to comment #13)
> Fixed.

Performance test on IA-64 recently show that loop unrolling with '-fweb' and '-
frename-registers" turned on can take nearly the same effectiveness as with 
the giv splitting.

Very thanks to Steven Bosscher, Zdenek Dvorak, Andrew Pinski, and all other 
GCC developers.

Canqun Yang

-- 


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


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

end of thread, other threads:[~2005-07-14 15:25 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-08  2:49 [Bug rtl-optimization/20376] New: The missed-optimization of general induction variables in the new rtl-level loop optimizer cause performance degradation canqun at nudt dot edu dot cn
2005-03-08  3:13 ` [Bug rtl-optimization/20376] " pinskia at gcc dot gnu dot org
2005-03-08  3:16   ` Diego Novillo
2005-03-08  3:18     ` Andrew Pinski
2005-03-08  3:20       ` Diego Novillo
2005-03-08  3:16 ` dnovillo at redhat dot com
2005-03-08  3:18 ` pinskia at physics dot uc dot edu
2005-03-08  3:30   ` Daniel Berlin
2005-03-08  3:21 ` dnovillo at redhat dot com
2005-03-08  3:30 ` dberlin at dberlin dot org
2005-03-09 17:53 ` sje at cup dot hp dot com
2005-03-27 10:19 ` steven at gcc dot gnu dot org
2005-03-30 11:38 ` steven at gcc dot gnu dot org
2005-03-30 14:43 ` canqun at nudt dot edu dot cn
2005-03-30 19:54 ` steven at gcc dot gnu dot org
2005-06-24 16:39 ` rakdver at gcc dot gnu dot org
2005-06-24 16:56 ` rakdver at gcc dot gnu dot org
2005-06-26 12:13 ` steven at gcc dot gnu dot org
2005-07-13  9:41 ` cvs-commit at gcc dot gnu dot org
2005-07-13 11:38 ` pinskia at gcc dot gnu dot org
2005-07-14 15:33 ` canqun at nudt dot edu dot cn

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).