aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2011-04-15 19:48:25 +0000
committerMichael Matz <matz@gcc.gnu.org>2011-04-15 19:48:25 +0000
commit63d2a3533fb013061b3a20ddcc26233d6368de32 (patch)
tree2ca8a4769f794f0a8bad0116318e591f72ee7e8e /gcc/gimple.c
parentdee74c343634bec2e6909f197ce0b669820acc56 (diff)
downloadgcc-63d2a3533fb013061b3a20ddcc26233d6368de32.zip
gcc-63d2a3533fb013061b3a20ddcc26233d6368de32.tar.gz
gcc-63d2a3533fb013061b3a20ddcc26233d6368de32.tar.bz2
tree.h (ALLOCA_FOR_VAR_P): Rename to CALL_ALLOCA_FOR_VAR_P.
* tree.h (ALLOCA_FOR_VAR_P): Rename to CALL_ALLOCA_FOR_VAR_P. * builtins.c (expand_builtin): Use CALL_ALLOCA_FOR_VAR_P. * function.c (gimplify_parameters): Ditto. * gimplify.c (gimplify_vla_decl): Ditto. * gimple.h (enum gf_mask): Add GF_CALL_ALLOCA_FOR_VAR. (gimple_call_set_alloca_for_var): New inline function. (gimple_call_alloca_for_var_p): Ditto. * gimple.c (gimple_build_call_from_tree): Remember CALL_ALLOCA_FOR_VAR_P state. * cfgexpand.c (expand_call_stmt): Restore CALL_ALLOCA_FOR_VAR_P state. * tree-inline.c (inline_forbidden_p_stmt): Don't reject alloca calls if they were for VLA objects. From-SVN: r172516
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r--gcc/gimple.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 5dc62ea..f19b219 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -303,7 +303,12 @@ gimple_build_call_from_tree (tree t)
gimple_call_set_tail (call, CALL_EXPR_TAILCALL (t));
gimple_call_set_cannot_inline (call, CALL_CANNOT_INLINE_P (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));
+ if (fndecl
+ && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
+ && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_ALLOCA)
+ gimple_call_set_alloca_for_var (call, CALL_ALLOCA_FOR_VAR_P (t));
+ else
+ 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));