https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94700
Bug ID: 94700
Summary: ICE in forwprop when folding to a VEC_PERM_EXPR
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: rsandifo at gcc dot gnu.org
Target Milestone: ---
Compiling this with -march=armv8.2-a+sve -msve-vector-bits=256 -O3:
#include <arm_sve.h>
typedef float v8sf __attribute__((vector_size(32)));
svfloat32_t
f (svbool_t pg, svfloat32_t x, svfloat32_t y)
{
v8sf a = svadd_x (pg, x, 1);
v8sf b = { a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] };
return svdiv_x (pg, b, y);
}
gives:
foo.c: In function ‘svfloat32_t f(svbool_t, svfloat32_t, svfloat32_t)’:
foo.c:11:1: error: non-trivial conversion in ‘ssa_name’
11 | }
| ^
v8sf
__SVFloat32_t
b_18 = _1;
during GIMPLE pass: forwprop
dump file: foo.031t.forwprop1
This is the maybe_ident equivalent of PR94683. I should have
realised at the time that both arms would need fixing.