diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Analysis/CFRefCount.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Analysis/GRExprEngine.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Analysis/SymbolManager.cpp | 8 | 
3 files changed, 9 insertions, 5 deletions
diff --git a/clang/lib/Analysis/CFRefCount.cpp b/clang/lib/Analysis/CFRefCount.cpp index adbeff99158..733cad18acf 100644 --- a/clang/lib/Analysis/CFRefCount.cpp +++ b/clang/lib/Analysis/CFRefCount.cpp @@ -1515,7 +1515,9 @@ void CFRefCount::EvalSummary(ExplodedNodeSet<GRState>& Dst,          // Set the value of the variable to be a conjured symbol.          unsigned Count = Builder.getCurrentBlockCount(); -        SymbolID NewSym = Eng.getSymbolManager().getConjuredSymbol(*I, Count); +        SymbolID NewSym = +          Eng.getSymbolManager().getConjuredSymbol(*I, DV->getDecl()->getType(), +                                                   Count);          state = state.SetRVal(*DV,                                LVal::IsLValType(DV->getDecl()->getType()) diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp index 40c2b6507b9..41bf98933ef 100644 --- a/clang/lib/Analysis/GRExprEngine.cpp +++ b/clang/lib/Analysis/GRExprEngine.cpp @@ -1702,10 +1702,12 @@ void GRExprEngine::VisitUnaryOperator(UnaryOperator* U, NodeTy* Pred,              break;            case UnaryOperator::Not: +            // FIXME: Do we need to handle promotions?              St = SetRVal(St, U, EvalComplement(cast<NonLVal>(V)));              break;                        case UnaryOperator::Minus: +            // FIXME: Do we need to handle promotions?              St = SetRVal(St, U, EvalMinus(U, cast<NonLVal>(V)));              break;    diff --git a/clang/lib/Analysis/SymbolManager.cpp b/clang/lib/Analysis/SymbolManager.cpp index beb4379f99a..24d2ed72530 100644 --- a/clang/lib/Analysis/SymbolManager.cpp +++ b/clang/lib/Analysis/SymbolManager.cpp @@ -73,10 +73,10 @@ SymbolID SymbolManager::getContentsOfSymbol(SymbolID sym) {    return SymbolCounter++;  } -SymbolID SymbolManager::getConjuredSymbol(Expr* E, unsigned Count) { +SymbolID SymbolManager::getConjuredSymbol(Expr* E, QualType T, unsigned Count) {    llvm::FoldingSetNodeID profile; -  SymbolConjured::Profile(profile, E, Count); +  SymbolConjured::Profile(profile, E, T, Count);    void* InsertPos;    SymbolData* SD = DataSet.FindNodeOrInsertPos(profile, InsertPos); @@ -85,7 +85,7 @@ SymbolID SymbolManager::getConjuredSymbol(Expr* E, unsigned Count) {      return SD->getSymbol();    SD = (SymbolData*) BPAlloc.Allocate<SymbolConjured>(); -  new (SD) SymbolConjured(SymbolCounter, E, Count); +  new (SD) SymbolConjured(SymbolCounter, E, T, Count);    DataSet.InsertNode(SD, InsertPos);      DataMap[SymbolCounter] = SD; @@ -118,7 +118,7 @@ QualType SymbolData::getType(const SymbolManager& SymMgr) const {      }      case ConjuredKind: -      return cast<SymbolConjured>(this)->getExpr()->getType(); +      return cast<SymbolConjured>(this)->getType();    }  }  | 

