X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree-tailcall.c;h=ec6d2fdff681c2706c6cad234d432355ffe97de3;hb=191cded9732055f9f2b52e15a67a73d5838e8d0e;hp=4d2422aa623777b05d2bb12a954a4e2503d644d4;hpb=cbf092eb88ea08a614e9f57fa18f17e8149b45f1;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 4d2422aa623..ec6d2fdff68 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -458,8 +458,10 @@ find_tail_calls (basic_block bb, struct tailcall **ret) to local variables. */ FOR_EACH_REFERENCED_VAR (var, rvi) { - if (!is_global_var (var) - && ref_maybe_used_by_stmt_p (call, var)) + if (TREE_CODE (var) != PARM_DECL + && auto_var_in_fn_p (var, cfun->decl) + && (ref_maybe_used_by_stmt_p (call, var) + || call_may_clobber_ref_p (call, var))) return; }