diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-12-21 21:20:02 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-12-21 13:20:02 -0800 |
commit | af76441ffa6ffdfb4a4d3b10482e0d8d7e99181e (patch) | |
tree | 26a2279877aa52f21fba4ae120751143f5815a44 /gcc/cp | |
parent | 697290b71d18569ef60fe446a689e74270457ab4 (diff) | |
download | gcc-af76441ffa6ffdfb4a4d3b10482e0d8d7e99181e.zip gcc-af76441ffa6ffdfb4a4d3b10482e0d8d7e99181e.tar.gz gcc-af76441ffa6ffdfb4a4d3b10482e0d8d7e99181e.tar.bz2 |
re PR c++/18984 (ICE in check_pointer_types_r)
2004-12-21 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/18984
* pointer-set.c (pointer_set_contains): Add back.
* pointer-set.h (pointer_set_contains): Add back.
2004-12-21 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/18984
* cp-gimplify.c (cp_genericize_r): Don't insert first but instead
check to see if contains the pointer. Insert the statement before
returning.
2004-12-21 Andrew Pinski <pinskia@physics.uc.edu>
PR C++/18984
* g++.dg/eh/ctor3.C: New test.
From-SVN: r92470
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/cp-gimplify.c | 17 |
2 files changed, 15 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b0c25a7..b216480 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2004-12-21 Andrew Pinski <pinskia@physics.uc.edu> + + PR c++/18984 + * cp-gimplify.c (cp_genericize_r): Don't insert first but instead + check to see if contains the pointer. Insert the statement before + returning. + 2004-12-21 Nathan Sidwell <nathan@codesourcery.com> PR c++/14075 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 4f38739..d953156 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -291,7 +291,7 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) } /* Other than invisiref parms, don't walk the same tree twice. */ - if (pointer_set_insert (p_set, stmt)) + if (pointer_set_contains (p_set, stmt)) { *walk_subtrees = 0; return NULL_TREE; @@ -315,14 +315,13 @@ 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)); - pointer_set_insert (p_set, *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; } |