@@ -4585,10 +4585,11 @@ void OpenMPIRBuilder::emitOffloadingArraysArgument(IRBuilderBase &Builder,
4585
4585
bool ForEndCall) {
4586
4586
assert ((!ForEndCall || Info.separateBeginEndCalls ()) &&
4587
4587
" expected region end call to runtime only when end call is separate" );
4588
- auto VoidPtrTy = Type::getInt8PtrTy (M.getContext ());
4589
- auto VoidPtrPtrTy = VoidPtrTy->getPointerTo (0 );
4588
+ auto UnqualPtrTy = PointerType::getUnqual (M.getContext ());
4589
+ auto VoidPtrTy = UnqualPtrTy;
4590
+ auto VoidPtrPtrTy = UnqualPtrTy;
4590
4591
auto Int64Ty = Type::getInt64Ty (M.getContext ());
4591
- auto Int64PtrTy = Type::getInt64PtrTy (M. getContext ()) ;
4592
+ auto Int64PtrTy = UnqualPtrTy ;
4592
4593
4593
4594
if (!Info.NumberOfPtrs ) {
4594
4595
RTArgs.BasePointersArray = ConstantPointerNull::get (VoidPtrPtrTy);
@@ -4737,7 +4738,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4737
4738
// need to fill up the arrays as we do for the pointers.
4738
4739
Type *Int64Ty = Builder.getInt64Ty ();
4739
4740
SmallVector<Constant *> ConstSizes (CombinedInfo.Sizes .size (),
4740
- ConstantInt::get (Builder. getInt64Ty () , 0 ));
4741
+ ConstantInt::get (Int64Ty , 0 ));
4741
4742
SmallBitVector RuntimeSizes (CombinedInfo.Sizes .size ());
4742
4743
for (unsigned I = 0 , E = CombinedInfo.Sizes .size (); I < E; ++I) {
4743
4744
if (auto *CI = dyn_cast<Constant>(CombinedInfo.Sizes [I])) {
@@ -4746,7 +4747,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4746
4747
static_cast <std::underlying_type_t <OpenMPOffloadMappingFlags>>(
4747
4748
CombinedInfo.Types [I] &
4748
4749
OpenMPOffloadMappingFlags::OMP_MAP_NON_CONTIG))
4749
- ConstSizes[I] = ConstantInt::get (Builder. getInt64Ty () ,
4750
+ ConstSizes[I] = ConstantInt::get (Int64Ty ,
4750
4751
CombinedInfo.NonContigInfo .Dims [I]);
4751
4752
else
4752
4753
ConstSizes[I] = CI;
@@ -4780,11 +4781,9 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4780
4781
SizeArrayType, /* ArraySize = */ nullptr , " .offload_sizes" );
4781
4782
Buffer->setAlignment (OffloadSizeAlign);
4782
4783
Builder.restoreIP (CodeGenIP);
4783
- Value *GblConstPtr = Builder.CreatePointerBitCastOrAddrSpaceCast (
4784
- SizesArrayGbl, Int64Ty->getPointerTo ());
4785
4784
Builder.CreateMemCpy (
4786
4785
Buffer, M.getDataLayout ().getPrefTypeAlign (Buffer->getType ()),
4787
- GblConstPtr , OffloadSizeAlign,
4786
+ SizesArrayGbl , OffloadSizeAlign,
4788
4787
Builder.getIntN (
4789
4788
IndexSize,
4790
4789
Buffer->getAllocationSize (M.getDataLayout ())->getFixedValue ()));
@@ -4813,7 +4812,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4813
4812
Info.RTArgs .MapNamesArray = MapNamesArrayGbl;
4814
4813
} else {
4815
4814
Info.RTArgs .MapNamesArray = Constant::getNullValue (
4816
- Type::getInt8Ty (Builder.getContext ())-> getPointerTo ( ));
4815
+ PointerType::getUnqual (Builder.getContext ()));
4817
4816
}
4818
4817
4819
4818
// If there's a present map type modifier, it must not be applied to the end
@@ -4834,22 +4833,20 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4834
4833
}
4835
4834
}
4836
4835
4836
+ PointerType *PtrTy = Builder.getPtrTy ();
4837
4837
for (unsigned I = 0 ; I < Info.NumberOfPtrs ; ++I) {
4838
4838
Value *BPVal = CombinedInfo.BasePointers [I];
4839
4839
Value *BP = Builder.CreateConstInBoundsGEP2_32 (
4840
- ArrayType::get (Builder. getInt8PtrTy () , Info.NumberOfPtrs ),
4840
+ ArrayType::get (PtrTy , Info.NumberOfPtrs ),
4841
4841
Info.RTArgs .BasePointersArray , 0 , I);
4842
- BP = Builder.CreatePointerBitCastOrAddrSpaceCast (
4843
- BP, BPVal->getType ()->getPointerTo (/* AddrSpace=*/ 0 ));
4844
4842
Builder.CreateAlignedStore (
4845
- BPVal, BP, M.getDataLayout ().getPrefTypeAlign (Builder. getInt8PtrTy () ));
4843
+ BPVal, BP, M.getDataLayout ().getPrefTypeAlign (PtrTy ));
4846
4844
4847
4845
if (Info.requiresDevicePointerInfo ()) {
4848
4846
if (CombinedInfo.DevicePointers [I] == DeviceInfoTy::Pointer) {
4849
4847
CodeGenIP = Builder.saveIP ();
4850
4848
Builder.restoreIP (AllocaIP);
4851
- Info.DevicePtrInfoMap [BPVal] = {
4852
- BP, Builder.CreateAlloca (Builder.getPtrTy ())};
4849
+ Info.DevicePtrInfoMap [BPVal] = {BP, Builder.CreateAlloca (PtrTy)};
4853
4850
Builder.restoreIP (CodeGenIP);
4854
4851
assert (DeviceAddrCB &&
4855
4852
" DeviceAddrCB missing for DevicePtr code generation" );
@@ -4864,13 +4861,11 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4864
4861
4865
4862
Value *PVal = CombinedInfo.Pointers [I];
4866
4863
Value *P = Builder.CreateConstInBoundsGEP2_32 (
4867
- ArrayType::get (Builder. getInt8PtrTy () , Info.NumberOfPtrs ),
4864
+ ArrayType::get (PtrTy , Info.NumberOfPtrs ),
4868
4865
Info.RTArgs .PointersArray , 0 , I);
4869
- P = Builder.CreatePointerBitCastOrAddrSpaceCast (
4870
- P, PVal->getType ()->getPointerTo (/* AddrSpace=*/ 0 ));
4871
4866
// TODO: Check alignment correct.
4872
4867
Builder.CreateAlignedStore (
4873
- PVal, P, M.getDataLayout ().getPrefTypeAlign (Builder. getInt8PtrTy () ));
4868
+ PVal, P, M.getDataLayout ().getPrefTypeAlign (PtrTy ));
4874
4869
4875
4870
if (RuntimeSizes.test (I)) {
4876
4871
Value *S = Builder.CreateConstInBoundsGEP2_32 (
@@ -4880,14 +4875,14 @@ void OpenMPIRBuilder::emitOffloadingArrays(
4880
4875
Builder.CreateAlignedStore (
4881
4876
Builder.CreateIntCast (CombinedInfo.Sizes [I], Int64Ty,
4882
4877
/* isSigned=*/ true ),
4883
- S, M.getDataLayout ().getPrefTypeAlign (Builder. getInt8PtrTy () ));
4878
+ S, M.getDataLayout ().getPrefTypeAlign (PtrTy ));
4884
4879
}
4885
4880
// Fill up the mapper array.
4886
4881
unsigned IndexSize = M.getDataLayout ().getIndexSizeInBits (0 );
4887
- Value *MFunc = ConstantPointerNull::get (Builder. getInt8PtrTy () );
4882
+ Value *MFunc = ConstantPointerNull::get (PtrTy );
4888
4883
if (CustomMapperCB)
4889
4884
if (Value *CustomMFunc = CustomMapperCB (I))
4890
- MFunc = Builder.CreatePointerCast (CustomMFunc, Builder. getInt8PtrTy () );
4885
+ MFunc = Builder.CreatePointerCast (CustomMFunc, PtrTy );
4891
4886
Value *MAddr = Builder.CreateInBoundsGEP (
4892
4887
MappersArray->getAllocatedType (), MappersArray,
4893
4888
{Builder.getIntN (IndexSize, 0 ), Builder.getIntN (IndexSize, I)});
@@ -5483,7 +5478,7 @@ OpenMPIRBuilder::createOffloadMapnames(SmallVectorImpl<llvm::Constant *> &Names,
5483
5478
std::string VarName) {
5484
5479
llvm::Constant *MapNamesArrayInit = llvm::ConstantArray::get (
5485
5480
llvm::ArrayType::get (
5486
- llvm::Type::getInt8Ty (M.getContext ())-> getPointerTo ( ), Names.size ()),
5481
+ llvm::PointerType::getUnqual (M.getContext ()), Names.size ()),
5487
5482
Names);
5488
5483
auto *MapNamesArrayGlobal = new llvm::GlobalVariable (
5489
5484
M, MapNamesArrayInit->getType (),
0 commit comments