From: Robert Suchanek Date: Wed, 11 Nov 2015 10:36:00 +0000 (+0000) Subject: Tighten up checks when tying chains. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=394b24ea80626c5464f842f574a57547fb024ad6;p=gcc.git Tighten up checks when tying chains. gcc/ * regname.c (scan_rtx_reg): Check the matching number of consecutive registers when tying chains. (build_def_use): Move terminated_this_insn earlier in the function. From-SVN: r230149 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3a0432119a..21ea2f07d08 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-11-11 Robert Suchanek + + * regname.c (scan_rtx_reg): Check the matching number of consecutive + registers when tying chains. + (build_def_use): Move terminated_this_insn earlier in the function. + 2015-11-10 Mike Frysinger * configure.ac: Use = with test and not ==. diff --git a/gcc/regrename.c b/gcc/regrename.c index d727dd9095b..d41410a9348 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -1068,7 +1068,9 @@ scan_rtx_reg (rtx_insn *insn, rtx *loc, enum reg_class cl, enum scan_actions act && GET_CODE (pat) == SET && GET_CODE (SET_DEST (pat)) == REG && GET_CODE (SET_SRC (pat)) == REG - && terminated_this_insn) + && terminated_this_insn + && terminated_this_insn->nregs + == REG_NREGS (recog_data.operand[1])) { gcc_assert (terminated_this_insn->regno == REGNO (recog_data.operand[1])); @@ -1593,6 +1595,7 @@ build_def_use (basic_block bb) enum rtx_code set_code = SET; enum rtx_code clobber_code = CLOBBER; insn_rr_info *insn_info = NULL; + terminated_this_insn = NULL; /* Process the insn, determining its effect on the def-use chains and live hard registers. We perform the following @@ -1749,8 +1752,6 @@ build_def_use (basic_block bb) scan_rtx (insn, &XEXP (note, 0), ALL_REGS, mark_read, OP_INOUT); - terminated_this_insn = NULL; - /* Step 4: Close chains for registers that die here, unless the register is mentioned in a REG_UNUSED note. In that case we keep the chain open until step #7 below to ensure