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