From: Richard Henderson Date: Thu, 24 Jun 2004 05:35:16 +0000 (-0700) Subject: c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside non-constant... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8c56bb830708cab8909c6911124af2565ad1acc6;p=gcc.git c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside non-constant size check. * c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside non-constant size check. Gimplify the type too. Tidy building BUILT_IN_STACK_ALLOC call From-SVN: r83582 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be182139dc3..bd1c4a369f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-06-23 Richard Henderson + + * c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside + non-constant size check. Gimplify the type too. Tidy building + BUILT_IN_STACK_ALLOC call + 2004-06-23 Roger Sayle * c-common.c (expand_unordered_cmp): Delete. diff --git a/gcc/c-gimplify.c b/gcc/c-gimplify.c index a3040d0bcd2..44af046d1ee 100644 --- a/gcc/c-gimplify.c +++ b/gcc/c-gimplify.c @@ -488,25 +488,25 @@ gimplify_decl_stmt (tree *stmt_p) { tree init = DECL_INITIAL (decl); - gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p); - gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p); - if (!TREE_CONSTANT (DECL_SIZE (decl))) { /* This is a variable-sized decl. Simplify its size and mark it for deferred expansion. Note that mudflap depends on the format of the emitted code: see mx_register_decls(). */ - tree pt_type = build_pointer_type (TREE_TYPE (decl)); - tree alloc_stmt - = (build_function_call_expr - (implicit_built_in_decls[BUILT_IN_STACK_ALLOC], - tree_cons (NULL_TREE, - build1 (ADDR_EXPR, pt_type, decl), - tree_cons (NULL_TREE, DECL_SIZE_UNIT (decl), - NULL_TREE)))); + tree t, args; + + gimplify_type_sizes (TREE_TYPE (decl), stmt_p); + gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p); + gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p); + + args = tree_cons (NULL, DECL_SIZE_UNIT (decl), NULL); + t = build_fold_addr_expr (decl); + args = tree_cons (NULL, t, args); + t = implicit_built_in_decls[BUILT_IN_STACK_ALLOC]; + t = build_function_call_expr (t, args); - gimplify_and_add (alloc_stmt, stmt_p); + gimplify_and_add (t, stmt_p); DECL_DEFER_OUTPUT (decl) = 1; }