summaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-22 04:53:33 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-22 04:53:33 +0000
commit0bc060a49d7ac66f72e93cc080abcc9e2175f55c (patch)
tree1cf758304e987f9c212d745d72e58a7eefe2e85f /gcc/tree.h
parentc1c1e9eb1459db95f3045b78b102b2722ba38b70 (diff)
downloadgcc-0bc060a49d7ac66f72e93cc080abcc9e2175f55c.tar.gz
PR c++/34196
* tree.h (TRY_CATCH_IS_CLEANUP): New macro. * cp/decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP. * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR if it is set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131710 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 52cb9731730..de0b11d4e4a 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -447,6 +447,8 @@ struct gimple_stmt GTY(())
IDENTIFIER_NODE
CLEANUP_EH_ONLY in
TARGET_EXPR, WITH_CLEANUP_EXPR
+ TRY_CATCH_IS_CLEANUP in
+ TRY_CATCH_EXPR
ASM_INPUT_P in
ASM_EXPR
EH_FILTER_MUST_NOT_THROW in EH_FILTER_EXPR
@@ -1166,11 +1168,16 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
should be cleaned up some day. */
#define TREE_STATIC(NODE) ((NODE)->base.static_flag)
-/* In a TARGET_EXPR, WITH_CLEANUP_EXPR, means that the pertinent cleanup
+/* In a TARGET_EXPR or WITH_CLEANUP_EXPR, means that the pertinent cleanup
should only be executed if an exception is thrown, not on normal exit
of its scope. */
#define CLEANUP_EH_ONLY(NODE) ((NODE)->base.static_flag)
+/* In a TRY_CATCH_EXPR, means that the handler should be considered a
+ separate cleanup in honor_protect_cleanup_actions. */
+#define TRY_CATCH_IS_CLEANUP(NODE) \
+ (TRY_CATCH_EXPR_CHECK (NODE)->base.static_flag)
+
/* Used as a temporary field on a CASE_LABEL_EXPR to indicate that the
CASE_HIGH operand has been processed. */
#define CASE_HIGH_SEEN(NODE) \