------- Comment #2 from rguenth at gcc dot gnu dot org 2010-06-05 10:47 -------
We have (4.4):
<bb 2>:
va.f[0] = a->r;
va.f[1] = a->g;
va.f[2] = a->b;
va.f[3] = 0.0;
pretmp.40 = va.v;
ivtmp.61 = 0;
<bb 3>:
att.12 = MEM[base: pre1, index: ivtmp.61] * pre2;
tmpatt = {att.12, att.12, att.12, att.12};
tmpatt.66 = __builtin_ia32_mulps (tmpatt, pretmp.40);
D.3720 = __builtin_ia32_addps (tmpatt.66, MEM[base: lpic, index: ivtmp.61,
step: 4]);
MEM[base: lpic, index: ivtmp.61, step: 4] = D.3720;
ivtmp.61 = ivtmp.61 + 4;
if (ivtmp.61 != 80)
goto <bb 3>;
else
goto <bb 4>;
vs. (4.6):
<bb 2>:
va$f$0_3 = a_2(D)->r;
va$f$1_4 = a_2(D)->g;
va$f$2_5 = a_2(D)->b;
<bb 3>:
# ivtmp.31_52 = PHI <ivtmp.31_51(3), 0(2)>
D.4345_11 = MEM[base: pre1_9(D), index: ivtmp.31_52];
att.1_13 = D.4345_11 * pre2_12(D);
tmpatt_37 = {att.1_13, att.1_13, att.1_13, att.1_13};
va.f[0] = va$f$0_3;
va.f[1] = va$f$1_4;
va.f[2] = va$f$2_5;
va.f[3] = 0.0;
D.4347_16 = va.v;
tmpatt_38 = __builtin_ia32_mulps (tmpatt_37, D.4347_16);
D.4350_25 = MEM[base: lpic_20(D), index: ivtmp.31_52, step: 4];
D.4382_39 = __builtin_ia32_addps (tmpatt_38, D.4350_25);
MEM[base: lpic_20(D), index: ivtmp.31_52, step: 4] = D.4382_39;
ivtmp.31_51 = ivtmp.31_52 + 4;
if (ivtmp.31_51 != 80)
goto <bb 3>;
else
goto <bb 4>;
which means that somehow we were not able to hoist loop invariant stuff.
investigating.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2010-06-05 10:47:29
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44423