[PATCH] Bitwise comparison always true

Jordan Rose jordan_rose at apple.com
Tue May 20 10:38:50 PDT 2014


Thanks, committed in r209221!

Jordan


On May 19, 2014, at 5:24 , Anders Rönnholm <Anders.Ronnholm at evidente.se> wrote:

> Hi,
> 
> Added testcases and changed to getValue(). Yes support for negative values will be added when i do the same for my previous CFG patch.
> 
> //Anders
> ________________________________________
> Från: Jordan Rose [jordan_rose at apple.com]
> Skickat: den 16 maj 2014 18:36
> Till: Anders Rönnholm
> Cc: cfe-commits at cs.uiuc.edu; Daniel Marjamäki
> Ämne: Re: [PATCH] Bitwise comparison always true
> 
> Nifty. Some comments:
> 
> +      llvm::APSInt L1, L2;
> +      IntLiteral->EvaluateAsInt(L1, *Context);
> +      IntLiteral2->EvaluateAsInt(L2, *Context);
> 
> IntegerLiteral extends APIntStorage, so you can skip the complicated EvaluateAsInt path and just go with IntLiteral->getValue(). Note that this returns an APInt because a minus sign is not part of the literal. You can add that in a separate patch, though.
> 
> Please add some tests that show "8 & x" instead of "x & 8". I see that it's already handled, but it should be in the tests as well. Please also add tests where the number being used for the bitwise op is not a power of 2, and where neither of them are.
> 
> Jordan
> 
> 
> On May 16, 2014, at 4:42 , Anders Rönnholm <Anders.Ronnholm at evidente.se> wrote:
> 
>> Hi,
>> 
>> I have made a small patch which improves the CFG equality operator evaluation to detect logical errors in bitwise comparisons.
>> 
>> It finds logical errors in and/or operations that always evaluates to true/false such as.
>> (x & 8) == 4
>> 
>> //Anders
>> <bitwisecomparison.diff>_______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> <bitwisecomparison.diff>





More information about the cfe-commits mailing list