http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58021
Bug ID: 58021 Summary: MODE_EXIT switches at NOTE_INSN_DELETED Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: amylaar at gcc dot gnu.org The last function of gcc.dg/fold-mulconj-1.c: _Complex int bar(_Complex int z) { return z * ~z; } gets miscompiled for epiphany-elf. In compute_pre_exit, we break the do .. while (nregs).. loop with last_insn pointing to a NOTE_INSN_DELETED, above which there are two multiplies - needing a mode different than the exit. However, because the NOTE_INSN_DELETED fails the INSN_P test, the code that does the first split_block call is not executed, and pre_exit ends up containing the multiplies.