This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [RFC][PATCH] Preferred rename register in regrename pass
- From: Robert Suchanek <Robert dot Suchanek at imgtec dot com>
- To: Bernd Schmidt <bschmidt at redhat dot com>, James Greenhalgh <james dot greenhalgh at arm dot com>, Christophe Lyon <christophe dot lyon at linaro dot org>
- Cc: "ebotcazou at adacore dot com" <ebotcazou at adacore dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 11 Nov 2015 08:50:39 +0000
- Subject: RE: [RFC][PATCH] Preferred rename register in regrename pass
- Authentication-results: sourceware.org; auth=none
- References: <B5E67142681B53468FAF6B7C31356562441B7622 at hhmail02 dot hh dot imgtec dot org> <55FC2B8D dot 6000106 at redhat dot com> <B5E67142681B53468FAF6B7C31356562441BCDA8 at hhmail02 dot hh dot imgtec dot org> <56179FC6 dot 3040503 at redhat dot com> <B5E67142681B53468FAF6B7C31356562442BE781 at hhmail02 dot hh dot imgtec dot org> <5640CA1E dot 3070205 at redhat dot com> <B5E67142681B53468FAF6B7C31356562442C19BE at hhmail02 dot hh dot imgtec dot org> <CAKdteObiHcfF3ZUzYdAdRMvqGywbQ8kTg5ZGZ06vKSTFNk5pRg at mail dot gmail dot com> <B5E67142681B53468FAF6B7C31356562442C3E5D at hhmail02 dot hh dot imgtec dot org> <CAKdteOaNpXDFuEPqUi9qr2zp=8tMM6_P57sJ_JuxsyK39GUAiQ at mail dot gmail dot com> <20151110174252 dot GA33923 at arm dot com> <B5E67142681B53468FAF6B7C31356562442C40DB at hhmail02 dot hh dot imgtec dot org> <56427655 dot 7040408 at redhat dot com>
Hi,
> I guess this is ok to stop the failures for now, but you may want to
> move the check to the point where we set terminated_this_insn. Also, as
> I pointed out earlier, clearing terminated_this_insn should probably
> happen earlier.
Here is the updated patch that I'm about to commit once the bootstrap
finishes.
Regards,
Robert
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.
---
gcc/regrename.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/gcc/regrename.c b/gcc/regrename.c
index d727dd9..d41410a 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
--
2.4.