From 0944cccb769648aabc9abd0ba4f47d5d06ce59f8 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57917 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/GRExprEngine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index e6780161d7..fa33028495 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/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)); } -- 2.50.1