https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118623
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|tree-optimization |rtl-optimization
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
What PRE does is OK. In fact this looks like it goes wrong somewhere on RTL
(or
during expansion).
@@ -19,17 +356,18 @@
e_7 = 1 << _1;
_9 = g_5(D) & e_7;
if (_9 != 0)
- goto <bb 3>; [48.89%]
+ goto <bb 4>; [48.89%]
else
- goto <bb 4>; [51.11%]
+ goto <bb 3>; [51.11%]
- <bb 3> [local count: 524952376]:
+ <bb 3> [local count: 548789448]:
+ _14 = g_5(D) + 5;
<bb 4> [local count: 1073741824]:
# RANGE [irange] int [0, 0][5, 5] MASK 0x5 VALUE 0x0
- # _10 = PHI <5(2), 0(3)>
- _2 = g_5(D) + _10;
- _3 = _2 + g_5(D);
+ # _10 = PHI <5(3), 0(2)>
+ # prephitmp_15 = PHI <_14(3), g_5(D)(2)>
+ _3 = g_5(D) + prephitmp_15;
# RANGE [irange] int [0, 1] MASK 0x1 VALUE 0x0
_4 = _3 & 1;
if (_4 == 0)