From: Geoffrey Keating Date: Wed, 25 Aug 2004 18:11:12 +0000 (+0000) Subject: gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bbbb79d42a793c2328535b09ffaa71422353f851;p=gcc.git gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing. * gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing. From-SVN: r86563 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1bff6fd98e7..d4eac297d3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-08-24 Geoffrey Keating + + * gimplify.c (lookup_tmp_var): Separate temporaries when not + optimizing. + 2004-08-25 John David Anglin PR libstdc++/17005 (fix for HP-UX 11.11) diff --git a/gcc/gimplify.c b/gcc/gimplify.c index b008a17375c..323df361773 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 {