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