c++: vector compound literal [PR104206]
authorJason Merrill <jason@redhat.com>
Wed, 26 Jan 2022 17:44:31 +0000 (12:44 -0500)
committerJason Merrill <jason@redhat.com>
Wed, 26 Jan 2022 19:27:35 +0000 (14:27 -0500)
My patch for PR101072 removed the specific VECTOR_TYPE handling here, which
broke pr72747-2.c on PPC; this patch restores it.

PR c++/104206
PR c++/101072

gcc/cp/ChangeLog:

* semantics.cc (finish_compound_literal): Restore VECTOR_TYPE check.

gcc/cp/semantics.cc

index 07c2b33..466d6b5 100644 (file)
@@ -3272,8 +3272,9 @@ finish_compound_literal (tree type, tree compound_literal,
 
   /* Represent other compound literals with TARGET_EXPR so we produce
      a prvalue, and can elide copies.  */
-  if (TREE_CODE (compound_literal) == CONSTRUCTOR
-      || TREE_CODE (compound_literal) == VEC_INIT_EXPR)
+  if (!VECTOR_TYPE_P (type)
+      && (TREE_CODE (compound_literal) == CONSTRUCTOR
+         || TREE_CODE (compound_literal) == VEC_INIT_EXPR))
     {
       /* The CONSTRUCTOR is now an initializer, not a compound literal.  */
       if (TREE_CODE (compound_literal) == CONSTRUCTOR)