Displaying 2 results from an estimated 2 matches for "283d630a".
2013 Nov 16
0
[LLVMdev] struct with signed bitfield (PR17827)
I need to read up on how nsw would make this different, but I see your
point about the shift:
%bf.result.shl = shl i8 %bf.value, 5
%bf.result.ashr = ashr i8 %bf.result.shl, 5
This should have splatted the sign bit across the upper 5 bits of the char,
so the subsequent compare:
%cmp = icmp slt i32 %bf.cast, 1
Can't be transformed to a check for 'equal to 0'.
Thanks!
On Fri,
2013 Nov 16
2
[LLVMdev] struct with signed bitfield (PR17827)
I actually think it is a problem with the optimizer like Kay first thought.
-instcombine seems turning "((x and 6) shl 5) slt 32" into "(x and 6) slt
1". If the comparison were unsigned or the shl had a nsw flag, I think this
would be okay. Since none of these is true, I don't think this
transformation is correct.
H.
On Sat, Nov 16, 2013 at 1:41 AM, Mark Lacey