aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>1999-11-27 14:47:23 +0000
committerRichard Kenner <kenner@gcc.gnu.org>1999-11-27 09:47:23 -0500
commitdd1db5ec31260c6bd45dbb01ba9f830b0e8f7334 (patch)
treeb8ae72b86b8ae408235956a931501621c226ccf1
parentac51c4e37c5fdf86f0545deff7c6c95314099e97 (diff)
downloadgcc-dd1db5ec31260c6bd45dbb01ba9f830b0e8f7334.zip
gcc-dd1db5ec31260c6bd45dbb01ba9f830b0e8f7334.tar.gz
gcc-dd1db5ec31260c6bd45dbb01ba9f830b0e8f7334.tar.bz2
* expr.c (store_constructor): Don't clobber TARGET if CLEARED.
From-SVN: r30676
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/expr.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 97f5d00..e378c87 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
Sat Nov 27 08:38:26 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+ * expr.c (store_constructor): Don't clobber TARGET if CLEARED.
+
* combine.c (try_combine): Add code to try to merge a set of a
two-word pseudo to a constant with a setting of one of those words
to a constant.
diff --git a/gcc/expr.c b/gcc/expr.c
index 69c6f56..5fc55e5 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4088,8 +4088,9 @@ store_constructor (exp, target, align, cleared)
register tree elt;
/* Inform later passes that the whole union value is dead. */
- if (TREE_CODE (type) == UNION_TYPE
- || TREE_CODE (type) == QUAL_UNION_TYPE)
+ if ((TREE_CODE (type) == UNION_TYPE
+ || TREE_CODE (type) == QUAL_UNION_TYPE)
+ && ! cleared)
{
emit_insn (gen_rtx_CLOBBER (VOIDmode, target));
@@ -4125,7 +4126,7 @@ store_constructor (exp, target, align, cleared)
cleared = 1;
}
- else
+ else if (! cleared)
/* Inform later passes that the old value is dead. */
emit_insn (gen_rtx_CLOBBER (VOIDmode, target));