My cleanup in r12-296 cleared TREE_HAS_CONSTRUCTOR on digested class
initializers, but we leave it set for vectors, since we can't wrap them in
TARGET_EXPR.
PR c++/105187
gcc/cp/ChangeLog:
* typeck2.cc (store_init_value): Allow TREE_HAS_CONSTRUCTOR for
vectors.
gcc/testsuite/ChangeLog:
* gcc.c-torture/compile/
20050113-1.c: Moved to...
* c-c++-common/torture/
20050113-1.c: ...here.
here it should have been digested into an actual value for the type. */
gcc_checking_assert (TREE_CODE (value) != CONSTRUCTOR
|| processing_template_decl
+ || TREE_CODE (type) == VECTOR_TYPE
|| !TREE_HAS_CONSTRUCTOR (value));
/* If the initializer is not a constant, fill in DECL_INITIAL with
--- /dev/null
+/* PR c/17297 */
+
+typedef float V2SF __attribute__ ((vector_size (8)));
+
+int test0 (V2SF, V2SF);
+
+int
+main (void)
+{
+ V2SF a = (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
+ V2SF b = (V2SF) {567.345, 1984.0};
+ int i;
+
+ i = test0 (a, b);
+ return i;
+}
+++ /dev/null
-/* PR c/17297 */
-
-typedef float V2SF __attribute__ ((vector_size (8)));
-
-int test0 (V2SF, V2SF);
-
-int
-main (void)
-{
- V2SF a = (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
- V2SF b = (V2SF) {567.345, 1984.0};
- int i;
-
- i = test0 (a, b);
- return i;
-}