diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-10-21 19:49:01 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-10-21 19:49:01 +0000 |
commit | 677fba12a55e9f6a4749fe58f729fd0947f2c77d (patch) | |
tree | 6f6f55d8c21afe1013708bfe09d22f548933e645 | |
parent | 4ddf7a4c2227709629a1c37c8f504c9c793f781c (diff) | |
download | bcm5719-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.cpp | 8 |
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)); } |