[llvm-commits] [llvm] r61350 - /llvm/trunk/lib/Transforms/Scalar/GVN.cpp

Bill Wendling isanbard at gmail.com
Mon Dec 22 14:14:08 PST 2008


Author: void
Date: Mon Dec 22 16:14:07 2008
New Revision: 61350

URL: http://llvm.org/viewvc/llvm-project?rev=61350&view=rev
Log:
Add verification that deleted instruction isn't hiding in the PHI map.

Modified:
    llvm/trunk/lib/Transforms/Scalar/GVN.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=61350&r1=61349&r2=61350&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Mon Dec 22 16:14:07 2008
@@ -40,11 +40,11 @@
 #include <cstdio>
 using namespace llvm;
 
-STATISTIC(NumGVNInstr, "Number of instructions deleted");
-STATISTIC(NumGVNLoad, "Number of loads deleted");
-STATISTIC(NumGVNPRE, "Number of instructions PRE'd");
+STATISTIC(NumGVNInstr,  "Number of instructions deleted");
+STATISTIC(NumGVNLoad,   "Number of loads deleted");
+STATISTIC(NumGVNPRE,    "Number of instructions PRE'd");
 STATISTIC(NumGVNBlocks, "Number of blocks merged");
-STATISTIC(NumPRELoad, "Number of loads PRE'd");
+STATISTIC(NumPRELoad,   "Number of loads PRE'd");
 
 static cl::opt<bool> EnablePRE("enable-pre",
                                cl::init(true), cl::Hidden);
@@ -1581,6 +1581,7 @@
       // are not value numbered precisely.
       if (!success) {
         delete PREInstr;
+        DEBUG(verifyRemoved(PREInstr));
         continue;
       }
       
@@ -1659,4 +1660,16 @@
 /// internal data structures.
 void GVN::verifyRemoved(const Instruction *I) const {
   VN.verifyRemoved(I);
+
+  // Walk through the PHI map to make sure the instruction isn't hiding in there
+  // somewhere.
+  for (PhiMapType::iterator
+         II = phiMap.begin(), IE = phiMap.end(); II != IE; ++II) {
+    assert(II->first != I && "Inst is still a key in PHI map!");
+
+    for (SmallPtrSet<Instruction*, 4>::iterator
+           SI = II->second.begin(), SE = II->second.end(); SI != SE; ++SI) {
+      assert(*SI != I && "Inst is still a value in PHI map!");
+    }
+  }
 }





More information about the llvm-commits mailing list