aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-04-18 20:39:52 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2009-04-18 18:39:52 +0000
commit2505c5edcac3fbc0a39ad74c63bab1534ee6e491 (patch)
tree605c8e1d928935149f9367d15c77d8c439de199f /gcc/except.c
parentc7f9c0b9835fc77208bddffec0ba71d33fb425fa (diff)
downloadgcc-2505c5edcac3fbc0a39ad74c63bab1534ee6e491.zip
gcc-2505c5edcac3fbc0a39ad74c63bab1534ee6e491.tar.gz
gcc-2505c5edcac3fbc0a39ad74c63bab1534ee6e491.tar.bz2
cgraph.c (cgraph_make_edge, [...]): Set nothrow flag.
* cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt): Set nothrow flag. * cgraph.h (struct function): Reduce loop_nest to 30 bits; add can_throw_external flag. * ipa-reference.c (ipa_utils_reduced_inorder): Update call. * ipa-pure-const.c (ignore_edge): New function. (propagate): Compute order for NOTHROW computation; set NOTHROWs only over can_throw_external edges. (local_pure_const): Add nothrow flag. * ipa-utils.c (searchc): Add ignore_edge callback. (ipa_utils_reduced_inorder): Add ignore_edge callback. * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype. (set_nothrow_function_flags): Update cgraph. * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode. From-SVN: r146322
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c
index 9874b59..bc3b8c4 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -2846,6 +2846,10 @@ set_nothrow_function_flags (void)
(current_function_decl))
>= AVAIL_AVAILABLE))
{
+ struct cgraph_node *node = cgraph_node (current_function_decl);
+ struct cgraph_edge *e;
+ for (e = node->callers; e; e = e->next_caller)
+ e->can_throw_external = false;
TREE_NOTHROW (current_function_decl) = 1;
if (dump_file)