This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: optimization/10171: [3.2/3.3/3.4 regression] wrong code for inlined function


Synopsis: [3.2/3.3/3.4 regression] wrong code for inlined function

State-Changed-From-To: open->analyzed
State-Changed-By: jason
State-Changed-When: Fri Mar 21 06:17:28 2003
State-Changed-Why:
    This is a bug in loop unrolling; 2.95 shows the bug with
    -funroll-loops.  The only difference is that now we do some
    unrolling at -O2.
    
    The loop optimizer properly calculates that there will
    always be a single pass through the loop.  The unroller
    has a special case for this.  It looks for and deletes an
    unconditional jump to the continue point, then deletes a
    conditional jump from the end of the loop.  Unfortunately,
    this code fails to handle nontrivial for loops, as the
    unconditional jump at the beginning of the loop (created
    previously by loop inversion) is to the test, not to the
    continue point.  So that jump is not deleted, but the
    conditional jump at the end is, and so we just skip over
    the loop.  Oops.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10171


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]