]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gimplify.c (gimplify_init_constructor): Do not create a temporary for a volatile...
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 1 Sep 2010 12:20:15 +0000 (12:20 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 1 Sep 2010 12:20:15 +0000 (12:20 +0000)
* gimplify.c (gimplify_init_constructor): Do not create a temporary for
a volatile LHS if the constructor has only one element.

From-SVN: r163730

gcc/ChangeLog
gcc/gimplify.c

index fa4a13ec845438a8119b1de30a312f360613bf11..77ccff35dbd69bccdcb490c66df2987e374444c6 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gimplify.c (gimplify_init_constructor): Do not create a temporary for
+       a volatile LHS if the constructor has only one element.
+
 2010-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        Revert:
index 897c185c1437d046d1f305feea2aa43658a7e543..a02fa5bdd7bc6bfc789c09f4fae4d7faed42b8a7 100644 (file)
@@ -3314,11 +3314,12 @@ gimplify_init_constructor (tree *expr_p, tree *pre_p,
              }
          }
 
-       /* If the target is volatile and we have non-zero elements
-          initialize the target from a temporary.  */
+       /* If the target is volatile, we have non-zero elements and more than
+          one field to assign, initialize the target from a temporary.  */
        if (TREE_THIS_VOLATILE (object)
            && !TREE_ADDRESSABLE (type)
-           && num_nonzero_elements > 0)
+           && num_nonzero_elements > 0
+           && VEC_length (constructor_elt, elts) > 1)
          {
            tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type), NULL);
            TREE_OPERAND (*expr_p, 0) = temp;