]> granicus.if.org Git - llvm/commitdiff
Revert http://reviews.llvm.org/D19926 as it breaks tests.
authorDehao Chen <dehao@google.com>
Thu, 5 May 2016 20:47:53 +0000 (20:47 +0000)
committerDehao Chen <dehao@google.com>
Thu, 5 May 2016 20:47:53 +0000 (20:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268681 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/Scalar/SimplifyCFG.h
lib/Transforms/Scalar/SimplifyCFGPass.cpp
lib/Transforms/Utils/AddDiscriminators.cpp
test/Transforms/AddDiscriminators/multiple.ll
test/Transforms/AddDiscriminators/oneline.ll

index 96b18a12558bfe9b63614ce6deb1afe0b135cb51..53f427a7d19ac6c194254f2e16cc13b524263ac7 100644 (file)
@@ -39,17 +39,6 @@ public:
   PreservedAnalyses run(Function &F, AnalysisManager<Function> &AM);
 };
 
-struct CFGSimplifyPass : public FunctionPass {
-  static char ID; // Pass identification, replacement for typeid
-  unsigned BonusInstThreshold;
-  std::function<bool(const Function &)> PredicateFtor;
-
-  CFGSimplifyPass(int T = -1,
-                  std::function<bool(const Function &)> Ftor = nullptr);
-  bool runOnFunction(Function &F) override;
-
-  void getAnalysisUsage(AnalysisUsage &AU) const override;
-};
 }
 
 #endif
index 97c5f183dcba94f09841bfa4e343193e935cf7d8..e69333369471431061bfa828d279363586a139e2 100644 (file)
@@ -196,31 +196,35 @@ PreservedAnalyses SimplifyCFGPass::run(Function &F,
   return PreservedAnalyses::all();
 }
 
-CFGSimplifyPass::CFGSimplifyPass(int T,
-            std::function<bool(const Function &)> Ftor)
-    : FunctionPass(ID), PredicateFtor(Ftor) {
-  BonusInstThreshold = (T == -1) ? UserBonusInstThreshold : unsigned(T);
-  initializeCFGSimplifyPassPass(*PassRegistry::getPassRegistry());
-}
-
-bool CFGSimplifyPass::runOnFunction(Function &F) {
-  if (PredicateFtor && !PredicateFtor(F))
-    return false;
-
-  if (skipFunction(F))
-    return false;
-
-  AssumptionCache *AC =
-      &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
-  const TargetTransformInfo &TTI =
-      getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
-  return simplifyFunctionCFG(F, TTI, AC, BonusInstThreshold);
-}
+namespace {
+struct CFGSimplifyPass : public FunctionPass {
+  static char ID; // Pass identification, replacement for typeid
+  unsigned BonusInstThreshold;
+  std::function<bool(const Function &)> PredicateFtor;
+
+  CFGSimplifyPass(int T = -1,
+                  std::function<bool(const Function &)> Ftor = nullptr)
+      : FunctionPass(ID), PredicateFtor(Ftor) {
+    BonusInstThreshold = (T == -1) ? UserBonusInstThreshold : unsigned(T);
+    initializeCFGSimplifyPassPass(*PassRegistry::getPassRegistry());
+  }
+  bool runOnFunction(Function &F) override {
+    if (skipFunction(F) || (PredicateFtor && !PredicateFtor(F)))
+      return false;
+
+    AssumptionCache *AC =
+        &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
+    const TargetTransformInfo &TTI =
+        getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
+    return simplifyFunctionCFG(F, TTI, AC, BonusInstThreshold);
+  }
 
-void CFGSimplifyPass::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.addRequired<AssumptionCacheTracker>();
-  AU.addRequired<TargetTransformInfoWrapperPass>();
-  AU.addPreserved<GlobalsAAWrapperPass>();
+  void getAnalysisUsage(AnalysisUsage &AU) const override {
+    AU.addRequired<AssumptionCacheTracker>();
+    AU.addRequired<TargetTransformInfoWrapperPass>();
+    AU.addPreserved<GlobalsAAWrapperPass>();
+  }
+};
 }
 
 char CFGSimplifyPass::ID = 0;
index 6c4db99efe3644c0a213155e2989763a614fca57..2a6b6eb1b0b0c8745ef79ad329d0fc0ee19120e9 100644 (file)
@@ -67,7 +67,6 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Transforms/Scalar.h"
-#include "llvm/Transforms/Scalar/SimplifyCFG.h"
 
 using namespace llvm;
 
@@ -80,10 +79,6 @@ struct AddDiscriminators : public FunctionPass {
     initializeAddDiscriminatorsPass(*PassRegistry::getPassRegistry());
   }
 
-  void getAnalysisUsage(AnalysisUsage &AU) const override {
-    AU.addRequired<CFGSimplifyPass>();
-  }
-
   bool runOnFunction(Function &F) override;
 };
 } // end anonymous namespace
