From 65b4ab9921364d27eb0c4704d8259b22b0cdc53e Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Fri, 22 Feb 2019 15:01:41 +0000 Subject: BreakCriticalEdges: Update PostDominatorTree llvm-svn: 354673 --- .../Transforms/Utils/BasicBlockUtilsTest.cpp | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp') 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 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()); +} -- cgit v1.2.3