[SLP] put verifyFunction call behind EXPENSIVE_CHECKS
authorSanjay Patel <spatel@rotateright.com>
Sun, 10 Jan 2021 17:31:05 +0000 (12:31 -0500)
committerSanjay Patel <spatel@rotateright.com>
Sun, 10 Jan 2021 17:32:21 +0000 (12:32 -0500)
A severe compile-time slowdown from this call is noted in:
https://llvm.org/PR48689
My naive fix was to put it under LLVM_DEBUG ( 267ff79 ),
but that's not limiting in the way we want.
This is a quick fix (or we could just remove the call completely
and rely on some later pass to discover potentially wrong IR?).
A bigger/better fix would be to improve/limit verifyFunction()
as noted in:
https://llvm.org/PR47712

Differential Revision: https://reviews.llvm.org/D94328

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

index f124dd8..d0b6b43 100644 (file)
@@ -2499,7 +2499,11 @@ BoUpSLP::~BoUpSLP() {
            "trying to erase instruction with users.");
     Pair.getFirst()->eraseFromParent();
   }
-  LLVM_DEBUG(verifyFunction(*F));
+#ifdef EXPENSIVE_CHECKS
+  // If we could guarantee that this call is not extremely slow, we could
+  // remove the ifdef limitation (see PR47712).
+  assert(!verifyFunction(*F, %dbgs()));
+#endif
 }
 
 void BoUpSLP::eraseInstructions(ArrayRef<Value *> AV) {