[llvm] r373432 - Revert [GlobalOpt] Pass DTU to removeUnreachableBlocks instead of recomputing.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 2 01:32:25 PDT 2019


Author: fhahn
Date: Wed Oct  2 01:32:25 2019
New Revision: 373432

URL: http://llvm.org/viewvc/llvm-project?rev=373432&view=rev
Log:
Revert [GlobalOpt] Pass DTU to removeUnreachableBlocks instead of recomputing.

This breaks http://lab.llvm.org:8011/builders/sanitizer-windows/builds/52310

This reverts r373430 (git commit 70f70035484ba199a329f9f8d9bd67e37bc2b408)

Modified:
    llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp

Modified: llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp?rev=373432&r1=373431&r2=373432&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp Wed Oct  2 01:32:25 2019
@@ -2285,10 +2285,14 @@ OptimizeFunctions(Module &M,
     // So, remove unreachable blocks from the function, because a) there's
     // no point in analyzing them and b) GlobalOpt should otherwise grow
     // some more complicated logic to break these cycles.
+    // Removing unreachable blocks might invalidate the dominator so we
+    // recalculate it.
     if (!F->isDeclaration()) {
-      auto &DT = LookupDomTree(*F);
-      DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
-      Changed |= removeUnreachableBlocks(*F, nullptr, &DTU);
+      if (removeUnreachableBlocks(*F)) {
+        auto &DT = LookupDomTree(*F);
+        DT.recalculate(*F);
+        Changed = true;
+      }
     }
 
     Changed |= processGlobal(*F, GetTLI, LookupDomTree);




More information about the llvm-commits mailing list