summaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-18 18:39:52 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-18 18:39:52 +0000
commit17b28e52019eff5c40389d7c25d6da967bb6f8c9 (patch)
tree605c8e1d928935149f9367d15c77d8c439de199f /gcc/tree-cfg.c
parent1eecdb280eac3d85d7d606225c14c4f99428a62c (diff)
downloadgcc-17b28e52019eff5c40389d7c25d6da967bb6f8c9.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146322 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index d4aa935e1f6..9c701463784 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4156,7 +4156,10 @@ verify_stmt (gimple_stmt_iterator *gsi)
to match. */
if (lookup_stmt_eh_region (stmt) >= 0)
{
- if (!stmt_could_throw_p (stmt))
+ /* During IPA passes, ipa-pure-const sets nothrow flags on calls
+ and they are updated on statements only after fixup_cfg
+ is executed at beggining of expansion stage. */
+ if (!stmt_could_throw_p (stmt) && cgraph_state != CGRAPH_STATE_IPA_SSA)
{
error ("statement marked for throw, but doesn%'t");
goto fail;