------- Comment #6 from ebotcazou at gcc dot gnu dot org  2006-09-09 22:09 
-------
> it looks like ifcvt messes up in pass 3 and puts the post-inc in the
> cond-exec block.

It's actually the combiner that wrongly ditches the post-inc, at least with
the last set of options you posted.  Amazingly enough, on the 4.1 branch, the
combiner is the first pass which deduces that

  *((deeper)->buffer_position)++ < 0

is always false.  In particular, we have this little gem in t97.final_cleanup

  unsigned char * D.1386;
  _Bool iftmp.0;

  iftmp.0 = (int) *D.1386 < 0;

even at -O2!  This is optimized on mainline, which hides the problem there.

Fixing...


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |ebotcazou at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2006-08-08 09:09:48         |2006-09-09 22:09:59
               date|                            |


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

Reply via email to