summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/SVals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Analysis/SVals.cpp')
-rw-r--r--clang/lib/Analysis/SVals.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/clang/lib/Analysis/SVals.cpp b/clang/lib/Analysis/SVals.cpp
index cca0e94191d..3762ae5ce61 100644
--- a/clang/lib/Analysis/SVals.cpp
+++ b/clang/lib/Analysis/SVals.cpp
@@ -324,11 +324,18 @@ NonLoc NonLoc::MakeCompoundVal(QualType T, llvm::ImmutableList<SVal> Vals,
SVal SVal::GetRValueSymbolVal(SymbolManager& SymMgr, const MemRegion* R) {
SymbolRef sym = SymMgr.getRegionRValueSymbol(R);
- if (const TypedRegion* TR = dyn_cast<TypedRegion>(R))
- if (Loc::IsLocType(TR->getRValueType(SymMgr.getContext())))
+ if (const TypedRegion* TR = dyn_cast<TypedRegion>(R)) {
+ QualType T = TR->getRValueType(SymMgr.getContext());
+
+ if (Loc::IsLocType(T))
return Loc::MakeVal(sym);
- return NonLoc::MakeVal(sym);
+ // Only handle integers for now.
+ if (T->isIntegerType())
+ return NonLoc::MakeVal(sym);
+ }
+
+ return UnknownVal();
}
nonloc::LocAsInteger nonloc::LocAsInteger::Make(BasicValueFactory& Vals, Loc V,
OpenPOWER on IntegriCloud