diff options
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r-- | llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | 124 |
1 files changed, 30 insertions, 94 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp index ca848e98..5f7e322 100644 --- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp +++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp @@ -603,8 +603,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelSimple) { unsigned NumPrivatizedVars = 0; unsigned NumFinalizationPoints = 0; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumBodiesGenerated; Builder.restoreIP(AllocaIP); @@ -618,10 +617,6 @@ TEST_F(OpenMPIRBuilderTest, ParallelSimple) { Instruction *ThenTerm, *ElseTerm; SplitBlockAndInsertIfThenElse(Cmp, CodeGenIP.getBlock()->getTerminator(), &ThenTerm, &ElseTerm); - - Builder.SetInsertPoint(ThenTerm); - Builder.CreateBr(&ContinuationIP); - ThenTerm->eraseFromParent(); }; auto PrivCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, @@ -711,8 +706,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelNested) { unsigned NumOuterBodiesGenerated = 0; unsigned NumFinalizationPoints = 0; - auto InnerBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto InnerBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumInnerBodiesGenerated; }; @@ -731,8 +725,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelNested) { auto FiniCB = [&](InsertPointTy CodeGenIP) { ++NumFinalizationPoints; }; - auto OuterBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto OuterBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumOuterBodiesGenerated; Builder.restoreIP(CodeGenIP); BasicBlock *CGBB = CodeGenIP.getBlock(); @@ -807,8 +800,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelNested2Inner) { unsigned NumOuterBodiesGenerated = 0; unsigned NumFinalizationPoints = 0; - auto InnerBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto InnerBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumInnerBodiesGenerated; }; @@ -827,8 +819,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelNested2Inner) { auto FiniCB = [&](InsertPointTy CodeGenIP) { ++NumFinalizationPoints; }; - auto OuterBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto OuterBodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumOuterBodiesGenerated; Builder.restoreIP(CodeGenIP); BasicBlock *CGBB = CodeGenIP.getBlock(); @@ -920,8 +911,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelIfCond) { unsigned NumPrivatizedVars = 0; unsigned NumFinalizationPoints = 0; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumBodiesGenerated; Builder.restoreIP(AllocaIP); @@ -933,12 +923,8 @@ TEST_F(OpenMPIRBuilderTest, ParallelIfCond) { Builder.CreateLoad(PrivAI->getAllocatedType(), PrivAI, "local.use"); Value *Cmp = Builder.CreateICmpNE(F->arg_begin(), PrivLoad); Instruction *ThenTerm, *ElseTerm; - SplitBlockAndInsertIfThenElse(Cmp, CodeGenIP.getBlock()->getTerminator(), - &ThenTerm, &ElseTerm); - - Builder.SetInsertPoint(ThenTerm); - Builder.CreateBr(&ContinuationIP); - ThenTerm->eraseFromParent(); + SplitBlockAndInsertIfThenElse(Cmp, &*Builder.GetInsertPoint(), &ThenTerm, + &ElseTerm); }; auto PrivCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, @@ -1046,8 +1032,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelCancelBarrier) { unsigned NumFinalizationPoints = 0; CallInst *CheckedBarrier = nullptr; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationIP) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumBodiesGenerated; Builder.restoreIP(CodeGenIP); @@ -1178,8 +1163,7 @@ TEST_F(OpenMPIRBuilderTest, ParallelForwardAsPointers) { Value *StructPtrVal = Builder.CreateCall(RetStructPtrFunc); Instruction *Internal; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationBB) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { IRBuilder<>::InsertPointGuard Guard(Builder); Builder.restoreIP(CodeGenIP); Internal = Builder.CreateCall(TakeI32Func, I32Val); @@ -2309,11 +2293,9 @@ TEST_F(OpenMPIRBuilderTest, MasterDirective) { AllocaInst *PrivAI = nullptr; BasicBlock *EntryBB = nullptr; - BasicBlock *ExitBB = nullptr; BasicBlock *ThenBB = nullptr; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { if (AllocaIP.isSet()) Builder.restoreIP(AllocaIP); else @@ -2328,7 +2310,6 @@ TEST_F(OpenMPIRBuilderTest, MasterDirective) { Builder.restoreIP(CodeGenIP); // collect some info for checks later - ExitBB = FiniBB.getUniqueSuccessor(); ThenBB = Builder.GetInsertBlock(); EntryBB = ThenBB->getUniquePredecessor(); @@ -2350,7 +2331,7 @@ TEST_F(OpenMPIRBuilderTest, MasterDirective) { BranchInst *EntryBr = cast<BranchInst>(EntryBB->getTerminator()); EXPECT_TRUE(EntryBr->isConditional()); EXPECT_EQ(EntryBr->getSuccessor(0), ThenBB); - EXPECT_EQ(ThenBB->getUniqueSuccessor(), ExitBB); + BasicBlock *ExitBB = ThenBB->getUniqueSuccessor(); EXPECT_EQ(EntryBr->getSuccessor(1), ExitBB); CmpInst *CondInst = cast<CmpInst>(EntryBr->getCondition()); @@ -2389,11 +2370,9 @@ TEST_F(OpenMPIRBuilderTest, MaskedDirective) { AllocaInst *PrivAI = nullptr; BasicBlock *EntryBB = nullptr; - BasicBlock *ExitBB = nullptr; BasicBlock *ThenBB = nullptr; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { if (AllocaIP.isSet()) Builder.restoreIP(AllocaIP); else @@ -2408,7 +2387,6 @@ TEST_F(OpenMPIRBuilderTest, MaskedDirective) { Builder.restoreIP(CodeGenIP); // collect some info for checks later - ExitBB = FiniBB.getUniqueSuccessor(); ThenBB = Builder.GetInsertBlock(); EntryBB = ThenBB->getUniquePredecessor(); @@ -2432,7 +2410,7 @@ TEST_F(OpenMPIRBuilderTest, MaskedDirective) { BranchInst *EntryBr = cast<BranchInst>(EntryBB->getTerminator()); EXPECT_TRUE(EntryBr->isConditional()); EXPECT_EQ(EntryBr->getSuccessor(0), ThenBB); - EXPECT_EQ(ThenBB->getUniqueSuccessor(), ExitBB); + BasicBlock *ExitBB = ThenBB->getUniqueSuccessor(); EXPECT_EQ(EntryBr->getSuccessor(1), ExitBB); CmpInst *CondInst = cast<CmpInst>(EntryBr->getCondition()); @@ -2470,18 +2448,11 @@ TEST_F(OpenMPIRBuilderTest, CriticalDirective) { AllocaInst *PrivAI = Builder.CreateAlloca(F->arg_begin()->getType()); - BasicBlock *EntryBB = nullptr; - - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { - // collect some info for checks later - EntryBB = FiniBB.getUniquePredecessor(); - + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { // actual start for bodyCB llvm::BasicBlock *CodeGenIPBB = CodeGenIP.getBlock(); llvm::Instruction *CodeGenIPInst = &*CodeGenIP.getPoint(); EXPECT_EQ(CodeGenIPBB->getTerminator(), CodeGenIPInst); - EXPECT_EQ(EntryBB, CodeGenIPBB); // body begin Builder.restoreIP(CodeGenIP); @@ -2495,13 +2466,11 @@ TEST_F(OpenMPIRBuilderTest, CriticalDirective) { BasicBlock *IPBB = IP.getBlock(); EXPECT_NE(IPBB->end(), IP.getPoint()); }; + BasicBlock *EntryBB = Builder.GetInsertBlock(); Builder.restoreIP(OMPBuilder.createCritical(Builder, BodyGenCB, FiniCB, "testCRT", nullptr)); - Value *EntryBBTI = EntryBB->getTerminator(); - EXPECT_EQ(EntryBBTI, nullptr); - CallInst *CriticalEntryCI = nullptr; for (auto &EI : *EntryBB) { Instruction *cur = &EI; @@ -2720,16 +2689,10 @@ TEST_F(OpenMPIRBuilderTest, OrderedDirectiveThreads) { AllocaInst *PrivAI = Builder.CreateAlloca(F->arg_begin()->getType(), nullptr, "priv.inst"); - BasicBlock *EntryBB = nullptr; - - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { - EntryBB = FiniBB.getUniquePredecessor(); - + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { llvm::BasicBlock *CodeGenIPBB = CodeGenIP.getBlock(); llvm::Instruction *CodeGenIPInst = &*CodeGenIP.getPoint(); EXPECT_EQ(CodeGenIPBB->getTerminator(), CodeGenIPInst); - EXPECT_EQ(EntryBB, CodeGenIPBB); Builder.restoreIP(CodeGenIP); Builder.CreateStore(F->arg_begin(), PrivAI); @@ -2744,6 +2707,7 @@ TEST_F(OpenMPIRBuilderTest, OrderedDirectiveThreads) { }; // Test for "#omp ordered [threads]" + BasicBlock *EntryBB = Builder.GetInsertBlock(); Builder.restoreIP( OMPBuilder.createOrderedThreadsSimd(Builder, BodyGenCB, FiniCB, true)); @@ -2796,16 +2760,10 @@ TEST_F(OpenMPIRBuilderTest, OrderedDirectiveSimd) { AllocaInst *PrivAI = Builder.CreateAlloca(F->arg_begin()->getType(), nullptr, "priv.inst"); - BasicBlock *EntryBB = nullptr; - - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { - EntryBB = FiniBB.getUniquePredecessor(); - + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { llvm::BasicBlock *CodeGenIPBB = CodeGenIP.getBlock(); llvm::Instruction *CodeGenIPInst = &*CodeGenIP.getPoint(); EXPECT_EQ(CodeGenIPBB->getTerminator(), CodeGenIPInst); - EXPECT_EQ(EntryBB, CodeGenIPBB); Builder.restoreIP(CodeGenIP); Builder.CreateStore(F->arg_begin(), PrivAI); @@ -2820,6 +2778,7 @@ TEST_F(OpenMPIRBuilderTest, OrderedDirectiveSimd) { }; // Test for "#omp ordered simd" + BasicBlock *EntryBB = Builder.GetInsertBlock(); Builder.restoreIP( OMPBuilder.createOrderedThreadsSimd(Builder, BodyGenCB, FiniCB, false)); @@ -2903,11 +2862,9 @@ TEST_F(OpenMPIRBuilderTest, SingleDirective) { AllocaInst *PrivAI = nullptr; BasicBlock *EntryBB = nullptr; - BasicBlock *ExitBB = nullptr; BasicBlock *ThenBB = nullptr; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { if (AllocaIP.isSet()) Builder.restoreIP(AllocaIP); else @@ -2922,7 +2879,6 @@ TEST_F(OpenMPIRBuilderTest, SingleDirective) { Builder.restoreIP(CodeGenIP); // collect some info for checks later - ExitBB = FiniBB.getUniqueSuccessor(); ThenBB = Builder.GetInsertBlock(); EntryBB = ThenBB->getUniquePredecessor(); @@ -2945,7 +2901,7 @@ TEST_F(OpenMPIRBuilderTest, SingleDirective) { BranchInst *EntryBr = cast<BranchInst>(EntryBB->getTerminator()); EXPECT_TRUE(EntryBr->isConditional()); EXPECT_EQ(EntryBr->getSuccessor(0), ThenBB); - EXPECT_EQ(ThenBB->getUniqueSuccessor(), ExitBB); + BasicBlock *ExitBB = ThenBB->getUniqueSuccessor(); EXPECT_EQ(EntryBr->getSuccessor(1), ExitBB); CmpInst *CondInst = cast<CmpInst>(EntryBr->getCondition()); @@ -2996,11 +2952,9 @@ TEST_F(OpenMPIRBuilderTest, SingleDirectiveNowait) { AllocaInst *PrivAI = nullptr; BasicBlock *EntryBB = nullptr; - BasicBlock *ExitBB = nullptr; BasicBlock *ThenBB = nullptr; - auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { + auto BodyGenCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { if (AllocaIP.isSet()) Builder.restoreIP(AllocaIP); else @@ -3015,7 +2969,6 @@ TEST_F(OpenMPIRBuilderTest, SingleDirectiveNowait) { Builder.restoreIP(CodeGenIP); // collect some info for checks later - ExitBB = FiniBB.getUniqueSuccessor(); ThenBB = Builder.GetInsertBlock(); EntryBB = ThenBB->getUniquePredecessor(); @@ -3038,7 +2991,7 @@ TEST_F(OpenMPIRBuilderTest, SingleDirectiveNowait) { BranchInst *EntryBr = cast<BranchInst>(EntryBB->getTerminator()); EXPECT_TRUE(EntryBr->isConditional()); EXPECT_EQ(EntryBr->getSuccessor(0), ThenBB); - EXPECT_EQ(ThenBB->getUniqueSuccessor(), ExitBB); + BasicBlock *ExitBB = ThenBB->getUniqueSuccessor(); EXPECT_EQ(EntryBr->getSuccessor(1), ExitBB); CmpInst *CondInst = cast<CmpInst>(EntryBr->getCondition()); @@ -3718,8 +3671,7 @@ TEST_F(OpenMPIRBuilderTest, CreateReductions) { // xor of thread-id; // and store the result in global variables. InsertPointTy BodyIP, BodyAllocaIP; - auto BodyGenCB = [&](InsertPointTy InnerAllocaIP, InsertPointTy CodeGenIP, - BasicBlock &ContinuationBB) { + auto BodyGenCB = [&](InsertPointTy InnerAllocaIP, InsertPointTy CodeGenIP) { IRBuilderBase::InsertPointGuard Guard(Builder); Builder.restoreIP(CodeGenIP); @@ -3958,8 +3910,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTwoReductions) { InsertPointTy FirstBodyIP, FirstBodyAllocaIP; auto FirstBodyGenCB = [&](InsertPointTy InnerAllocaIP, - InsertPointTy CodeGenIP, - BasicBlock &ContinuationBB) { + InsertPointTy CodeGenIP) { IRBuilderBase::InsertPointGuard Guard(Builder); Builder.restoreIP(CodeGenIP); @@ -3979,8 +3930,7 @@ TEST_F(OpenMPIRBuilderTest, CreateTwoReductions) { InsertPointTy SecondBodyIP, SecondBodyAllocaIP; auto SecondBodyGenCB = [&](InsertPointTy InnerAllocaIP, - InsertPointTy CodeGenIP, - BasicBlock &ContinuationBB) { + InsertPointTy CodeGenIP) { IRBuilderBase::InsertPointGuard Guard(Builder); Builder.restoreIP(CodeGenIP); @@ -4126,11 +4076,7 @@ TEST_F(OpenMPIRBuilderTest, CreateSectionsSimple) { llvm::SmallVector<BasicBlock *, 4> CaseBBs; auto FiniCB = [&](InsertPointTy IP) {}; - auto SectionCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { - Builder.restoreIP(CodeGenIP); - Builder.CreateBr(&FiniBB); - }; + auto SectionCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) {}; SectionCBVector.push_back(SectionCB); auto PrivCB = [](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, @@ -4158,8 +4104,6 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { llvm::SmallVector<BasicBlock *, 4> CaseBBs; BasicBlock *SwitchBB = nullptr; - BasicBlock *ForExitBB = nullptr; - BasicBlock *ForIncBB = nullptr; AllocaInst *PrivAI = nullptr; SwitchInst *Switch = nullptr; @@ -4173,8 +4117,7 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { EXPECT_NE(IPBB->end(), IP.getPoint()); }; - auto SectionCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, - BasicBlock &FiniBB) { + auto SectionCB = [&](InsertPointTy AllocaIP, InsertPointTy CodeGenIP) { ++NumBodiesGenerated; CaseBBs.push_back(CodeGenIP.getBlock()); SwitchBB = CodeGenIP.getBlock()->getSinglePredecessor(); @@ -4183,9 +4126,6 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { Value *PrivLoad = Builder.CreateLoad(F->arg_begin()->getType(), PrivAI, "local.alloca"); Builder.CreateICmpNE(F->arg_begin(), PrivLoad); - Builder.CreateBr(&FiniBB); - ForIncBB = - CodeGenIP.getBlock()->getSinglePredecessor()->getSingleSuccessor(); }; auto PrivCB = [](InsertPointTy AllocaIP, InsertPointTy CodeGenIP, llvm::Value &, llvm::Value &Val, llvm::Value *&ReplVal) { @@ -4204,7 +4144,7 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { // Switch BB's predecessor is loop condition BB, whose successor at index 1 is // loop's exit BB - ForExitBB = + BasicBlock *ForExitBB = SwitchBB->getSinglePredecessor()->getTerminator()->getSuccessor(1); EXPECT_NE(ForExitBB, nullptr); @@ -4213,7 +4153,6 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { EXPECT_EQ(F, OutlinedFn); EXPECT_FALSE(verifyModule(*M, &errs())); EXPECT_EQ(OutlinedFn->arg_size(), 1U); - EXPECT_EQ(OutlinedFn->getBasicBlockList().size(), size_t(11)); BasicBlock *LoopPreheaderBB = OutlinedFn->getEntryBlock().getSingleSuccessor(); @@ -4254,13 +4193,10 @@ TEST_F(OpenMPIRBuilderTest, CreateSections) { EXPECT_EQ(isa<SwitchInst>(SwitchBB->getTerminator()), true); Switch = cast<SwitchInst>(SwitchBB->getTerminator()); EXPECT_EQ(Switch->getNumCases(), 2U); - EXPECT_NE(ForIncBB, nullptr); - EXPECT_EQ(Switch->getSuccessor(0), ForIncBB); EXPECT_EQ(CaseBBs.size(), 2U); for (auto *&CaseBB : CaseBBs) { EXPECT_EQ(CaseBB->getParent(), OutlinedFn); - EXPECT_EQ(CaseBB->getSingleSuccessor(), ForExitBB); } ASSERT_EQ(NumBodiesGenerated, 2U); |