diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-08 01:18:16 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-08 01:18:16 +0000 |
commit | d328c4ab4881495fcd2f85a8b3b946573b0d8d51 (patch) | |
tree | f792289fadf43fd192c8ce4c6629ffdae96b0e3b /gcc/tree-ssa.c | |
parent | a8a6544d4748a449c17156615e7ab8e34b523921 (diff) | |
download | gcc-d328c4ab4881495fcd2f85a8b3b946573b0d8d51.tar.gz |
2006-06-07 Andrew MacLeod <amacleod@redhat.com>
PR middle-end/27793
* tree-dfa.c (referenced_vars_dup_list): New. List of duplicate
referenced_variables with matching DECL_UID's.
(find_referenced_vars): Make sure duplicate list is empty to start.
(referenced_var_p): Remove.
(referenced_var_check_and_insert): Renamed from referenced_var_insert.
Check if var is in the list, and add if needed. Update the duplicate
list if a different var is in the list with the same DECL_UID.
(add_referenced_var): Call routine to check and insert.
* tree-ssa.c (delete_tree_ssa): Clear var_ann's on duplicates.
* tree-flow.h (referenced_vars_dup_list): External declaration.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 14466124318..9eb1b215d17 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -853,6 +853,7 @@ 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++) @@ -887,6 +888,16 @@ 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; |