diff options
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r-- | llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp index b7a060b..c13570d 100644 --- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp +++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp @@ -7852,4 +7852,28 @@ TEST_F(OpenMPIRBuilderTest, splitBB) { EXPECT_TRUE(DL == AllocaBB->getTerminator()->getStableDebugLoc()); } +TEST_F(OpenMPIRBuilderTest, spliceBBWithEmptyBB) { + OpenMPIRBuilder OMPBuilder(*M); + OMPBuilder.Config.IsTargetDevice = false; + OMPBuilder.initialize(); + F->setName("func"); + IRBuilder<> Builder(BB); + + // Test calling spliceBB with an empty Block (but having trailing debug + // records). + DIBuilder DIB(*M); + DISubprogram *SP = F->getSubprogram(); + DIType *VoidPtrTy = + DIB.createQualifiedType(dwarf::DW_TAG_pointer_type, nullptr); + DILocalVariable *Var = DIB.createParameterVariable( + SP, "test", /*ArgNo*/ 1, SP->getFile(), /*LineNo=*/0, VoidPtrTy); + DIB.insertDeclare(F->getArg(0), Var, DIB.createExpression(), DL, + Builder.GetInsertPoint()); + BasicBlock *New = BasicBlock::Create(Ctx, "", F); + spliceBB(Builder.saveIP(), New, true, DL); + Instruction *Terminator = BB->getTerminator(); + EXPECT_NE(Terminator, nullptr); + EXPECT_FALSE(Terminator->getDbgRecordRange().empty()); +} + } // namespace |