aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2012-07-10 20:26:38 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2012-07-10 20:26:38 +0000
commit87e2a8fd39ac34b507dcadad62008ea3b5b6a735 (patch)
tree3ddd4b4957cfc5c0cac4bfd53cfe390f92e77c18 /gcc/gimplify.c
parent2f01137541c6214e5b4bca9fd0257a234bf20bf3 (diff)
downloadgcc-87e2a8fd39ac34b507dcadad62008ea3b5b6a735.zip
gcc-87e2a8fd39ac34b507dcadad62008ea3b5b6a735.tar.gz
gcc-87e2a8fd39ac34b507dcadad62008ea3b5b6a735.tar.bz2
Implement -freuse-stack= option
From-SVN: r189413
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 9bf4ead..bd3642c 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1247,7 +1247,8 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
&& !DECL_HAS_VALUE_EXPR_P (t)
/* Only care for variables that have to be in memory. Others
will be rewritten into SSA names, hence moved to the top-level. */
- && !is_gimple_reg (t))
+ && !is_gimple_reg (t)
+ && flag_stack_reuse != SR_NONE)
{
tree clobber = build_constructor (TREE_TYPE (t), NULL);
TREE_THIS_VOLATILE (clobber) = 1;
@@ -5634,7 +5635,8 @@ gimplify_target_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
/* Add a clobber for the temporary going out of scope, like
gimplify_bind_expr. */
if (gimplify_ctxp->in_cleanup_point_expr
- && needs_to_live_in_memory (temp))
+ && needs_to_live_in_memory (temp)
+ && flag_stack_reuse == SR_ALL)
{
tree clobber = build_constructor (TREE_TYPE (temp), NULL);
TREE_THIS_VOLATILE (clobber) = true;