------- Comment #2 from rguenth at gcc dot gnu dot org  2008-04-25 09:24 -------
We seem to use some interesting pointer induction variable for the exit test...
-fno-ivopts fixes it I suppose.  The loop in question ends up being expanded
from

<bb 3>:
  # VUSE <SMT.26_37>
  D.1307_34 = MEM[base: stack_base.2_4, offset: 40];
  # SMT.26_42 = VDEF <SMT.26_37>
  MEM[base: sp_31] = D.1307_34;
  ivtmp.36_16 = ivtmp.36_25 + -8;

<bb 4>:
  # ivtmp.36_25 = PHI <0B(2), ivtmp.36_16(3)>
  # SMT.26_37 = PHI <SMT.26_41(D)(2), SMT.26_42(3)>
  D.1372_15 = D.1349_10 + 6; 
  D.1373_17 = (long unsigned int) D.1372_15;
  D.1374_18 = D.1373_17 * 0x0fffffffffffffff8;
  D.1375_19 = (long long int *) D.1374_18;
  if (ivtmp.36_25 != D.1375_19)
    goto <bb 3>;
  else
    goto <bb 5>;

and this testcase btw also fails on x86_64.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
 GCC target triplet|powerpc64-unknown-linux-gnu |
   Last reconfirmed|0000-00-00 00:00:00         |2008-04-25 09:24:16
               date|                            |


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

Reply via email to