Issue |
143513
|
Summary |
SLP Vectorizer Options trigger Assertion in cost computation on `s390x`
|
Labels |
new issue
|
Assignees |
|
Reporter |
dominik-steenken
|
While running experiments with `csmith`, i ran into the following example (already reduced with `cvise`):
```C
static int c[][10];
short d;
long *e;
long f;
int g, k;
char h, i;
static int j[3];
void l();
static int *m() {
short *n = &d;
d = 0;
for (; d <= 2;)
if (*n)
;
else
return j;
return &g;
}
void p() { l(); }
void l() {
int *q;
h = 0;
for (; h <= 6; h++) {
int **r = &q;
*e = 4073709551615;
*r = m();
k = 0;
for (; k <= 6; k++) {
i = 2;
for (; i <= 6; i++)
**r |= c[k][h] ^= f;
}
}
}
```
When compiling this with the options
```
-O3 \
-S \
-w \
-c \
-o a.out \
--target=s390x-ibm-linux \
-march=z13 \
-mllvm -slp-max-reg-size=256 \
-mllvm -slp-vectorize-hor-store \
-mllvm -slp-vectorize-non-power-of-2 \
-mllvm -enable-tbaa=false \
```
The assertion `(Idx + EltsPerVector) <= BaseVF && "SK_ExtractSubvector index out of range"` fails in `llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::computeExtractCost`. This does not seem to be an issue on X86.
[repro.tar.gz](https://github.com/user-attachments/files/20672338/repro.tar.gz)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs