]> gcc.gnu.org Git - gcc.git/commitdiff
* expr.c (store_constructor): Don't clobber TARGET if CLEARED.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sat, 27 Nov 1999 14:47:23 +0000 (14:47 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 27 Nov 1999 14:47:23 +0000 (09:47 -0500)
From-SVN: r30676

gcc/ChangeLog
gcc/expr.c

index 97f5d0010abb5e77951105dc4f7a48786d99154f..e378c87d73d2f93bfceed06bd6d6b56c712a12eb 100644 (file)
@@ -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.
index 69c6f56bced139c7eec30cc66e847362ac709780..5fc55e5257241f5e8a3ed2b635b004a90d65517f 100644 (file)
@@ -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));
 
This page took 0.080876 seconds and 5 git commands to generate.