expr: Use constant_lower_bound classifying constructor els [PR116595].
In categorize_ctor_elements_1 we do VECTOR_CST_NELTS (value).to_constant () but VALUE's type can be a VLA vector (since r15-5780-g17b520a10cdaab). This patch uses constant_lower_bound instead. PR middle-end/116595 gcc/ChangeLog: * expr.cc (categorize_ctor_elements_1): Use constant_lower_bound. gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/autovec/pr116595.C: New test.
This commit is contained in:
parent
ee65440cbd
commit
f183ae0ae8
2 changed files with 13 additions and 3 deletions
|
@ -7193,9 +7193,9 @@ categorize_ctor_elements_1 (const_tree ctor, HOST_WIDE_INT *p_nz_elts,
|
|||
|
||||
case VECTOR_CST:
|
||||
{
|
||||
/* We can only construct constant-length vectors using
|
||||
CONSTRUCTOR. */
|
||||
unsigned int nunits = VECTOR_CST_NELTS (value).to_constant ();
|
||||
unsigned int nunits
|
||||
= constant_lower_bound
|
||||
(TYPE_VECTOR_SUBPARTS (TREE_TYPE (value)));
|
||||
for (unsigned int i = 0; i < nunits; ++i)
|
||||
{
|
||||
tree v = VECTOR_CST_ELT (value, i);
|
||||
|
|
10
gcc/testsuite/g++.target/riscv/rvv/autovec/pr116595.C
Normal file
10
gcc/testsuite/g++.target/riscv/rvv/autovec/pr116595.C
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-march=rv64gcv" } */
|
||||
|
||||
#include <riscv_vector.h>
|
||||
|
||||
void
|
||||
vsseg (float *a, vfloat32mf2_t b, vfloat32mf2_t c, unsigned long vl)
|
||||
{
|
||||
vfloat32mf2x2_t foo = vfloat32mf2x2_t ();
|
||||
}
|
Loading…
Add table
Reference in a new issue