-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[LoopInterchange] Assertion `getActiveBits() <= 64 && "Too many bits for uint64_t" #104761
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
Labels
Comments
Which seems to be due to the getZExtValue() call inside IndexedReference::computeRefCost |
cc: @caojoshua |
I have a fix, will put it up for review tomorrow. |
sjoerdmeijer
added a commit
to sjoerdmeijer/llvm-project
that referenced
this issue
Oct 10, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case (the cost value is kept in a signed integer). This fixes llvm#104761
sjoerdmeijer
added a commit
to sjoerdmeijer/llvm-project
that referenced
this issue
Oct 10, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case (the cost value is kept in a signed integer). This fixes llvm#104761
sjoerdmeijer
added a commit
to sjoerdmeijer/llvm-project
that referenced
this issue
Oct 10, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case (the cost value is kept in a signed integer). This fixes llvm#104761
sjoerdmeijer
added a commit
to sjoerdmeijer/llvm-project
that referenced
this issue
Oct 14, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case (the cost value is kept in a signed integer). This fixes llvm#104761
sjoerdmeijer
added a commit
to sjoerdmeijer/llvm-project
that referenced
this issue
Nov 7, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case (the cost value is kept in a signed integer). This fixes llvm#104761
sjoerdmeijer
added a commit
that referenced
this issue
Nov 14, 2024
If the iteration count is really large, e.g. UINT_MAX, then the cost calculation can overflows and trigger an assert. So saturate the cost to INT_MAX if this is the case by using InstructionCost as a type which already supports this kind of overflow handling. This fixes #104761
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
With options "-O3 --target=aarch64 func.cpp -mllvm -enable-loopinterchange" and this input:
Loop-interchange runs in an assert:
IR reproducer, compile this with "opt -passes=loop-interchange -S":
The text was updated successfully, but these errors were encountered: