===================================================================
@@ -5068,6 +5068,13 @@ reshape_init_array (tree type, reshape_iter *d, ts
if (TYPE_DOMAIN (type))
max_index = array_type_nelts (type);
+ if (max_index && integer_all_onesp (max_index))
+ {
+ if (complain & tf_error)
+ error ("initializers provided for zero-size array of type %qT", type);
+ return error_mark_node;
+ }
+
return reshape_init_array_1 (TREE_TYPE (type), max_index, d, complain);
}
===================================================================
@@ -8,5 +8,5 @@ void foo()
unsigned char dir;
int data[0];
} yanito;
- static const yanito horse = { 1, { 2, 3 } }; // { dg-error "too many" }
+ static const yanito horse = { 1, { 2, 3 } }; // { dg-error "zero-size" }
}
===================================================================
@@ -0,0 +1,7 @@
+// PR c++/54501
+// { dg-options "" }
+
+int main()
+{
+ int a[][0] = {0}; // { dg-error "zero-size" }
+}
===================================================================
@@ -11,4 +11,4 @@ SomeType vals[] =
{
{ values : temp, },
0
- }; // { dg-error "invalid" }
+ }; // { dg-error "zero-size" }