summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Transforms/Utils
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-02-22 15:01:41 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-02-22 15:01:41 +0000
commit65b4ab9921364d27eb0c4704d8259b22b0cdc53e (patch)
tree6d5354819232d56e92c6c66c03e9d0acc15fdc8e /llvm/unittests/Transforms/Utils
parent6083106b1216566f189ecb6e0ae0340b61c4254a (diff)
downloadbcm5719-llvm-65b4ab9921364d27eb0c4704d8259b22b0cdc53e.tar.gz
bcm5719-llvm-65b4ab9921364d27eb0c4704d8259b22b0cdc53e.zip
BreakCriticalEdges: Update PostDominatorTree
llvm-svn: 354673
Diffstat (limited to 'llvm/unittests/Transforms/Utils')
-rw-r--r--llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp b/llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp
index db30837507a..2d3731c03e0 100644
--- a/llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp
+++ b/llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
+#include "llvm/Analysis/PostDominators.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Dominators.h"
@@ -49,3 +50,31 @@ TEST(BasicBlockUtils, SplitBlockPredecessors) {
SplitBlockPredecessors(&F->getEntryBlock(), {}, "split.entry", &DT);
EXPECT_TRUE(DT.verify());
}
+
+TEST(BasicBlockUtils, SplitCriticalEdge) {
+ LLVMContext C;
+
+ std::unique_ptr<Module> M = parseIR(
+ C,
+ "define void @crit_edge(i1 %cond0, i1 %cond1) {\n"
+ "entry:\n"
+ " br i1 %cond0, label %bb0, label %bb1\n"
+ "bb0:\n"
+ " br label %bb1\n"
+ "bb1:\n"
+ " br label %bb2\n"
+ "bb2:\n"
+ " ret void\n"
+ "}\n"
+ "\n"
+ );
+
+ auto *F = M->getFunction("crit_edge");
+ DominatorTree DT(*F);
+ PostDominatorTree PDT(*F);
+
+ CriticalEdgeSplittingOptions CESO(&DT, nullptr, nullptr, &PDT);
+ EXPECT_EQ(1u, SplitAllCriticalEdges(*F, CESO));
+ EXPECT_TRUE(DT.verify());
+ EXPECT_TRUE(PDT.verify());
+}
OpenPOWER on IntegriCloud