http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46403
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |WORKSFORME
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-10
12:16:36 UTC ---
I don't see this PRE, instead I see
Found partial redundancy for expression {array_ref<x_1(D),0,4>,[email protected]_7
(0005)
Inserted pretmp.3_12 = a[x_1(D)];
in predecessor 5
Created phi prephitmp.4_15 = PHI <pretmp.3_12(5), z_3(D)(3)>
in block 4
Replaced a[x_1(D)] with prephitmp.4_15 in D.2691_5 = a[x_1(D)];
<bb 2>:
if (x_1(D) != 0)
goto <bb 3>;
else
goto <bb 5>;
<bb 5>:
pretmp.3_12 = a[x_1(D)];
goto <bb 4>;
<bb 3>:
*y_2(D) = z_3(D);
a[x_1(D)] = z_3(D);
<bb 4>:
# prephitmp.4_15 = PHI <pretmp.3_12(5), z_3(D)(3)>
m_4 = *y_2(D);
D.2691_5 = prephitmp.4_15;
D.2690_6 = D.2691_5 + m_4;
return D.2690_6;
which indeed removes a redundancy. En/disabling RTL PRE doesn't change
the generated code so you can't mean that either.