aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-05-14 14:55:22 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-05-14 14:55:22 -0400
commit9bb1a81bb3cd328f6a8a6128534f3c9b490fac4c (patch)
tree35fed41760bd91f12cf6b65723674cbbc0fcc28b /gcc/gimple.c
parent786f715dc6869bac7a3018e880a4ffde41940422 (diff)
downloadgcc-9bb1a81bb3cd328f6a8a6128534f3c9b490fac4c.zip
gcc-9bb1a81bb3cd328f6a8a6128534f3c9b490fac4c.tar.gz
gcc-9bb1a81bb3cd328f6a8a6128534f3c9b490fac4c.tar.bz2
re PR c++/44127 (G++ emits unnecessary EH code)
PR c++/44127 gcc: * gimple.h (enum gf_mask): Add GF_CALL_NOTHROW. (gimple_call_set_nothrow): New. * gimple.c (gimple_build_call_from_tree): Call it. (gimple_call_flags): Set ECF_NOTHROW from GF_CALL_NOTHROW. gcc/cp: * except.c (dtor_nothrow): Return nonzero for type with trivial destructor. From-SVN: r159408
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r--gcc/gimple.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index dd691a8..ace53b9 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -297,6 +297,7 @@ gimple_build_call_from_tree (tree t)
gimple_call_set_return_slot_opt (call, CALL_EXPR_RETURN_SLOT_OPT (t));
gimple_call_set_from_thunk (call, CALL_FROM_THUNK_P (t));
gimple_call_set_va_arg_pack (call, CALL_EXPR_VA_ARG_PACK (t));
+ gimple_call_set_nothrow (call, TREE_NOTHROW (t));
gimple_set_no_warning (call, TREE_NO_WARNING (t));
return call;
@@ -1753,6 +1754,9 @@ gimple_call_flags (const_gimple stmt)
flags = 0;
}
+ if (stmt->gsbase.subcode & GF_CALL_NOTHROW)
+ flags |= ECF_NOTHROW;
+
return flags;
}