https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-10 Ever confirmed|0 |1 --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > _4 = _3 > "hello"; > _5 = __builtin_constant_p (_4); > if (_5 != 0) > goto <bb 4>; [34.00%] > else > goto <bb 3>; [66.00%] > > <bb 3> [local count: 708669605]: > __x.5_6 = (long unsigned int) "hello"; > __y.6_7 = (long unsigned int) _3; > _8 = __x.5_6 < __y.6_7; > > <bb 4> [local count: 1073741824]: > # _9 = PHI <_4(2), _8(3)> > if (_9 != 0) > goto <bb 8>; [50.00%] > else > goto <bb 5>; [50.00%] which is a somewhat awkward pattern. I think that VN should really be able to value-number _4 and _8 the same eliding this crap. Let me see to do that. OK, that helps _a lot_.