aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2004-08-25 18:11:12 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2004-08-25 18:11:12 +0000
commitbbbb79d42a793c2328535b09ffaa71422353f851 (patch)
treebeea9c2173e9f6b5139100616d041d09db2f4a3d /gcc/gimplify.c
parentd711cf67a62351e4722d7b16b1be84899b6b1d82 (diff)
downloadgcc-bbbb79d42a793c2328535b09ffaa71422353f851.zip
gcc-bbbb79d42a793c2328535b09ffaa71422353f851.tar.gz
gcc-bbbb79d42a793c2328535b09ffaa71422353f851.tar.bz2
gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing.
* gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing. From-SVN: r86563
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index b008a17..323df36 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -117,8 +117,11 @@ push_gimplify_context (void)
abort ();
gimplify_ctxp
= (struct gimplify_ctx *) xcalloc (1, sizeof (struct gimplify_ctx));
- gimplify_ctxp->temp_htab
- = htab_create (1000, gimple_tree_hash, gimple_tree_eq, free);
+ if (optimize)
+ gimplify_ctxp->temp_htab
+ = htab_create (1000, gimple_tree_hash, gimple_tree_eq, free);
+ else
+ gimplify_ctxp->temp_htab = NULL;
}
/* Tear down a context for the gimplifier. If BODY is non-null, then
@@ -142,12 +145,13 @@ pop_gimplify_context (tree body)
record_vars (gimplify_ctxp->temps);
#if 0
- if (!quiet_flag)
+ if (!quiet_flag && optimize)
fprintf (stderr, " collisions: %f ",
htab_collisions (gimplify_ctxp->temp_htab));
#endif
- htab_delete (gimplify_ctxp->temp_htab);
+ if (optimize)
+ htab_delete (gimplify_ctxp->temp_htab);
free (gimplify_ctxp);
gimplify_ctxp = NULL;
}
@@ -409,7 +413,12 @@ lookup_tmp_var (tree val, bool is_formal)
{
tree ret;
- if (!is_formal || TREE_SIDE_EFFECTS (val))
+ /* If not optimizing, never really reuse a temporary. local-alloc
+ won't allocate any variable that is used in more than one basic
+ block, which means it will go into memory, causing much extra
+ work in reload and final and poorer code generation, outweighing
+ the extra memory allocation here. */
+ if (!optimize || !is_formal || TREE_SIDE_EFFECTS (val))
ret = create_tmp_from_val (val);
else
{