Ensure earlyclobbered operands go through a terminate_write stage.
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Nov 2015 21:24:38 +0000 (21:24 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Nov 2015 21:24:38 +0000 (21:24 +0000)
* regrename.c (record_out_operands): Terminate earlyclobbered
operands here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230500 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/regrename.c

index cdd7036..4037505 100644 (file)
@@ -1,5 +1,8 @@
 2015-11-17  Bernd Schmidt  <bschmidt@redhat.com>
 
+       * regrename.c (record_out_operands): Terminate earlyclobbered
+       operands here.
+
        PR target/66785
        * regrename.c (record_operand_use): Keep track of failed operands
        and stop appending if we see any.
index e126fcc..4d6eb37 100644 (file)
@@ -1558,6 +1558,8 @@ record_out_operands (rtx_insn *insn, bool earlyclobber, insn_rr_info *insn_info)
        cur_operand = insn_info->op_info + i;
 
       prev_open = open_chains;
+      if (earlyclobber)
+       scan_rtx (insn, loc, cl, terminate_write, OP_OUT);
       scan_rtx (insn, loc, cl, mark_write, OP_OUT);
 
       /* ??? Many targets have output constraints on the SET_DEST