[cfe-commits] r156578 - in /cfe/trunk: lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp test/Analysis/casts.c
Anna Zaks
ganna at apple.com
Thu May 10 16:39:27 PDT 2012
No, this will not prune pointer types.
Anna.
On May 10, 2012, at 4:15 PM, Ted Kremenek wrote:
> Will this also prune pointer types (which is not what we want)?
>
> On May 10, 2012, at 2:49 PM, Anna Zaks <ganna at apple.com> wrote:
>
>> Author: zaks
>> Date: Thu May 10 16:49:52 2012
>> New Revision: 156578
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=156578&view=rev
>> Log:
>> [analyzer] Exit early if constraint solver is given a non-integer symbol
>> to reason about.
>>
>> As part of taint propagation, we now allow creation of non-integer
>> symbolic expressions like a cast from int to float.
>>
>> Addresses PR12511 (radar://11215362).
>>
>> Modified:
>> cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
>> cfe/trunk/test/Analysis/casts.c
>>
>> Modified: cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp?rev=156578&r1=156577&r2=156578&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp Thu May 10 16:49:52 2012
>> @@ -137,6 +137,11 @@
>> SymbolRef Sym, bool Assumption) {
>> BasicValueFactory &BVF = getBasicVals();
>> QualType T = Sym->getType(BVF.getContext());
>> +
>> + // None of the constraint solvers currently support non-integer types.
>> + if (!T->isIntegerType())
>> + return State;
>> +
>> const llvm::APSInt &zero = BVF.getValue(0, T);
>> if (Assumption)
>> return assumeSymNE(State, Sym, zero, zero);
>>
>> Modified: cfe/trunk/test/Analysis/casts.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/casts.c?rev=156578&r1=156577&r2=156578&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/casts.c (original)
>> +++ cfe/trunk/test/Analysis/casts.c Thu May 10 16:49:52 2012
>> @@ -65,3 +65,11 @@
>> foo = ((long)(p));
>> (void) foo;
>> }
>> +
>> +// PR12511 and radar://11215362 - Test that we support SymCastExpr, which represents symbolic int to float cast.
>> +char ttt(int intSeconds) {
>> + double seconds = intSeconds;
>> + if (seconds)
>> + return 0;
>> + return 0;
>> +}
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list