c: ignore initializers for elements of variable-size types [PR93577]
authorChristophe Lyon <christophe.lyon@linaro.org>
Tue, 17 Mar 2020 09:26:08 +0000 (09:26 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Tue, 17 Mar 2020 09:45:35 +0000 (09:45 +0000)
2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* c-typeck.c (process_init_element): Handle constructor_type with
type size represented by POLY_INT_CST.

gcc/testsuite/
* gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Remove
superfluous dg-error.
* gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.

gcc/ChangeLog
gcc/c/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c

index f8105ccc67d9584894184aad0424fee9e2501fc3..06c7db0245a4697afc385ffc5793567874639f00 100644 (file)
@@ -1,3 +1,8 @@
+2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * c-typeck.c (process_init_element): Handle constructor_type with
+       type size represented by POLY_INT_CST.
+
 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/94187
index d8025de1996ddde77c89392495d181740722514e..490d8fc5f4a4a5c0f8ddc28b86af7947ef12aa06 100644 (file)
@@ -9968,7 +9968,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
   /* Ignore elements of an initializer for a variable-size type.
      Those are diagnosed in digest_init.  */
   if (COMPLETE_TYPE_P (constructor_type)
-      && TREE_CODE (TYPE_SIZE (constructor_type)) != INTEGER_CST)
+      && !poly_int_tree_p (TYPE_SIZE (constructor_type)))
     return;
 
   if (!implicit && warn_designated_init && !was_designated
index 879a67d88ef21b1500835bad975cd9b8c18af9d3..aaf973a206c8bf64d64c98877d3ae2813043cfc7 100644 (file)
@@ -1,3 +1,9 @@
+2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Remove
+       superfluous dg-error.
+       * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
+
 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/94189
index 045963d5c764ad4908e8dd98eb5dc2364070d7e4..7fc51e7ad1859023e3afb25239ac192b85cdbe8c 100644 (file)
@@ -83,7 +83,6 @@ statements (int n)
   svint8_t array[2]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
   svint8_t zero_length_array[0]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
   svint8_t empty_init_array[] = {}; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
-                                   /* { dg-error {empty scalar initializer} "" { target *-*-* } .-1 } */
   typedef svint8_t vla_type[n]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
 
   /* Assignment.  */
index c7282faba4600d976c27bad5bc42325789f502ba..3af36de99945daee603eab327738227f5971e3c4 100644 (file)
@@ -83,7 +83,6 @@ statements (int n)
   svint8_t array[2]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
   svint8_t zero_length_array[0]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
   svint8_t empty_init_array[] = {}; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
-                                   /* { dg-error {empty scalar initializer} "" { target *-*-* } .-1 } */
   typedef svint8_t vla_type[n]; /* { dg-error {array elements cannot have SVE type 'svint8_t'} } */
 
   /* Assignment.  */