diff options
author | Jason Merrill <jason@redhat.com> | 2008-01-21 23:53:33 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-01-21 23:53:33 -0500 |
commit | 33b45227e0826ce8ddfe659c42f2c35cc0814065 (patch) | |
tree | 1cf758304e987f9c212d745d72e58a7eefe2e85f /gcc/tree.h | |
parent | 9444edce910401a6aaf7fb7a535d52f6c2780be4 (diff) | |
download | gcc-33b45227e0826ce8ddfe659c42f2c35cc0814065.tar.gz |
re PR c++/34196 (uninitialized variable warning in dead exception region)
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.
From-SVN: r131710
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 9 |
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) \ |