aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp')
-rw-r--r--llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
index fdbe8df..5c415ca 100644
--- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -5856,6 +5856,23 @@ TEST_F(OpenMPIRBuilderTest, TargetDataRegion) {
EXPECT_TRUE(TargetDataCall->getOperand(2)->getType()->isIntegerTy(32));
EXPECT_TRUE(TargetDataCall->getOperand(8)->getType()->isPointerTy());
+ // Check that BodyGenCB is still made when IsTargetDevice is set to true.
+ OMPBuilder.Config.setIsTargetDevice(true);
+ bool CheckDevicePassBodyGen = false;
+ auto BodyTargetCB = [&](InsertPointTy CodeGenIP, BodyGenTy BodyGenType) {
+ CheckDevicePassBodyGen = true;
+ Builder.restoreIP(CodeGenIP);
+ CallInst *TargetDataCall =
+ dyn_cast<CallInst>(BB->back().getPrevNode()->getPrevNode());
+ // Make sure no begin_mapper call is present for device pass.
+ EXPECT_EQ(TargetDataCall, nullptr);
+ return Builder.saveIP();
+ };
+ Builder.restoreIP(OMPBuilder.createTargetData(
+ Loc, AllocaIP, Builder.saveIP(), Builder.getInt64(DeviceID),
+ /* IfCond= */ nullptr, Info, GenMapInfoCB, nullptr, BodyTargetCB));
+ EXPECT_TRUE(CheckDevicePassBodyGen);
+
Builder.CreateRetVoid();
EXPECT_FALSE(verifyModule(*M, &errs()));
}