diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-03-12 21:45:47 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-03-12 21:45:47 +0000 |
commit | e2f6d6cdb80d5e36682f68b6ae33a6c79fd904cd (patch) | |
tree | f002ad4a8715dd2e722deb4ad26fef8957a10775 /clang/Analysis/SymbolManager.cpp | |
parent | 723849a17fb0ce15ef233b1fbebca692f6b19d21 (diff) | |
download | bcm5719-llvm-e2f6d6cdb80d5e36682f68b6ae33a6c79fd904cd.tar.gz bcm5719-llvm-e2f6d6cdb80d5e36682f68b6ae33a6c79fd904cd.zip |
Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be created for any expression, not just CallExprs.
Added experimental support for conjuring symbols during assingments where the RHS is "unknown". This allows more value tracking for path-sensitivity.
Fixed bug in "assumption" logic when processing symbolic constraints; we would improperly mark constraints we didn't support as infeasible.
llvm-svn: 48306
Diffstat (limited to 'clang/Analysis/SymbolManager.cpp')
-rw-r--r-- | clang/Analysis/SymbolManager.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/Analysis/SymbolManager.cpp b/clang/Analysis/SymbolManager.cpp index 54546494435..f243fa667b3 100644 --- a/clang/Analysis/SymbolManager.cpp +++ b/clang/Analysis/SymbolManager.cpp @@ -72,10 +72,10 @@ SymbolID SymbolManager::getContentsOfSymbol(SymbolID sym) { return SymbolCounter++; } -SymbolID SymbolManager::getCallRetValSymbol(CallExpr* CE, unsigned Count) { +SymbolID SymbolManager::getConjuredSymbol(Expr* E, unsigned Count) { llvm::FoldingSetNodeID profile; - SymbolDataCallRetVal::Profile(profile, CE, Count); + SymbolConjured::Profile(profile, E, Count); void* InsertPos; SymbolData* SD = DataSet.FindNodeOrInsertPos(profile, InsertPos); @@ -83,8 +83,8 @@ SymbolID SymbolManager::getCallRetValSymbol(CallExpr* CE, unsigned Count) { if (SD) return SD->getSymbol(); - SD = (SymbolData*) BPAlloc.Allocate<SymbolDataCallRetVal>(); - new (SD) SymbolDataCallRetVal(SymbolCounter, CE, Count); + SD = (SymbolData*) BPAlloc.Allocate<SymbolConjured>(); + new (SD) SymbolConjured(SymbolCounter, E, Count); DataSet.InsertNode(SD, InsertPos); DataMap[SymbolCounter] = SD; @@ -116,8 +116,8 @@ QualType SymbolData::getType(const SymbolManager& SymMgr) const { return T->getAsPointerType()->getPointeeType(); } - case CallRetValKind: - return cast<SymbolDataCallRetVal>(this)->getCallExpr()->getType(); + case ConjuredKind: + return cast<SymbolConjured>(this)->getExpr()->getType(); } } |