Ensure earlyclobbered operands go through a terminate_write stage.
authorBernd Schmidt <bernds@redhat.com>
Tue, 17 Nov 2015 21:24:38 +0000 (21:24 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Tue, 17 Nov 2015 21:24:38 +0000 (21:24 +0000)
* regrename.c (record_out_operands): Terminate earlyclobbered
operands here.

From-SVN: r230500

gcc/ChangeLog
gcc/regrename.c

index cdd7036a7fb328d1a9f4196a0386a355ba6b4966..4037505e4548dacc88ade05f1fac7f6292b0f9df 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 e126fcc74039ca0467411bdd15c2b1bd3ee9489a..4d6eb372ddd9834748ee8ded81cb60269a4db11c 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