summaryrefslogtreecommitdiffstats
path: root/clang/Analysis/SymbolManager.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-03-12 21:45:47 +0000
committerTed Kremenek <kremenek@apple.com>2008-03-12 21:45:47 +0000
commite2f6d6cdb80d5e36682f68b6ae33a6c79fd904cd (patch)
treef002ad4a8715dd2e722deb4ad26fef8957a10775 /clang/Analysis/SymbolManager.cpp
parent723849a17fb0ce15ef233b1fbebca692f6b19d21 (diff)
downloadbcm5719-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.cpp12
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();
}
}
OpenPOWER on IntegriCloud