There is an assumption in many places in c-typeck.cc that GNU vectors sizes are
always known at compile time. SVE vectors now piggy-back on GNU vector code
so this patch changes one of the places where there is an assumption of vectors
being fixed-length to being variable width.
gcc/ChangeLog:
* c/c-typeck.cc (process_init_element): Fix condition to include
sizeless types.
---
gcc/c/c-typeck.cc | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index 6673cbf7294..94959f7b8ad 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -11969,8 +11969,9 @@ retry:
tree elttype = TYPE_MAIN_VARIANT (TREE_TYPE (constructor_type));
/* Do a basic check of initializer size. Note that vectors
- always have a fixed size derived from their type. */
- if (tree_int_cst_lt (constructor_max_index, constructor_index))
+ may not always have a fixed size derived from their type. */
+ if (known_lt (tree_to_poly_uint64 (constructor_max_index),
+ tree_to_poly_uint64 (constructor_index)))
{
pedwarn_init (loc, 0,
"excess elements in vector initializer");
--
2.25.1