aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c/c-typeck.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c1
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c1
5 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f8105cc..06c7db0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index d8025de..490d8fc 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 879a67d..aaf973a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
index 045963d..7fc51e7 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
@@ -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. */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
index c7282fa..3af36de 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
@@ -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. */