From 7f518aaf920532a1fc1ef82ef4eb233698c1f88f Mon Sep 17 00:00:00 2001 From: hubicka Date: Sun, 25 Jan 2004 11:11:47 +0000 Subject: [PATCH] * combine.c (recog_for_combine): Avoid allocating unnecesary RTX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76553 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/combine.c | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d6138b2df28..b5c11b33451 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-01-25 Jan Hubicka + + * combine.c (recog_for_combine): Avoid allocating unnecesary RTX. + 2004-01-25 Richard Sandiford * config/mips/mips-protos.h (mips_reg_mode_ok_for_base_p): Delete. diff --git a/gcc/combine.c b/gcc/combine.c index f84c277b239..9137076ad30 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -9869,7 +9869,7 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes) int num_clobbers_to_add = 0; int i; rtx notes = 0; - rtx dummy_insn; + rtx old_notes, old_pat; /* If PAT is a PARALLEL, check to see if it contains the CLOBBER we use to indicate that something didn't match. If we find such a @@ -9880,13 +9880,12 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes) && XEXP (XVECEXP (pat, 0, i), 0) == const0_rtx) return -1; - /* *pnewpat does not have to be actual PATTERN (insn), so make a dummy - instruction for pattern recognition. */ - dummy_insn = shallow_copy_rtx (insn); - PATTERN (dummy_insn) = pat; - REG_NOTES (dummy_insn) = 0; + old_pat = PATTERN (insn); + old_notes = REG_NOTES (insn); + PATTERN (insn) = pat; + REG_NOTES (insn) = 0; - insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add); + insn_code_number = recog (pat, insn, &num_clobbers_to_add); /* If it isn't, there is the possibility that we previously had an insn that clobbered some register as a side effect, but the combined @@ -9911,9 +9910,11 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes) if (pos == 1) pat = XVECEXP (pat, 0, 0); - PATTERN (dummy_insn) = pat; - insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add); + PATTERN (insn) = pat; + insn_code_number = recog (pat, insn, &num_clobbers_to_add); } + PATTERN (insn) = old_pat; + REG_NOTES (insn) = old_notes; /* Recognize all noop sets, these will be killed by followup pass. */ if (insn_code_number < 0 && GET_CODE (pat) == SET && set_noop_p (pat)) -- 2.11.0