aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2005-01-27 15:33:14 -0700
committerJeff Law <law@gcc.gnu.org>2005-01-27 15:33:14 -0700
commit88af764e45e01bcd4aedaddc769cbc579b523f77 (patch)
treec6dada1d99e1b7a3443b25b4839959ff5cc19ff5
parente4652e3759f0df3174957dd0593b7df877599cc9 (diff)
downloadgcc-88af764e45e01bcd4aedaddc769cbc579b523f77.zip
gcc-88af764e45e01bcd4aedaddc769cbc579b523f77.tar.gz
gcc-88af764e45e01bcd4aedaddc769cbc579b523f77.tar.bz2
tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register definitions of SSA_NAMEs which are not being rewritten.
* tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register definitions of SSA_NAMEs which are not being rewritten. (rewrite_ssa_into_ssa): Only initialize the current definition of an SSA_NAME if that SSA_NAME has been marked for rewriting. If checking is enabled, assert that SSA_NAME_AUX is clear for all SSA_NAMEs before returning. From-SVN: r94343
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/tree-into-ssa.c22
2 files changed, 17 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index da3d465..6689e89 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2005-01-27 Jeff Law <law@redhat.com>
+
+ * tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register
+ definitions of SSA_NAMEs which are not being rewritten.
+ (rewrite_ssa_into_ssa): Only initialize the current definition
+ of an SSA_NAME if that SSA_NAME has been marked for rewriting.
+ If checking is enabled, assert that SSA_NAME_AUX is clear for all
+ SSA_NAMEs before returning.
+
2005-01-27 Kazu Hirata <kazu@cs.umass.edu>
* c-common.def, c-dump.c, c-gimplify.c, c-objc-common.c,
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index 0e7e5e1..778157a 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -1,5 +1,5 @@
/* Rewrite a program in Normal form into SSA.
- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>
This file is part of GCC.
@@ -775,11 +775,8 @@ ssa_rewrite_initialize_block (struct dom_walk_data *walk_data, basic_block bb)
if (abnormal_phi)
SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_name) = 1;
+ ssa_register_new_def (result, new_name);
}
- else
- new_name = result;
-
- ssa_register_new_def (result, new_name);
}
}
@@ -1654,7 +1651,6 @@ rewrite_ssa_into_ssa (void)
struct mark_def_sites_global_data mark_def_sites_global_data;
unsigned i;
sbitmap snames_to_rename;
- tree name;
bitmap to_rename;
bitmap_iterator bi;
@@ -1699,6 +1695,7 @@ rewrite_ssa_into_ssa (void)
EXECUTE_IF_SET_IN_BITMAP (to_rename, 0, i, bi)
{
SET_BIT (snames_to_rename, i);
+ set_current_def (ssa_name (i), NULL_TREE);
}
mark_def_sites_global_data.kills = sbitmap_alloc (num_ssa_names);
@@ -1722,10 +1719,6 @@ rewrite_ssa_into_ssa (void)
/* We no longer need this bitmap, clear and free it. */
sbitmap_free (mark_def_sites_global_data.kills);
- for (i = 1; i < num_ssa_names; i++)
- if (ssa_name (i))
- set_current_def (ssa_name (i), NULL_TREE);
-
/* Insert PHI nodes at dominance frontiers of definition blocks. */
insert_phi_nodes (dfs, to_rename);
@@ -1785,15 +1778,16 @@ rewrite_ssa_into_ssa (void)
htab_delete (def_blocks);
+#ifdef ENABLE_CHECKING
for (i = 1; i < num_ssa_names; i++)
{
- name = ssa_name (i);
- if (!name || !SSA_NAME_AUX (name))
+ tree name = ssa_name (i);
+ if (!name)
continue;
- free (SSA_NAME_AUX (name));
- SSA_NAME_AUX (name) = NULL;
+ gcc_assert (SSA_NAME_AUX (name) == NULL);
}
+#endif
BITMAP_XFREE (to_rename);