http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49847
--- Comment #32 from Jeffrey A. Law <law at redhat dot com> --- The problem we're seeing is with the cc0-setter and cc0-user in different blocks, they're separated by a NOTE_BASIC_BLOCK. That causes CSE to blow up because it expects that the cc0-setter and cc0-user are always consecutive. While we're just seeing the failure in CSE right now, I'm sure there's a ton of places that assume the setter/user are inseparable as that has been the documented form for ~20 years. >From rtl.texi: The instruction setting the condition code must be adjacent to the instruction using the condition code; only @code{note} insns may separate them. We either need to relax that and audit all the HAVE_cc0 code to ensure it doesn't make that assumption, or we need to somehow restore the property that the setter and user are inseparable.