https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116927

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
early_ra::is_dead_insn checks side_effects_p but deletable_insn_p (dce.cc) has
an extra check:

  /* Don't delete insns that may throw if we cannot do so.  */
  if (!(cfun->can_delete_dead_exceptions && can_alter_cfg)
      && !insn_nothrow_p (insn))
    return false;

I think is_dead_insn should also have the following:

```
if (cfun->can_delete_dead_exceptions && !insn_nothrow_p (insn))
  return false;
```

That is if -fno-delete-dead-exceptions is there and the insn can throw, the
insn is not dead.

Reply via email to