aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2000-04-15 11:16:56 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2000-04-15 11:16:56 +0000
commit624c87aac99b53fc18b57d2674685c30f9329a50 (patch)
treea43d51c88976157ec153c06d1d2fae28f9768657 /gcc
parent098fdd8e9f123dae35aa4a7bacd6fa1b1612baa6 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/emit-rtl.c11
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.