[llvm-commits] [llvm] r60216 - /llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
Chris Lattner
sabre at nondot.org
Fri Nov 28 13:45:17 PST 2008
Author: lattner
Date: Fri Nov 28 15:45:17 2008
New Revision: 60216
URL: http://llvm.org/viewvc/llvm-project?rev=60216&view=rev
Log:
Run verifyRemoved from removeInstruction when -debug is specified.
This shows the root problem behind PR3141.
Modified:
llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=60216&r1=60215&r2=60216&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Fri Nov 28 15:45:17 2008
@@ -14,6 +14,7 @@
//
//===----------------------------------------------------------------------===//
+#define DEBUG_TYPE "memdep"
#include "llvm/Analysis/MemoryDependenceAnalysis.h"
#include "llvm/Constants.h"
#include "llvm/Instructions.h"
@@ -21,11 +22,10 @@
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Support/CFG.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Debug.h"
#include "llvm/Target/TargetData.h"
#include "llvm/ADT/Statistic.h"
-#define DEBUG_TYPE "memdep"
-
using namespace llvm;
// Control the calculation of non-local dependencies by only examining the
@@ -46,35 +46,37 @@
// Register this pass...
static RegisterPass<MemoryDependenceAnalysis> X("memdep",
- "Memory Dependence Analysis", false, true);
+ "Memory Dependence Analysis", false, true);
+/// verifyRemoved - Verify that the specified instruction does not occur
+/// in our internal data structures.
void MemoryDependenceAnalysis::verifyRemoved(Instruction *D) const {
for (depMapType::const_iterator I = depGraphLocal.begin(),
E = depGraphLocal.end(); I != E; ++I) {
- assert(I->first != D);
- assert(I->second.first != D);
+ assert(I->first != D && "Inst occurs in data structures");
+ assert(I->second.first != D && "Inst occurs in data structures");
}
for (nonLocalDepMapType::const_iterator I = depGraphNonLocal.begin(),
E = depGraphNonLocal.end(); I != E; ++I) {
- assert(I->first != D);
+ assert(I->first != D && "Inst occurs in data structures");
for (DenseMap<BasicBlock*, Value*>::iterator II = I->second.begin(),
EE = I->second.end(); II != EE; ++II)
- assert(II->second != D);
+ assert(II->second != D && "Inst occurs in data structures");
}
for (reverseDepMapType::const_iterator I = reverseDep.begin(),
E = reverseDep.end(); I != E; ++I)
for (SmallPtrSet<Instruction*, 4>::const_iterator II = I->second.begin(),
EE = I->second.end(); II != EE; ++II)
- assert(*II != D);
+ assert(*II != D && "Inst occurs in data structures");
for (reverseDepMapType::const_iterator I = reverseDepNonLocal.begin(),
E = reverseDepNonLocal.end();
I != E; ++I)
for (SmallPtrSet<Instruction*, 4>::const_iterator II = I->second.begin(),
EE = I->second.end(); II != EE; ++II)
- assert(*II != D);
+ assert(*II != D && "Inst occurs in data structures");
}
/// getAnalysisUsage - Does not modify anything. It uses Alias Analysis.
@@ -88,7 +90,7 @@
/// getCallSiteDependency - Private helper for finding the local dependencies
/// of a call site.
Instruction* MemoryDependenceAnalysis::getCallSiteDependency(CallSite C,
- Instruction* start,
+ Instruction* start,
BasicBlock* block) {
std::pair<Instruction*, bool>& cachedResult =
@@ -586,4 +588,6 @@
depGraphNonLocal.erase(I);
getAnalysis<AliasAnalysis>().deleteValue(rem);
+
+ DEBUG(verifyRemoved(rem));
}
More information about the llvm-commits
mailing list