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
Incorrect fold of 'x & (-1 >> y) s>= x' #39208
Comments
assigned to @LebedevRI |
Hm, lookiug.. |
Okay, so that is because in Can you tell if any other canonicalize-constant-low-bit-mask-and-icmp-* are bad? |
The only other test 'canonicalize-*' test I see failing is this: canonicalize-constant-low-bit-mask-and-icmp-slt-to-icmp-sgt.ll declare i1 @pv(i8 %x, i8 %y) { Example: Source: Target: |
Got alive2 to work, can confirm that this test file is failing.
Ok, thank you, i will take care of that. |
Thanks for reporting! |
Extended Description
This is a bug in test/Transforms/InstCombine/canonicalize-constant-low-bit-mask-and-icmp-sge-to-icmp-sle.ll
Output of Alive2:
declare i1 @pv(i8 %x, i8 %y) {
%tmp0 = lshr i8 255, %y
%tmp1 = and i8 %tmp0, %x
%ret = icmp sge i8 %tmp1, %x
ret i1 %ret
}
=>
declare i1 @pv(i8 %x, i8 %y) {
%tmp0 = lshr i8 255, %y
%1 = icmp sge i8 %tmp0, %x
ret i1 %1
}
Transformation doesn't verify!
ERROR: Value mismatch
Example:
i8 %x = 0x7e (126)
i8 %y = 0x0 (0)
Source:
i8 %tmp0 = 0xff (255, -1)
i8 %tmp1 = 0x7e (126)
i1 %ret = 0x1 (1, -1)
Target:
i8 %tmp0 = 0xff (255, -1)
i1 %1 = 0x0 (0)
Source value: 0x1 (1, -1)
Target value: 0x0 (0)
The text was updated successfully, but these errors were encountered: