@@ -698,7 +698,8 @@ static void EmitOMPAggregateInit(CodeGenFunction &CGF, Address DestAddr,
698
698
SrcBegin = SrcAddr.getPointer();
699
699
llvm::Value *DestBegin = DestAddr.getPointer();
700
700
// Cast from pointer to array type to pointer to single element.
701
- llvm::Value *DestEnd = CGF.Builder.CreateGEP(DestBegin, NumElements);
701
+ llvm::Value *DestEnd =
702
+ CGF.Builder.CreateGEP(DestAddr.getElementType(), DestBegin, NumElements);
702
703
// The basic structure here is a while-do loop.
703
704
llvm::BasicBlock *BodyBB = CGF.createBasicBlock("omp.arrayinit.body");
704
705
llvm::BasicBlock *DoneBB = CGF.createBasicBlock("omp.arrayinit.done");
@@ -1012,13 +1013,14 @@ Address ReductionCodeGen::adjustPrivateAddress(CodeGenFunction &CGF, unsigned N,
1012
1013
LValue BaseLValue =
1013
1014
loadToBegin(CGF, OrigVD->getType(), SharedAddresses[N].first.getType(),
1014
1015
OriginalBaseLValue);
1016
+ Address SharedAddr = SharedAddresses[N].first.getAddress(CGF);
1015
1017
llvm::Value *Adjustment = CGF.Builder.CreatePtrDiff(
1016
- BaseLValue.getPointer(CGF), SharedAddresses[N].first. getPointer(CGF ));
1018
+ BaseLValue.getPointer(CGF), SharedAddr. getPointer());
1017
1019
llvm::Value *PrivatePointer =
1018
1020
CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
1019
- PrivateAddr.getPointer(),
1020
- SharedAddresses[N].first.getAddress(CGF).getType());
1021
- llvm::Value *Ptr = CGF.Builder.CreateGEP( PrivatePointer, Adjustment);
1021
+ PrivateAddr.getPointer(), SharedAddr.getType());
1022
+ llvm::Value *Ptr = CGF.Builder.CreateGEP(
1023
+ SharedAddr.getElementType(), PrivatePointer, Adjustment);
1022
1024
return castToBase(CGF, OrigVD->getType(),
1023
1025
SharedAddresses[N].first.getType(),
1024
1026
OriginalBaseLValue.getAddress(CGF).getType(),
@@ -4474,7 +4476,8 @@ CGOpenMPRuntime::emitTaskInit(CodeGenFunction &CGF, SourceLocation Loc,
4474
4476
std::tie(Addr, Size) = getPointerAndSize(CGF, E);
4475
4477
llvm::Value *Idx = CGF.EmitLoadOfScalar(PosLVal, E->getExprLoc());
4476
4478
LValue Base = CGF.MakeAddrLValue(
4477
- Address(CGF.Builder.CreateGEP(AffinitiesArray.getPointer(), Idx),
4479
+ Address(CGF.Builder.CreateGEP(AffinitiesArray.getElementType(),
4480
+ AffinitiesArray.getPointer(), Idx),
4478
4481
AffinitiesArray.getAlignment()),
4479
4482
KmpTaskAffinityInfoTy);
4480
4483
// affs[i].base_addr = &<Affinities[i].second>;
@@ -4641,7 +4644,7 @@ CGOpenMPRuntime::getDepobjElements(CodeGenFunction &CGF, LValue DepobjLVal,
4641
4644
Base = CGF.MakeAddrLValue(Addr, KmpDependInfoTy, Base.getBaseInfo(),
4642
4645
Base.getTBAAInfo());
4643
4646
llvm::Value *DepObjAddr = CGF.Builder.CreateGEP(
4644
- Addr.getPointer(),
4647
+ Addr.getElementType(), Addr. getPointer(),
4645
4648
llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
4646
4649
LValue NumDepsBase = CGF.MakeAddrLValue(
4647
4650
Address(DepObjAddr, Addr.getAlignment()), KmpDependInfoTy,
@@ -4681,7 +4684,8 @@ static void emitDependData(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4681
4684
LValue &PosLVal = *Pos.get<LValue *>();
4682
4685
llvm::Value *Idx = CGF.EmitLoadOfScalar(PosLVal, E->getExprLoc());
4683
4686
Base = CGF.MakeAddrLValue(
4684
- Address(CGF.Builder.CreateGEP(DependenciesArray.getPointer(), Idx),
4687
+ Address(CGF.Builder.CreateGEP(DependenciesArray.getElementType(),
4688
+ DependenciesArray.getPointer(), Idx),
4685
4689
DependenciesArray.getAlignment()),
4686
4690
KmpDependInfoTy);
4687
4691
}
@@ -4741,7 +4745,7 @@ emitDepobjElementsSizes(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4741
4745
Base = CGF.MakeAddrLValue(Addr, KmpDependInfoTy, Base.getBaseInfo(),
4742
4746
Base.getTBAAInfo());
4743
4747
llvm::Value *DepObjAddr = CGF.Builder.CreateGEP(
4744
- Addr.getPointer(),
4748
+ Addr.getElementType(), Addr. getPointer(),
4745
4749
llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
4746
4750
LValue NumDepsBase = CGF.MakeAddrLValue(
4747
4751
Address(DepObjAddr, Addr.getAlignment()), KmpDependInfoTy,
@@ -4802,7 +4806,7 @@ static void emitDepobjElements(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4802
4806
4803
4807
// Get number of elements in a single depobj.
4804
4808
llvm::Value *DepObjAddr = CGF.Builder.CreateGEP(
4805
- Addr.getPointer(),
4809
+ Addr.getElementType(), Addr. getPointer(),
4806
4810
llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
4807
4811
LValue NumDepsBase = CGF.MakeAddrLValue(
4808
4812
Address(DepObjAddr, Addr.getAlignment()), KmpDependInfoTy,
@@ -4819,7 +4823,8 @@ static void emitDepobjElements(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4819
4823
CGF.Builder.CreateIntCast(NumDeps, CGF.SizeTy, /*isSigned=*/false));
4820
4824
llvm::Value *Pos = CGF.EmitLoadOfScalar(PosLVal, E->getExprLoc());
4821
4825
Address DepAddr =
4822
- Address(CGF.Builder.CreateGEP(DependenciesArray.getPointer(), Pos),
4826
+ Address(CGF.Builder.CreateGEP(DependenciesArray.getElementType(),
4827
+ DependenciesArray.getPointer(), Pos),
4823
4828
DependenciesArray.getAlignment());
4824
4829
CGF.Builder.CreateMemCpy(DepAddr, Base.getAddress(CGF), Size);
4825
4830
@@ -5047,7 +5052,7 @@ void CGOpenMPRuntime::emitDestroyClause(CodeGenFunction &CGF, LValue DepobjLVal,
5047
5052
Address Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5048
5053
Base.getAddress(CGF), CGF.ConvertTypeForMem(KmpDependInfoPtrTy));
5049
5054
llvm::Value *DepObjAddr = CGF.Builder.CreateGEP(
5050
- Addr.getPointer(),
5055
+ Addr.getElementType(), Addr. getPointer(),
5051
5056
llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
5052
5057
DepObjAddr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(DepObjAddr,
5053
5058
CGF.VoidPtrTy);
@@ -5077,7 +5082,8 @@ void CGOpenMPRuntime::emitUpdateClause(CodeGenFunction &CGF, LValue DepobjLVal,
5077
5082
5078
5083
Address Begin = Base.getAddress(CGF);
5079
5084
// Cast from pointer to array type to pointer to single element.
5080
- llvm::Value *End = CGF.Builder.CreateGEP(Begin.getPointer(), NumDeps);
5085
+ llvm::Value *End = CGF.Builder.CreateGEP(
5086
+ Begin.getElementType(), Begin.getPointer(), NumDeps);
5081
5087
// The basic structure here is a while-do loop.
5082
5088
llvm::BasicBlock *BodyBB = CGF.createBasicBlock("omp.body");
5083
5089
llvm::BasicBlock *DoneBB = CGF.createBasicBlock("omp.done");
@@ -5340,7 +5346,8 @@ static void EmitOMPAggregateReduction(
5340
5346
llvm::Value *RHSBegin = RHSAddr.getPointer();
5341
5347
llvm::Value *LHSBegin = LHSAddr.getPointer();
5342
5348
// Cast from pointer to array type to pointer to single element.
5343
- llvm::Value *LHSEnd = CGF.Builder.CreateGEP(LHSBegin, NumElements);
5349
+ llvm::Value *LHSEnd =
5350
+ CGF.Builder.CreateGEP(LHSAddr.getElementType(), LHSBegin, NumElements);
5344
5351
// The basic structure here is a while-do loop.
5345
5352
llvm::BasicBlock *BodyBB = CGF.createBasicBlock("omp.arraycpy.body");
5346
5353
llvm::BasicBlock *DoneBB = CGF.createBasicBlock("omp.arraycpy.done");
@@ -9747,7 +9754,8 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
9747
9754
Size, MapperCGF.Builder.getInt64(ElementSize.getQuantity()));
9748
9755
llvm::Value *PtrBegin = MapperCGF.Builder.CreateBitCast(
9749
9756
BeginIn, CGM.getTypes().ConvertTypeForMem(PtrTy));
9750
- llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(PtrBegin, Size);
9757
+ llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(
9758
+ PtrBegin->getType()->getPointerElementType(), PtrBegin, Size);
9751
9759
llvm::Value *MapType = MapperCGF.EmitLoadOfScalar(
9752
9760
MapperCGF.GetAddrOfLocalVar(&TypeArg), /*Volatile=*/false,
9753
9761
C.getPointerType(Int64Ty), Loc);
0 commit comments