https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102681
--- Comment #18 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #9) > So in uninit1 we have: > if (_6691 != 0) > goto <bb 287>; [5.50%] > else > goto <bb 87>; [94.50%] > > <bb 287> [local count: 17344687]: > goto <bb 88>; [100.00%] > > <bb 87> [local count: 298013267]: > > <bb 88> [local count: 315357954]: > # const_upper_3854 = PHI <_6687(87), 18446744073709551615(287)> > # _870 = PHI <1(87), 0(287)> [snip] > But _870 is _6691 == 0 but that relationship is totally missed and there is > full on jump threading miss in the above IR. This matches what I mentioned in the mailing list. If we could notice this relationship, we could thread over the uninitialized use.