@@ -6380,6 +6380,11 @@ TEST_F(OpenMPIRBuilderTest, TargetRegion) {
63806380
63816381TEST_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
65776588TEST_F (OpenMPIRBuilderTest, TargetRegionSPMD) {
@@ -6776,6 +6787,11 @@ TEST_F(OpenMPIRBuilderTest, TargetRegionDeviceSPMD) {
67766787
67776788TEST_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
69536972TEST_F (OpenMPIRBuilderTest, CreateTask) {
0 commit comments