From 677fba12a55e9f6a4749fe58f729fd0947f2c77d Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Tue, 21 Oct 2008 19:49:01 +0000 Subject: [PATCH] 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 --- clang/lib/Analysis/GRExprEngine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp index e6780161d7a0..fa33028495ca 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(loc::SymbolVal(Sym)) : cast(nonloc::SymbolVal(Sym)); }