From: Ted Kremenek Date: Mon, 20 Jul 2009 21:39:27 +0000 (+0000) Subject: Enhance SimpleSValuator to handle nonloc::LocAsInteger -> location casts. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd6611426b96019516ed473ce25a8664065e9865;p=clang Enhance SimpleSValuator to handle nonloc::LocAsInteger -> location casts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76481 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/SimpleSValuator.cpp b/lib/Analysis/SimpleSValuator.cpp index 58b169658d..4f8c29c071 100644 --- a/lib/Analysis/SimpleSValuator.cpp +++ b/lib/Analysis/SimpleSValuator.cpp @@ -44,11 +44,16 @@ SValuator *clang::CreateSimpleSValuator(ValueManager &valMgr) { // Transfer function for Casts. //===----------------------------------------------------------------------===// -SVal SimpleSValuator::EvalCastNL(NonLoc val, QualType castTy) { +SVal SimpleSValuator::EvalCastNL(NonLoc val, QualType castTy) { + + bool isLocType = Loc::IsLocType(castTy); + + if (isLocType) + if (nonloc::LocAsInteger *LI = dyn_cast(&val)) + return LI->getLoc(); + if (!isa(val)) return UnknownVal(); - - bool isLocType = Loc::IsLocType(castTy); // Only handle casts from integers to integers. if (!isLocType && !castTy->isIntegerType())