From dbaff908a0318f174bf6f3400138ac4927aef2fd Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Tue, 21 Jan 2003 01:52:46 +0000 Subject: [PATCH] cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL insn's notes following a... * cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL insn's notes following a substitution inside a libcall. From-SVN: r61524 --- gcc/ChangeLog | 5 +++++ gcc/cse.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f4a2d63c81..c0ed2d3d31b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-01-20 Roger Sayle + + * cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL + insn's notes following a substitution inside a libcall. + 2003-01-20 Zack Weinberg * configure.in: Check for system-provided 'uchar' type. diff --git a/gcc/cse.c b/gcc/cse.c index c9ba3c0e593..1a4ca2e7765 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -5557,6 +5557,8 @@ cse_insn (insn, libcall_insn) /* Look for a substitution that makes a valid insn. */ else if (validate_change (insn, &SET_SRC (sets[i].rtl), trial, 0)) { + rtx new = canon_reg (SET_SRC (sets[i].rtl), insn); + /* If we just made a substitution inside a libcall, then we need to make the same substitution in any notes attached to the RETVAL insn. */ @@ -5565,14 +5567,12 @@ cse_insn (insn, libcall_insn) || GET_CODE (sets[i].orig_src) == SUBREG || GET_CODE (sets[i].orig_src) == MEM)) replace_rtx (REG_NOTES (libcall_insn), sets[i].orig_src, - canon_reg (SET_SRC (sets[i].rtl), insn)); + copy_rtx (new)); /* The result of apply_change_group can be ignored; see canon_reg. */ - validate_change (insn, &SET_SRC (sets[i].rtl), - canon_reg (SET_SRC (sets[i].rtl), insn), - 1); + validate_change (insn, &SET_SRC (sets[i].rtl), new, 1); apply_change_group (); break; } -- 2.30.2