-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clang crash on aarch64: error in backend: Don't know how to widen the operands for INSERT_SUBVECTOR #102016
Comments
@llvm/issue-subscribers-backend-aarch64 Author: Kyrill Tkachov (ktkachov)
The testcase
```
long long a;
short b;
long c;
long d(long e) {
if (e < c)
return c;
return e;
}
void f(short e[][12], long long g[][2][2]) {
for (int h;;)
for (int i; i < 10; i += e[-1][4])
#pragma clang loop vectorize_predicate(enable)
for (char j; j < 012; j += 4) {
b = g[1][h][j];
a = d(a);
}
}
```
crashes with -O3 -march=armv9-a
error in backend: Don't know how to widen the operands for INSERT_SUBVECTOR
|
When I try this on a build with assertions enabled, I get: It seems the LV has picked a VF= |
It looks like this would be fixed by #102105, but @sdesmalen-arm comment suggests there might be other case (which have only loads / stores, or other stuff that isn't handled by that patch), where it could still pick an invalid factor. |
…OR_ELT` If the operands to `INSERT_SUBVECTOR` can't be widened legally, just replace the `INSERT_SUBVECTOR` with a series of `INSERT_VECTOR_ELT`. Closes llvm#124255 (and possibly llvm#102016)
Please reopen if still not fixed. |
The testcase
crashes with -O3 -march=armv9-a
error in backend: Don't know how to widen the operands for INSERT_SUBVECTOR
The text was updated successfully, but these errors were encountered: