[llvm-commits] [llvm] r130428 - /llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
Benjamin Kramer
benny.kra at googlemail.com
Thu Apr 28 14:40:13 PDT 2011
On 28.04.2011, at 22:20, Duncan Sands wrote:
> Hi Benjamin,
>
>> - // (trunc x) == C1& (and x, CA) == C2 -> (and CA|CMAX) == C1|C2
>> + // (trunc x) == C1& (and x, CA) == C2 -> (and x, CA|CMAX) == C1|C2
>> // where CMAX is the all ones value for the truncated type,
>> // iff the lower bits of CA are zero.
>
> don't you need the lower bits of C2 to also be zero?
>
> Ciao,
>
> Duncan.
>
> PS: Of course, if they are not zero then "(and x, CA) == C2" can be folded to
> false, so probably you will never hit this in practice.
We do require the bits of C2 to be zero. This should be folded away earlier, however I was bitten
by this before, it's possible to create test cases where SimplifyDemandedBits hits the recursion
limit and doesn't fold things that should be folded, I'll add a check to be safe.
More information about the llvm-commits
mailing list