https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106365
Bug ID: 106365
Summary: Miss to handle ifn .LEN_STORE in FRE
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: linkw at gcc dot gnu.org
Target Milestone: ---
In regression testing for the patch to add unroll factor suggestion to
vectorizer for port rs6000, one failure got exposed on Power10 (with partial
vector in length supported).
The test case is gcc/testsuite/gcc.dg/tree-ssa/pr84512.c
The option can be: -O3 -mcpu=power10 -fno-vect-cost-model
The resulted IR in optimized:
<bb 2> [local count: 97603129]:
MEM <vector(4) int> [(int *)&a] = { 0, 1, 4, 9 };
MEM <vector(4) int> [(int *)&a + 16B] = { 16, 25, 36, 49 };
.LEN_STORE (&MEM <int[10]> [(void *)&a + 32B], 128B, 8, { 64, 0, 0, 0, 81, 0,
0, 0, 100, 0, 0, 0, 121, 0, 0, 0 }, 0);
vect__2.10_6 = MEM <vector(4) int> [(int *)&a];
vect__2.10_30 = MEM <vector(4) int> [(int *)&a + 16B];
vect_res_10.11_31 = vect__2.10_6 + vect__2.10_30;
_33 = VEC_PERM_EXPR <vect_res_10.11_31, { 0, 0, 0, 0 }, { 2, 3, 4, 5 }>;
_34 = vect_res_10.11_31 + _33;
_35 = VEC_PERM_EXPR <_34, { 0, 0, 0, 0 }, { 1, 2, 3, 4 }>;
_36 = _34 + _35;
stmp_res_10.12_37 = BIT_FIELD_REF <_36, 32, 0>;
_13 = a[8];
res_3 = _13 + stmp_res_10.12_37;
_8 = a[9];
res_23 = res_3 + _8;
a ={v} {CLOBBER(eol)};
return res_23;
instead of:
int foo ()
{
<bb 2> [local count: 97603129]:
return 285;
}