summaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authordavidxl <davidxl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-10 20:26:38 +0000
committerdavidxl <davidxl@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-10 20:26:38 +0000
commit5680e50808cee38502097ea720988ff5486037ff (patch)
tree3ddd4b4957cfc5c0cac4bfd53cfe390f92e77c18 /gcc/gimplify.c
parentb8d5d078ca5f303ee10da8891be50fde8e664880 (diff)
downloadgcc-5680e50808cee38502097ea720988ff5486037ff.tar.gz
Implement -freuse-stack= option
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189413 138bc75d-0d04-0410-961f-82ee72b054a4
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 9bf4ead84ed..bd3642c8c41 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;