http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695
--- Comment #16 from Steven Bosscher <steven at gcc dot gnu.org> 2012-08-23 08:53:04 UTC --- (In reply to comment #15) > Makes me wonder why the loop isn't recognized in the original test case... Ah, maybe because bb3 has an abnormal predecessor and is therefore ignored as a potential loop header? /* If we have an abnormal predecessor, do not consider the loop (not worth the problems). */ if (bb_has_abnormal_pred (header)) continue; Which brings things back to my question why this kind of loop header is rejected! :-)