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.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
index 82ab4c9..5679d26 100644
--- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -5122,16 +5122,18 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
IRBuilder<> Builder(BB);
OpenMPIRBuilder::LocationDescription Loc({Builder.saveIP(), DL});
+ LoadInst *Value = nullptr;
StoreInst *TargetStore = nullptr;
llvm::SmallVector<llvm::Value *, 2> CapturedArgs = {
- Constant::getIntegerValue(Type::getInt32Ty(Ctx), APInt(32, 0)),
+ Constant::getNullValue(Type::getInt32PtrTy(Ctx)),
Constant::getNullValue(Type::getInt32PtrTy(Ctx))};
auto BodyGenCB = [&](OpenMPIRBuilder::InsertPointTy AllocaIP,
OpenMPIRBuilder::InsertPointTy CodeGenIP)
-> OpenMPIRBuilder::InsertPointTy {
Builder.restoreIP(CodeGenIP);
- TargetStore = Builder.CreateStore(CapturedArgs[0], CapturedArgs[1]);
+ Value = Builder.CreateLoad(Type::getInt32Ty(Ctx), CapturedArgs[0]);
+ TargetStore = Builder.CreateStore(Value, CapturedArgs[1]);
return Builder.saveIP();
};
@@ -5155,7 +5157,7 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
EXPECT_TRUE(OutlinedFn->hasWeakODRLinkage());
EXPECT_EQ(OutlinedFn->arg_size(), 2U);
EXPECT_EQ(OutlinedFn->getName(), "__omp_offloading_1_2_parent_l3");
- EXPECT_TRUE(OutlinedFn->getArg(0)->getType()->isIntegerTy(32));
+ EXPECT_TRUE(OutlinedFn->getArg(0)->getType()->isPointerTy());
EXPECT_TRUE(OutlinedFn->getArg(1)->getType()->isPointerTy());
// Check entry block
@@ -5180,8 +5182,22 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
// Check user code block
auto *UserCodeBlock = EntryBlockBranch->getSuccessor(0);
EXPECT_EQ(UserCodeBlock->getName(), "user_code.entry");
- EXPECT_EQ(UserCodeBlock->getFirstNonPHI(), TargetStore);
-
+ auto *Alloca1 = UserCodeBlock->getFirstNonPHI();
+ EXPECT_TRUE(isa<AllocaInst>(Alloca1));
+ auto *Store1 = Alloca1->getNextNode();
+ EXPECT_TRUE(isa<StoreInst>(Store1));
+ auto *Load1 = Store1->getNextNode();
+ EXPECT_TRUE(isa<LoadInst>(Load1));
+ auto *Alloca2 = Load1->getNextNode();
+ EXPECT_TRUE(isa<AllocaInst>(Alloca2));
+ auto *Store2 = Alloca2->getNextNode();
+ EXPECT_TRUE(isa<StoreInst>(Store2));
+ auto *Load2 = Store2->getNextNode();
+ EXPECT_TRUE(isa<LoadInst>(Load2));
+
+ auto *Value1 = Load2->getNextNode();
+ EXPECT_EQ(Value1, Value);
+ EXPECT_EQ(Value1->getNextNode(), TargetStore);
auto *Deinit = TargetStore->getNextNode();
EXPECT_NE(Deinit, nullptr);