diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-02-22 15:01:41 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-02-22 15:01:41 +0000 |
commit | 65b4ab9921364d27eb0c4704d8259b22b0cdc53e (patch) | |
tree | 6d5354819232d56e92c6c66c03e9d0acc15fdc8e /llvm/unittests/Transforms/Utils | |
parent | 6083106b1216566f189ecb6e0ae0340b61c4254a (diff) | |
download | bcm5719-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.cpp | 29 |
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()); +} |