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 <[email protected]> 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 >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
