summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-27 14:47:23 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-27 14:47:23 +0000
commitc4b2c7714c6d5ca9220a45716665796859de8911 (patch)
treeb8ae72b86b8ae408235956a931501621c226ccf1 /gcc/expr.c
parentb3879786c0b5fe09d64e0842c4c97e2681aab986 (diff)
downloadgcc-c4b2c7714c6d5ca9220a45716665796859de8911.tar.gz
* expr.c (store_constructor): Don't clobber TARGET if CLEARED.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30676 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 69c6f56bced..5fc55e52572 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));