aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-02-01 09:40:31 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-02-01 09:40:31 +0100
commit021293cb5abbe2a03c36bb5324ef2ebebcc98c9d (patch)
tree22ced0be1f1d48fca4a1b793689fd1f9bffc18f7 /gcc/tree-inline.c
parentb49e41743c3343f32642a4fbb2dd3c2bc4ccb838 (diff)
downloadgcc-021293cb5abbe2a03c36bb5324ef2ebebcc98c9d.zip
gcc-021293cb5abbe2a03c36bb5324ef2ebebcc98c9d.tar.gz
gcc-021293cb5abbe2a03c36bb5324ef2ebebcc98c9d.tar.bz2
re PR tree-optimization/60003 (wrong code with __builtin_setjmp/__builtin_longjmp and inlining)
PR tree-optimization/60003 * gimple-low.c (lower_builtin_setjmp): Set cfun->has_nonlocal_label. * profile.c (branch_prob): Use gimple_call_builtin_p to check for BUILT_IN_SETJMP_RECEIVER. * tree-inline.c (copy_bb): Call notice_special_calls. * gcc.c-torture/execute/pr60003.c: New test. From-SVN: r207382
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 79a39bc..439ef4c 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1745,7 +1745,6 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
if (is_gimple_call (stmt))
{
struct cgraph_edge *edge;
- int flags;
switch (id->transform_call_graph_edges)
{
@@ -1868,11 +1867,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
}
}
- flags = gimple_call_flags (stmt);
- if (flags & ECF_MAY_BE_ALLOCA)
- cfun->calls_alloca = true;
- if (flags & ECF_RETURNS_TWICE)
- cfun->calls_setjmp = true;
+ notice_special_calls (stmt);
}
maybe_duplicate_eh_stmt_fn (cfun, stmt, id->src_cfun, orig_stmt,