@@ -91,7 +86,6 @@ struct AddDiscriminators : public FunctionPass {
 char AddDiscriminators::ID = 0;
 INITIALIZE_PASS_BEGIN(AddDiscriminators, "add-discriminators",
                       "Add DWARF path discriminators", false, false)
-INITIALIZE_PASS_DEPENDENCY(CFGSimplifyPass)
 INITIALIZE_PASS_END(AddDiscriminators, "add-discriminators",
                     "Add DWARF path discriminators", false, false)
 
index c7306dc8f2e4b0156c9847d6c008b66e87a48632..bacef89756b4bb99a0f1ba8d286f542a436c9e8d 100644 (file)
@@ -21,18 +21,20 @@ entry:
 
 if.then:                                          ; preds = %entry
   %1 = load i32, i32* %i.addr, align 4, !dbg !10
+; CHECK:  %1 = load i32, i32* %i.addr, align 4, !dbg ![[THEN:[0-9]+]]
 
   store i32 %1, i32* %x, align 4, !dbg !10
-; CHECK:  store i32 %1, i32* %x, align 4, !dbg ![[THEN:[0-9]+]]
+; CHECK:  store i32 %1, i32* %x, align 4, !dbg ![[THEN]]
 
   br label %if.end, !dbg !10
 ; CHECK:  br label %if.end, !dbg ![[THEN]]
 
 if.else:                                          ; preds = %entry
   %2 = load i32, i32* %i.addr, align 4, !dbg !10
+; CHECK:  %2 = load i32, i32* %i.addr, align 4, !dbg ![[ELSE:[0-9]+]]
 
   %sub = sub nsw i32 0, %2, !dbg !10
-; CHECK:  %sub = sub nsw i32 0, %1, !dbg ![[ELSE:[0-9]+]]
+; CHECK:  %sub = sub nsw i32 0, %2, !dbg ![[ELSE]]
 
   store i32 %sub, i32* %x, align 4, !dbg !10
 ; CHECK:  store i32 %sub, i32* %x, align 4, !dbg ![[ELSE]]
index f0ac5a8d86d285794df6b4c8cc8e5875a984eb13..f07fa09ce0e72d39d274ee27c56ff735ce5229e0 100644 (file)
@@ -21,20 +21,27 @@ define i32 @_Z3fooi(i32 %i) #0 !dbg !4 {
 
 ; <label>:5                                       ; preds = %0
   %6 = load i32, i32* %2, align 4, !dbg !23, !tbaa !13
+; CHECK:  %6 = load i32, i32* %2, align 4, !dbg ![[THEN1:[0-9]+]],{{.*}}
+
   %7 = icmp eq i32 %6, 5, !dbg !24
+; CHECK:  %7 = icmp eq i32 %6, 5, !dbg ![[THEN2:[0-9]+]]
+
   br i1 %7, label %8, label %9, !dbg !25
+; CHECK:  br i1 %7, label %8, label %9, !dbg ![[THEN3:[0-9]+]]
 
 ; <label>:8                                       ; preds = %5, %0
   store i32 100, i32* %1, align 4, !dbg !26
-; CHECK: store i32 100, i32* %1, align 4, !dbg ![[THEN:[0-9]+]]
+; CHECK: store i32 100, i32* %1, align 4, !dbg ![[ELSE:[0-9]+]]
 
   br label %10, !dbg !26
+; CHECK: br label %10, !dbg ![[ELSE]]
 
 ; <label>:9                                       ; preds = %5
   store i32 99, i32* %1, align 4, !dbg !27
-; CHECK: store i32 99, i32* %1, align 4, !dbg ![[ELSE:[0-9]+]]
+; CHECK: store i32 99, i32* %1, align 4, !dbg ![[COMBINE:[0-9]+]]
 
   br label %10, !dbg !27
+; CHECK: br label %10, !dbg ![[COMBINE]]
 
 ; <label>:10                                      ; preds = %9, %8
   %11 = load i32, i32* %1, align 4, !dbg !28
@@ -80,7 +87,11 @@ attributes #1 = { nounwind readnone }
 !27 = !DILocation(line: 2, column: 42, scope: !20)
 !28 = !DILocation(line: 3, column: 1, scope: !4)
 
-; CHECK: ![[THEN]] = !DILocation(line: 2, column: 25, scope: ![[THENBLOCK:[0-9]+]])
+; CHECK: ![[THEN1]] = !DILocation(line: 2, column: 17, scope: ![[THENBLOCK:[0-9]+]])
 ; CHECK: ![[THENBLOCK]] = !DILexicalBlockFile({{.*}} discriminator: 1)
-; CHECK: ![[ELSE]] = !DILocation(line: 2, column: 42, scope: ![[ELSEBLOCK:[0-9]+]])
+; CHECK: ![[THEN2]] = !DILocation(line: 2, column: 19, scope: ![[THENBLOCK]])
+; CHECK: ![[THEN3]] = !DILocation(line: 2, column: 7, scope: ![[THENBLOCK]])
+; CHECK: ![[ELSE]] = !DILocation(line: 2, column: 25, scope: ![[ELSEBLOCK:[0-9]+]])
 ; CHECK: ![[ELSEBLOCK]] = !DILexicalBlockFile({{.*}} discriminator: 2)
+; CHECK: ![[COMBINE]] = !DILocation(line: 2, column: 42, scope: ![[COMBINEBLOCK:[0-9]+]])
+; CHECK: ![[COMBINEBLOCK]] = !DILexicalBlockFile({{.*}} discriminator: 3)