http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xinliangli at gmail dot com --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- tree-ssa-uninit.c somehow fails to properly handle abnormal edges. Index: tree-ssa-uninit.c =================================================================== --- tree-ssa-uninit.c (revision 199249) +++ tree-ssa-uninit.c (working copy) @@ -1919,7 +1919,8 @@ find_uninit_use (gimple phi, unsigned un } worklist->safe_push (use_stmt); - pointer_set_insert (possibly_undefined_names, phi_result); + if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (phi_result)) + pointer_set_insert (possibly_undefined_names, phi_result); } } fixes the issue but that doesn't look the very best place to fix it and it doesn't look fully correct. It should be enough to not consider values flowing across abnormal edges - but that's already done (but somehow not in a complete manner). I'm trying to reduce the testcase to get a better idea what is going wrong here.