diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2000-04-15 11:16:56 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2000-04-15 11:16:56 +0000 |
commit | 624c87aac99b53fc18b57d2674685c30f9329a50 (patch) | |
tree | a43d51c88976157ec153c06d1d2fae28f9768657 | |
parent | 098fdd8e9f123dae35aa4a7bacd6fa1b1612baa6 (diff) | |
download | gcc-624c87aac99b53fc18b57d2674685c30f9329a50.zip gcc-624c87aac99b53fc18b57d2674685c30f9329a50.tar.gz gcc-624c87aac99b53fc18b57d2674685c30f9329a50.tar.bz2 |
emit-rtl.c (unshare_all_rtl_again): Unmark everything, then call unshare_all_rtl.
* emit-rtl.c (unshare_all_rtl_again): Unmark everything, then
call unshare_all_rtl.
From-SVN: r33162
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b520f8..7c9b934 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-04-15 Richard Earnshaw (rearnsah@arm.com) + + * emit-rtl.c (unshare_all_rtl_again): Unmark everything, then + call unshare_all_rtl. + Fri Apr 14 16:58:45 2000 Jim Wilson <wilson@cygnus.com> * config/ia64/lib1funcs.asm (__divdi3, __moddi3, __udivdi3, __umoddi3): diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 8fd559c..98009ec 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1724,6 +1724,8 @@ unshare_all_rtl_again (insn) rtx insn; { rtx p; + tree decl; + for (p = insn; p; p = NEXT_INSN (p)) if (GET_RTX_CLASS (GET_CODE (p)) == 'i') { @@ -1731,7 +1733,14 @@ unshare_all_rtl_again (insn) reset_used_flags (REG_NOTES (p)); reset_used_flags (LOG_LINKS (p)); } - unshare_all_rtl_1 (insn); + + /* Make sure that virtual parameters are not shared. */ + for (decl = DECL_ARGUMENTS (cfun->decl); decl; decl = TREE_CHAIN (decl)) + reset_used_flags (DECL_RTL (decl)); + + reset_used_flags (stack_slot_list); + + unshare_all_rtl (cfun->decl, insn); } /* Go through all the RTL insn bodies and copy any invalid shared structure. |