Add a DEBUG() output to GVN that prints the instruction clobbering a load.
authorTorok Edwin <edwintorok@gmail.com>
Fri, 29 May 2009 09:46:03 +0000 (09:46 +0000)
committerTorok Edwin <edwintorok@gmail.com>
Fri, 29 May 2009 09:46:03 +0000 (09:46 +0000)
This is useful when trying to figure out why GVN didn't eliminate redundant
loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72565 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/GVN.cpp

index 222320f52579997cc1cd2c8d1608f21e085b84dc..946c33eea44501326da9163cdc02222d28f0e72a 100644 (file)
@@ -1158,8 +1158,18 @@ bool GVN::processLoad(LoadInst *L, SmallVectorImpl<Instruction*> &toErase) {
   MemDepResult dep = MD->getDependency(L);
   
   // If the value isn't available, don't do anything!
-  if (dep.isClobber())
+  if (dep.isClobber()) {
+    DEBUG(
+      // fast print dep, using operator<< on instruction would be too slow
+      DOUT << "GVN: load ";
+      WriteAsOperand(*DOUT.stream(), L);
+      Instruction *I = dep.getInst();
+      DOUT << " is clobbered by " << I->getOpcodeName() << " instruction ";
+      WriteAsOperand(*DOUT.stream(), I, false);
+      DOUT << "\n";
+    );
     return false;
+  }
 
   // If it is defined in another block, try harder.
   if (dep.isNonLocal())