https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91052
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at gmail dot com --- Comment #14 from Alan Modra <amodra at gmail dot com> --- I agree with your analysis, and that combine_and_move_insns has a bug. (That doesn't mean I should be viewed as any sort of expert on ira.c. The fact that my name appears on git blame for much of combine_and_move_insns is just due to me splitting out existing code into that function!) "!multiple_sets (def_insn)" seems the correct solution too, but I'd be inclined to move that test earlier, either before or after can_throw_internal on the grounds that asm insns might have the same problem with multiple sets. Perhaps comment that instructions with multiple sets can only be moved if DF analysis is performed for all of the registers set.