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.

Reply via email to