aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2006-04-08 21:50:04 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2006-04-08 21:50:04 +0000
commit9ccfe0cda479d1f5feae5a1cd20896dfe0c9a04a (patch)
tree32fe72df7eca620b267dafba776d6c8ce0e1432a /gcc
parente0f931d27f9e0b7daee2d05a89ccf99c814f0429 (diff)
downloadgcc-9ccfe0cda479d1f5feae5a1cd20896dfe0c9a04a.zip
gcc-9ccfe0cda479d1f5feae5a1cd20896dfe0c9a04a.tar.gz
gcc-9ccfe0cda479d1f5feae5a1cd20896dfe0c9a04a.tar.bz2
tree.h (tree_memory_tag): Add old_used_alone.
2006-04-08 Daniel Berlin <dberlin@dberlin.org> * tree.h (tree_memory_tag): Add old_used_alone. (SMT_OLD_USED_ALONE): New macro. * tree-ssa-alias.c (recalculate_used_alone): Stop marking things for renaming unnecessarily. From-SVN: r112789
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-ssa-alias.c11
-rw-r--r--gcc/tree.h6
3 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f91736..e344f9e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2006-04-08 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree.h (tree_memory_tag): Add old_used_alone.
+ (SMT_OLD_USED_ALONE): New macro.
+ * tree-ssa-alias.c (recalculate_used_alone): Stop
+ marking things for renaming unnecessarily.
+
2006-04-08 Kazu Hirata <kazu@codesourcery.com>
* builtins.c, config/arm/arm.c, config/i386/cygwin.h,
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index f0d16d4..3ad4b0f 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -443,7 +443,10 @@ recalculate_used_alone (void)
updating_used_alone = true;
FOR_EACH_REFERENCED_VAR (var, rvi)
if (TREE_CODE (var) == SYMBOL_MEMORY_TAG)
- SMT_USED_ALONE (var) = 0;
+ {
+ SMT_OLD_USED_ALONE (var) = SMT_USED_ALONE (var);
+ SMT_USED_ALONE (var) = 0;
+ }
/* Walk all the statements.
Calls get put into a list of statements to update, since we will
@@ -476,7 +479,11 @@ recalculate_used_alone (void)
if (!SMT_USED_ALONE (svar))
{
SMT_USED_ALONE (svar) = true;
- mark_sym_for_renaming (svar);
+
+ /* Only need to mark for renaming if it wasn't
+ used alone before. */
+ if (!SMT_OLD_USED_ALONE (svar))
+ mark_sym_for_renaming (svar);
}
}
}
diff --git a/gcc/tree.h b/gcc/tree.h
index 27f4b0f..b3bc004 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2312,6 +2312,7 @@ struct tree_memory_tag GTY(())
struct tree_decl_minimal common;
unsigned int is_global:1;
unsigned int is_used_alone:1;
+ unsigned int old_used_alone:1;
};
#define MTAG_GLOBAL(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.is_global)
@@ -2321,6 +2322,11 @@ struct tree_memory_tag GTY(())
from it. */
#define SMT_USED_ALONE(NODE) (SYMBOL_MEMORY_TAG_CHECK (NODE)->mtag.is_used_alone)
+/* This flag is used to temporarily store the old value of the used alone
+ flag when updating so we know whether to mark the symbol for
+ renaming. */
+#define SMT_OLD_USED_ALONE(NODE) (SYMBOL_MEMORY_TAG_CHECK (NODE)->mtag.old_used_alone)
+
struct tree_struct_field_tag GTY(())
{
struct tree_memory_tag common;