https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85233
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic Status|UNCONFIRMED |NEW Last reconfirmed| |2018-04-06 CC| |jamborm at gcc dot gnu.org, | |marxin at gcc dot gnu.org, | |mliska at suse dot cz Component|c |ipa Blocks| |24639 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- It needs intraprocedural analysis to prove that x is always initialized if f returns nonzero. That's fragile and in the presence of partial inlining it seems to break. So what we are missing is IPA propagation of the single constant return value of f.part.0. After fnsplit: f.part.0 () { ... <bb 5> [100.00%]: # _3 = PHI <0(4)> return _3; } h () { int D.1847; ... <bb 6> [16.50%]: _11 = f.part.0 (); if (_11 == 0) goto <bb 8>; [46.00%] else we fail to optimize this conditional. I realize we don't have return jump-functions but if the single return value can be easily proved by IPA-CP we could constant propagate that during its transform phase? Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639 [Bug 24639] [meta-bug] bug to track all Wuninitialized issues