aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-11-15 22:46:25 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-11-15 14:46:25 -0800
commite09a5d6295e9aac34a8effb2afd5912fb99b3072 (patch)
tree0a213aa7f143348bc5b76d1b01caf01f19751a75 /gcc
parent4c2b2906b0c14c2af7abe20f00ec2b4fcf643a4c (diff)
downloadgcc-e09a5d6295e9aac34a8effb2afd5912fb99b3072.zip
gcc-e09a5d6295e9aac34a8effb2afd5912fb99b3072.tar.gz
gcc-e09a5d6295e9aac34a8effb2afd5912fb99b3072.tar.bz2
cp-gimplify.c: Include pointer-set.h
2004-11-15 Andrew Pinski <pinskia@physics.uc.edu> * cp-gimplify.c: Include pointer-set.h (cp_genericize_r): Use pointer_sets instead of a hashtable. Also instert the new statement for CLEANUP_STMT. (cp_genericize): Use pointer_sets instead of a hashtable. * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h. From-SVN: r90699
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog8
-rw-r--r--gcc/cp/Make-lang.in2
-rw-r--r--gcc/cp/cp-gimplify.c31
3 files changed, 25 insertions, 16 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 23d6b6a..f625223 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,11 @@
+2004-11-15 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * cp-gimplify.c: Include pointer-set.h
+ (cp_genericize_r): Use pointer_sets instead of a hashtable.
+ Also instert the new statement for CLEANUP_STMT.
+ (cp_genericize): Use pointer_sets instead of a hashtable.
+ * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h.
+
2004-11-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
Friend class name lookup 1/n, PR c++/18471
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 891d271..641a34e 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -277,7 +277,7 @@ cp/mangle.o: cp/mangle.c $(CXX_TREE_H) $(TM_H) toplev.h real.h gt-cp-mangle.h \
cp/parser.o: cp/parser.c $(CXX_TREE_H) $(TM_H) diagnostic.h gt-cp-parser.h \
output.h
cp/cp-gimplify.o: cp/cp-gimplify.c $(CXX_TREE_H) toplev.h c-common.h \
- $(TM_H) coretypes.h
+ $(TM_H) coretypes.h pointer-set.h
cp/name-lookup.o: cp/name-lookup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(CXX_TREE_H) timevar.h gt-cp-name-lookup.h toplev.h \
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index d6a2f18..1d10b58 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -30,6 +30,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "toplev.h"
#include "tree-gimple.h"
#include "hashtab.h"
+#include "pointer-set.h"
/* Genericize a TRY_BLOCK. */
@@ -274,8 +275,7 @@ static tree
cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
{
tree stmt = *stmt_p;
- htab_t htab = (htab_t) data;
- void **slot;
+ struct pointer_set_t *p_set = (struct pointer_set_t*) data;
if (is_invisiref_parm (stmt))
{
@@ -285,8 +285,7 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
}
/* Other than invisiref parms, don't walk the same tree twice. */
- slot = htab_find_slot (htab, stmt, INSERT);
- if (*slot)
+ if (pointer_set_insert (p_set, stmt))
{
*walk_subtrees = 0;
return NULL_TREE;
@@ -310,13 +309,15 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
to lower this construct before scanning it, so we need to lower these
before doing anything else. */
else if (TREE_CODE (stmt) == CLEANUP_STMT)
- *stmt_p = build2 (CLEANUP_EH_ONLY (stmt) ? TRY_CATCH_EXPR
- : TRY_FINALLY_EXPR,
- void_type_node,
- CLEANUP_BODY (stmt),
- CLEANUP_EXPR (stmt));
-
- *slot = *stmt_p;
+ {
+ *stmt_p = build2 (CLEANUP_EH_ONLY (stmt) ? TRY_CATCH_EXPR
+ : TRY_FINALLY_EXPR,
+ void_type_node,
+ CLEANUP_BODY (stmt),
+ CLEANUP_EXPR (stmt));
+ pointer_set_insert (p_set, *stmt_p);
+ }
+
return NULL;
}
@@ -324,7 +325,7 @@ void
cp_genericize (tree fndecl)
{
tree t;
- htab_t htab;
+ struct pointer_set_t *p_set;
/* Fix up the types of parms passed by invisible reference. */
for (t = DECL_ARGUMENTS (fndecl); t; t = TREE_CHAIN (t))
@@ -356,9 +357,9 @@ cp_genericize (tree fndecl)
/* We do want to see every occurrence of the parms, so we can't just use
walk_tree's hash functionality. */
- htab = htab_create (37, htab_hash_pointer, htab_eq_pointer, NULL);
- walk_tree (&DECL_SAVED_TREE (fndecl), cp_genericize_r, htab, NULL);
- htab_delete (htab);
+ p_set = pointer_set_create ();
+ walk_tree (&DECL_SAVED_TREE (fndecl), cp_genericize_r, p_set, NULL);
+ pointer_set_destroy (p_set);
/* Do everything else. */
c_genericize (fndecl);