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>,a...@.mem_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.