https://gcc.gnu.org/bugzilla/show_bug.cgi?id=73650
--- Comment #9 from Segher Boessenkool <segher at gcc dot gnu.org> --- Author: segher Date: Mon Aug 15 16:17:21 2016 New Revision: 239483 URL: https://gcc.gnu.org/viewcvs?rev=239483&root=gcc&view=rev Log: lra: A multiple_sets is not a simple_move_p (PR73650) In the PR we have a PARALLEL of a move and a compare (a "mr." instruction). The compare is dead, so single_set on it returns just the move. Then, simple_move_p returns true; but the instruction does need reloads in this case. This patch solves this by making simple_move_p return false for every multiple_sets instruction. PR rtl-optimization/73650 * lra-constraints.c (simple_move_p): If the insn is multiple_sets it is not a simple move. Modified: trunk/gcc/ChangeLog trunk/gcc/lra-constraints.c