[llvm-commits] [poolalloc] r107188 - /poolalloc/trunk/lib/DSA/DataStructureAA.cpp
Will Dietz
wdietz2 at illinois.edu
Tue Jun 29 11:38:26 PDT 2010
Author: wdietz2
Date: Tue Jun 29 13:38:26 2010
New Revision: 107188
URL: http://llvm.org/viewvc/llvm-project?rev=107188&view=rev
Log:
Added simple 'valid' state tracking for DS-AA, and assert if the pass is used after being invalidated.
This helps save debugging time by making it clear if an error is due to ds-aa being invalidated as opposed to wrong DSA results, etc.
Modified:
poolalloc/trunk/lib/DSA/DataStructureAA.cpp
Modified: poolalloc/trunk/lib/DSA/DataStructureAA.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructureAA.cpp?rev=107188&r1=107187&r2=107188&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructureAA.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructureAA.cpp Tue Jun 29 13:38:26 2010
@@ -35,10 +35,12 @@
// information is also freed.
CallSite MapCS;
std::multimap<DSNode*, const DSNode*> CallerCalleeMap;
+ bool valid;
public:
static char ID;
- DSAA() : ModulePass((intptr_t)&ID), TD(0) {}
+ DSAA() : ModulePass((intptr_t)&ID), TD(NULL), BU(NULL), valid(false) {}
~DSAA() {
+ valid = false;
InvalidateCache();
}
@@ -58,9 +60,20 @@
InitializeAliasAnalysis(this);
TD = &getAnalysis<TDDataStructures>();
BU = &getAnalysis<BUDataStructures>();
+ //FIXME: Is this not a safe assumption?
+ //assert(!valid && "DSAA executed twice without being invalidated?");
+ valid = true;
return false;
}
+
+ void releaseMemory() {
+ valid = false;
+ TD = NULL;
+ BU = NULL;
+ InvalidateCache();
+ }
+
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AliasAnalysis::getAnalysisUsage(AU);
AU.setPreservesAll(); // Does not transform code
@@ -91,12 +104,14 @@
}
virtual void deleteValue(Value *V) {
+ assert(valid && "DSAA invalidated but then queried?!");
InvalidateCache();
BU->deleteValue(V);
TD->deleteValue(V);
}
virtual void copyValue(Value *From, Value *To) {
+ assert(valid && "DSAA invalidated but then queried?!");
if (From == To) return;
InvalidateCache();
BU->copyValue(From, To);
@@ -133,6 +148,7 @@
AliasAnalysis::AliasResult DSAA::alias(const Value *V1, unsigned V1Size,
const Value *V2, unsigned V2Size) {
+ assert(valid && "DSAA invalidated but then queried?!");
if (V1 == V2) return MustAlias;
DSGraph *G1 = getGraphForValue(V1);
@@ -183,6 +199,7 @@
///
AliasAnalysis::ModRefResult
DSAA::getModRefInfo(CallSite CS, Value *P, unsigned Size) {
+ assert(valid && "DSAA invalidated but then queried?!");
DSNode *N = 0;
// First step, check our cache.
if (CS.getInstruction() == MapCS.getInstruction()) {
More information about the llvm-commits
mailing list