Skip to content

Commit 3456a35

Browse files
authored
[OpenMP][OMPIRBuilder][Test] Fix allocations being in incorrect address sapce for verifier (llvm#1907)
2 parents 52b4e0f + e861ad8 commit 3456a35

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6380,6 +6380,11 @@ TEST_F(OpenMPIRBuilderTest, TargetRegion) {
63806380

63816381
TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
63826382
M->setTargetTriple(Triple("amdgcn-amd-amdhsa"));
6383+
std::string oldDLStr = M->getDataLayoutStr();
6384+
M->setDataLayout("e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:"
6385+
"32:32-p7:160:256:256:32-p8:128:128-p9:192:256:256:32-i64:"
6386+
"64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-"
6387+
"v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9");
63836388
OpenMPIRBuilder OMPBuilder(*M);
63846389
OMPBuilder.setConfig(
63856390
OpenMPIRBuilderConfig(true, false, false, false, false, false, false));
@@ -6472,7 +6477,7 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
64726477
OMPBuilder.finalize();
64736478

64746479
// Check outlined function
6475-
//XFAIL: EXPECT_FALSE(verifyModule(*M, &errs()));
6480+
EXPECT_FALSE(verifyModule(*M, &errs()));
64766481
EXPECT_NE(TargetStore, nullptr);
64776482
Function *OutlinedFn = TargetStore->getFunction();
64786483
EXPECT_NE(F, OutlinedFn);
@@ -6497,19 +6502,24 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
64976502
EXPECT_NE(Alloca1, nullptr);
64986503

64996504
EXPECT_TRUE(isa<AllocaInst>(Alloca1));
6500-
auto *Store1 = Alloca1->getNextNode();
6505+
auto *AsCast1 = Alloca1->getNextNode();
6506+
EXPECT_TRUE(isa<AddrSpaceCastInst>(AsCast1));
6507+
auto *Store1 = AsCast1->getNextNode();
65016508
EXPECT_TRUE(isa<StoreInst>(Store1));
65026509
auto *Alloca2 = Store1->getNextNode();
65036510
EXPECT_TRUE(isa<AllocaInst>(Alloca2));
6504-
auto *Store2 = Alloca2->getNextNode();
6511+
auto *AsCast2 = Alloca2->getNextNode();
6512+
EXPECT_TRUE(isa<AddrSpaceCastInst>(AsCast2));
6513+
auto *Store2 = AsCast2->getNextNode();
65056514
EXPECT_TRUE(isa<StoreInst>(Store2));
65066515

65076516
auto *InitCall = dyn_cast<CallInst>(Store2->getNextNode());
65086517
EXPECT_NE(InitCall, nullptr);
65096518
EXPECT_EQ(InitCall->getCalledFunction()->getName(), "__kmpc_target_init");
65106519
EXPECT_EQ(InitCall->arg_size(), 2U);
6511-
EXPECT_TRUE(isa<GlobalVariable>(InitCall->getArgOperand(0)));
6512-
auto *KernelEnvGV = cast<GlobalVariable>(InitCall->getArgOperand(0));
6520+
EXPECT_TRUE(isa<GlobalVariable>(InitCall->getArgOperand(0)->stripPointerCasts()));
6521+
auto *KernelEnvGV =
6522+
cast<GlobalVariable>(InitCall->getArgOperand(0)->stripPointerCasts());
65136523
EXPECT_TRUE(isa<ConstantStruct>(KernelEnvGV->getInitializer()));
65146524
auto *KernelEnvC = cast<ConstantStruct>(KernelEnvGV->getInitializer());
65156525
EXPECT_TRUE(isa<ConstantStruct>(KernelEnvC->getAggregateElement(0U)));
@@ -6565,13 +6575,14 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDevice) {
65656575
EXPECT_TRUE(isa<ConstantArray>(UsedInit));
65666576
auto *UsedInitData = cast<ConstantArray>(UsedInit);
65676577
EXPECT_EQ(1U, UsedInitData->getNumOperands());
6568-
Constant *ExecMode = UsedInitData->getOperand(0);
6578+
Constant *ExecMode = UsedInitData->getOperand(0)->stripPointerCasts();
65696579
EXPECT_TRUE(isa<GlobalVariable>(ExecMode));
65706580
Constant *ExecModeValue = cast<GlobalVariable>(ExecMode)->getInitializer();
65716581
EXPECT_NE(ExecModeValue, nullptr);
65726582
EXPECT_TRUE(isa<ConstantInt>(ExecModeValue));
65736583
EXPECT_EQ(OMP_TGT_EXEC_MODE_GENERIC,
65746584
cast<ConstantInt>(ExecModeValue)->getZExtValue());
6585+
M->setDataLayout(oldDLStr);
65756586
}
65766587

65776588
TEST_F(OpenMPIRBuilderTest, TargetRegionSPMD) {
@@ -6776,6 +6787,11 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDeviceSPMD) {
67766787

67776788
TEST_F(OpenMPIRBuilderTest, ConstantAllocaRaise) {
67786789
M->setTargetTriple(Triple("amdgcn-amd-amdhsa"));
6790+
std::string oldDLStr = M->getDataLayoutStr();
6791+
M->setDataLayout("e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:"
6792+
"32:32-p7:160:256:256:32-p8:128:128-p9:192:256:256:32-i64:"
6793+
"64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-"
6794+
"v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9");
67796795
OpenMPIRBuilder OMPBuilder(*M);
67806796
OMPBuilder.setConfig(
67816797
OpenMPIRBuilderConfig(true, false, false, false, false, false, false));
@@ -6868,7 +6884,7 @@ TEST_F(OpenMPIRBuilderTest, ConstantAllocaRaise) {
68686884
OMPBuilder.finalize();
68696885

68706886
// Check outlined function
6871-
// XFAIL: EXPECT_FALSE(verifyModule(*M, &errs()));
6887+
EXPECT_FALSE(verifyModule(*M, &errs()));
68726888
EXPECT_NE(TargetStore, nullptr);
68736889
Function *OutlinedFn = TargetStore->getFunction();
68746890
EXPECT_NE(F, OutlinedFn);
@@ -6894,15 +6910,17 @@ TEST_F(OpenMPIRBuilderTest, ConstantAllocaRaise) {
68946910
// inappropriately with our alloca movement.
68956911
auto *Alloca2 = Alloca1->getNextNode();
68966912
EXPECT_TRUE(isa<AllocaInst>(Alloca2));
6897-
auto *Store2 = Alloca2->getNextNode();
6913+
auto *AsCast1 = Alloca2->getNextNode();
6914+
EXPECT_TRUE(isa<AddrSpaceCastInst>(AsCast1));
6915+
auto *Store2 = AsCast1->getNextNode();
68986916
EXPECT_TRUE(isa<StoreInst>(Store2));
68996917

69006918
auto *InitCall = dyn_cast<CallInst>(Store2->getNextNode());
69016919
EXPECT_NE(InitCall, nullptr);
69026920
EXPECT_EQ(InitCall->getCalledFunction()->getName(), "__kmpc_target_init");
69036921
EXPECT_EQ(InitCall->arg_size(), 2U);
6904-
EXPECT_TRUE(isa<GlobalVariable>(InitCall->getArgOperand(0)));
6905-
auto *KernelEnvGV = cast<GlobalVariable>(InitCall->getArgOperand(0));
6922+
EXPECT_TRUE(isa<GlobalVariable>(InitCall->getArgOperand(0)->stripPointerCasts()));
6923+
auto *KernelEnvGV = cast<GlobalVariable>(InitCall->getArgOperand(0)->stripPointerCasts());
69066924
EXPECT_TRUE(isa<ConstantStruct>(KernelEnvGV->getInitializer()));
69076925
auto *KernelEnvC = cast<ConstantStruct>(KernelEnvGV->getInitializer());
69086926
EXPECT_TRUE(isa<ConstantStruct>(KernelEnvC->getAggregateElement(0U)));
@@ -6948,6 +6966,7 @@ TEST_F(OpenMPIRBuilderTest, ConstantAllocaRaise) {
69486966
auto *ExitBlock = EntryBlockBranch->getSuccessor(1);
69496967
EXPECT_EQ(ExitBlock->getName(), "worker.exit");
69506968
EXPECT_TRUE(isa<ReturnInst>(ExitBlock->getFirstNonPHIIt()));
6969+
M->setDataLayout(oldDLStr);
69516970
}
69526971

69536972
TEST_F(OpenMPIRBuilderTest, CreateTask) {

0 commit comments

Comments
 (0)