diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 1999-11-27 14:47:23 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1999-11-27 09:47:23 -0500 |
commit | dd1db5ec31260c6bd45dbb01ba9f830b0e8f7334 (patch) | |
tree | b8ae72b86b8ae408235956a931501621c226ccf1 | |
parent | ac51c4e37c5fdf86f0545deff7c6c95314099e97 (diff) | |
download | gcc-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/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/expr.c | 7 |
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. @@ -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)); |