https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106075
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- I think the IL is somewhat buggy in the control transfer instruction not being indicated as reading from global memory. I think it should act similar to a GIMPLE_RETURN where we now force a VUSE. There's a related bug about GIMPLE_RESX not having virtual operands and the issue DSE has with this. Now, that would mean that for the original testcase a fix would be simply to consider all throwing points uses (for global memory). I have a patch to do that, leaving the IL issue (the throwing division case and RESX) unfixed. Note that RTL DSE happily removes the first store as well, so I had to fix that as well.