aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2006-06-15 13:30:17 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>2006-06-15 13:30:17 +0000
commit82460c7576f384ea95bf6cdf333d11b93c55690f (patch)
tree4343e6b952861e4881431830cb7fcf4aeddf46db
parentda4340a1ac90357925a7606b39e94fef133ecd13 (diff)
downloadgcc-82460c7576f384ea95bf6cdf333d11b93c55690f.zip
gcc-82460c7576f384ea95bf6cdf333d11b93c55690f.tar.gz
gcc-82460c7576f384ea95bf6cdf333d11b93c55690f.tar.bz2
re PR middle-end/27793 (num_ssa_names inconsistent or immediate use iterator wrong)
2006-06-15 Andrew MacLeod <amacleod@redhat.com> PR middle-end/27793 * tree-dfa.c (referenced_vars_dup_list): Remove. (find_referenced_vars): Remove assert. (referenced_var_check_and_insert): Replace dup list with assert. * tree-ssa.c (delete_tree_ssa): Remove dup list processing. * tree-flow.h (referenced_vars_dup_list): Remove extern decl. From-SVN: r114678
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/tree-dfa.c25
-rw-r--r--gcc/tree-flow.h2
-rw-r--r--gcc/tree-ssa.c11
4 files changed, 11 insertions, 36 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ba5ffb935..9abc3e8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2006-06-15 Andrew MacLeod <amacleod@redhat.com>
+
+ PR middle-end/27793
+ * tree-dfa.c (referenced_vars_dup_list): Remove.
+ (find_referenced_vars): Remove assert.
+ (referenced_var_check_and_insert): Replace dup list with assert.
+ * tree-ssa.c (delete_tree_ssa): Remove dup list processing.
+ * tree-flow.h (referenced_vars_dup_list): Remove extern decl.
+
2006-06-15 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (alias_get_name): Avoid creating
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index b5a0178..f0049ed 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -75,8 +75,6 @@ static tree find_vars_r (tree *, int *, void *);
/* Array of all variables referenced in the function. */
htab_t referenced_vars;
-/* List of referenced variables with duplicate UID's. */
-VEC(tree,gc) *referenced_vars_dup_list;
/* Default definition for this symbols. If set for symbol, it
means that the first reference to this variable in the function is a
@@ -102,7 +100,6 @@ find_referenced_vars (void)
basic_block bb;
block_stmt_iterator si;
- gcc_assert (VEC_length (tree, referenced_vars_dup_list) == 0);
FOR_EACH_BB (bb)
for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si))
{
@@ -640,27 +637,9 @@ referenced_var_check_and_insert (tree to)
if (h)
{
- unsigned u;
- tree t = NULL_TREE;
-
/* DECL_UID has already been entered in the table. Verify that it is
- the same entry as TO. */
- gcc_assert (h->to != NULL);
- if (h->to == to)
- return false;
-
- /* PRs 26757 and 27793. Maintain a list of duplicate variable pointers
- with the same DECL_UID. There isn't usually very many.
- TODO. Once the C++ front end doesn't create duplicate DECL UID's, this
- code can be removed. */
- for (u = 0; u < VEC_length (tree, referenced_vars_dup_list); u++)
- {
- t = VEC_index (tree, referenced_vars_dup_list, u);
- if (t == to)
- break;
- }
- if (t != to)
- VEC_safe_push (tree, gc, referenced_vars_dup_list, to);
+ the same entry as TO. See PR 27793. */
+ gcc_assert (h->to == to);
return false;
}
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index 4e69368..eee6fa4 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -419,8 +419,6 @@ typedef struct
/* Array of all variables referenced in the function. */
extern GTY((param_is (struct int_tree_map))) htab_t referenced_vars;
-/* List of referenced variables in the function with duplicate UID's. */
-extern VEC(tree,gc) *referenced_vars_dup_list;
/* Default defs for undefined symbols. */
extern GTY((param_is (struct int_tree_map))) htab_t default_defs;
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 9eb1b21..1446612 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -853,7 +853,6 @@ delete_tree_ssa (void)
block_stmt_iterator bsi;
referenced_var_iterator rvi;
tree var;
- unsigned u;
/* Release any ssa_names still in use. */
for (i = 0; i < num_ssa_names; i++)
@@ -888,16 +887,6 @@ delete_tree_ssa (void)
ggc_free (var->common.ann);
var->common.ann = NULL;
}
-
- /* Remove any referenced variables which had duplicate UID's. */
- for (u = 0; u < VEC_length (tree, referenced_vars_dup_list); u++)
- {
- var = VEC_index (tree, referenced_vars_dup_list, u);
- ggc_free (var->common.ann);
- var->common.ann = NULL;
- }
- VEC_free (tree, gc, referenced_vars_dup_list);
-
htab_delete (referenced_vars);
referenced_vars = NULL;