summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-10-21 19:49:01 +0000
committerTed Kremenek <kremenek@apple.com>2008-10-21 19:49:01 +0000
commit677fba12a55e9f6a4749fe58f729fd0947f2c77d (patch)
tree6f6f55d8c21afe1013708bfe09d22f548933e645
parent4ddf7a4c2227709629a1c37c8f504c9c793f781c (diff)
downloadbcm5719-llvm-677fba12a55e9f6a4749fe58f729fd0947f2c77d.tar.gz
bcm5719-llvm-677fba12a55e9f6a4749fe58f729fd0947f2c77d.zip
When conjuring symbols for compound assignments, use the promoted type to determine if the symbolic value as a "loc::" or "nonloc::" value.
llvm-svn: 57917
-rw-r--r--clang/lib/Analysis/GRExprEngine.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp
index e6780161d7a..fa33028495c 100644
--- a/clang/lib/Analysis/GRExprEngine.cpp
+++ b/clang/lib/Analysis/GRExprEngine.cpp
@@ -2208,13 +2208,13 @@ void GRExprEngine::VisitBinaryOperator(BinaryOperator* B,
// EXPERIMENTAL: "Conjured" symbols.
// FIXME: Handle structs.
- QualType T = RHS->getType();
-
- if (Result.isUnknown() && (T->isIntegerType() || Loc::IsLocType(T))) {
+ if (Result.isUnknown() &&
+ (CTy->isIntegerType() || Loc::IsLocType(CTy))) {
+
unsigned Count = Builder->getCurrentBlockCount();
SymbolID Sym = SymMgr.getConjuredSymbol(B->getRHS(), Count);
- Result = Loc::IsLocType(B->getRHS()->getType())
+ Result = Loc::IsLocType(CTy)
? cast<SVal>(loc::SymbolVal(Sym))
: cast<SVal>(nonloc::SymbolVal(Sym));
}
OpenPOWER on IntegriCloud