Skip to content

Commit e6e9a87

Browse files
committed
Drop some typed pointer handling
Differential Revision: https://reviews.llvm.org/D156739
1 parent 408cc94 commit e6e9a87

File tree

6 files changed

+65
-89
lines changed

6 files changed

+65
-89
lines changed

llvm/lib/Analysis/InstructionSimplify.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6047,9 +6047,8 @@ static Value *simplifyRelativeLoad(Constant *Ptr, Constant *Offset,
60476047
if (!IsConstantOffsetFromGlobal(Ptr, PtrSym, PtrOffset, DL))
60486048
return nullptr;
60496049

6050-
Type *Int8PtrTy = Type::getInt8PtrTy(Ptr->getContext());
6050+
Type *UnqualPtrTy = PointerType::getUnqual(Ptr->getContext());
60516051
Type *Int32Ty = Type::getInt32Ty(Ptr->getContext());
6052-
Type *Int32PtrTy = Int32Ty->getPointerTo();
60536052
Type *Int64Ty = Type::getInt64Ty(Ptr->getContext());
60546053

60556054
auto *OffsetConstInt = dyn_cast<ConstantInt>(Offset);
@@ -6061,8 +6060,7 @@ static Value *simplifyRelativeLoad(Constant *Ptr, Constant *Offset,
60616060
return nullptr;
60626061

60636062
Constant *C = ConstantExpr::getGetElementPtr(
6064-
Int32Ty, ConstantExpr::getBitCast(Ptr, Int32PtrTy),
6065-
ConstantInt::get(Int64Ty, OffsetInt / 4));
6063+
Int32Ty, Ptr, ConstantInt::get(Int64Ty, OffsetInt / 4));
60666064
Constant *Loaded = ConstantFoldLoadFromConstPtr(C, Int32Ty, DL);
60676065
if (!Loaded)
60686066
return nullptr;
@@ -6093,7 +6091,7 @@ static Value *simplifyRelativeLoad(Constant *Ptr, Constant *Offset,
60936091
PtrSym != LoadedRHSSym || PtrOffset != LoadedRHSOffset)
60946092
return nullptr;
60956093

6096-
return ConstantExpr::getBitCast(LoadedLHSPtr, Int8PtrTy);
6094+
return ConstantExpr::getBitCast(LoadedLHSPtr, UnqualPtrTy);
60976095
}
60986096

60996097
static Value *simplifyUnaryIntrinsic(Function *F, Value *Op0,

llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4585,10 +4585,11 @@ void OpenMPIRBuilder::emitOffloadingArraysArgument(IRBuilderBase &Builder,
45854585
bool ForEndCall) {
45864586
assert((!ForEndCall || Info.separateBeginEndCalls()) &&
45874587
"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;
45904591
auto Int64Ty = Type::getInt64Ty(M.getContext());
4591-
auto Int64PtrTy = Type::getInt64PtrTy(M.getContext());
4592+
auto Int64PtrTy = UnqualPtrTy;
45924593

45934594
if (!Info.NumberOfPtrs) {
45944595
RTArgs.BasePointersArray = ConstantPointerNull::get(VoidPtrPtrTy);
@@ -4737,7 +4738,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
47374738
// need to fill up the arrays as we do for the pointers.
47384739
Type *Int64Ty = Builder.getInt64Ty();
47394740
SmallVector<Constant *> ConstSizes(CombinedInfo.Sizes.size(),
4740-
ConstantInt::get(Builder.getInt64Ty(), 0));
4741+
ConstantInt::get(Int64Ty, 0));
47414742
SmallBitVector RuntimeSizes(CombinedInfo.Sizes.size());
47424743
for (unsigned I = 0, E = CombinedInfo.Sizes.size(); I < E; ++I) {
47434744
if (auto *CI = dyn_cast<Constant>(CombinedInfo.Sizes[I])) {
@@ -4746,7 +4747,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
47464747
static_cast<std::underlying_type_t<OpenMPOffloadMappingFlags>>(
47474748
CombinedInfo.Types[I] &
47484749
OpenMPOffloadMappingFlags::OMP_MAP_NON_CONTIG))
4749-
ConstSizes[I] = ConstantInt::get(Builder.getInt64Ty(),
4750+
ConstSizes[I] = ConstantInt::get(Int64Ty,
47504751
CombinedInfo.NonContigInfo.Dims[I]);
47514752
else
47524753
ConstSizes[I] = CI;
@@ -4780,11 +4781,9 @@ void OpenMPIRBuilder::emitOffloadingArrays(
47804781
SizeArrayType, /* ArraySize = */ nullptr, ".offload_sizes");
47814782
Buffer->setAlignment(OffloadSizeAlign);
47824783
Builder.restoreIP(CodeGenIP);
4783-
Value *GblConstPtr = Builder.CreatePointerBitCastOrAddrSpaceCast(
4784-
SizesArrayGbl, Int64Ty->getPointerTo());
47854784
Builder.CreateMemCpy(
47864785
Buffer, M.getDataLayout().getPrefTypeAlign(Buffer->getType()),
4787-
GblConstPtr, OffloadSizeAlign,
4786+
SizesArrayGbl, OffloadSizeAlign,
47884787
Builder.getIntN(
47894788
IndexSize,
47904789
Buffer->getAllocationSize(M.getDataLayout())->getFixedValue()));
@@ -4813,7 +4812,7 @@ void OpenMPIRBuilder::emitOffloadingArrays(
48134812
Info.RTArgs.MapNamesArray = MapNamesArrayGbl;
48144813
} else {
48154814
Info.RTArgs.MapNamesArray = Constant::getNullValue(
4816-
Type::getInt8Ty(Builder.getContext())->getPointerTo());
4815+
PointerType::getUnqual(Builder.getContext()));
48174816
}
48184817

48194818
// If there's a present map type modifier, it must not be applied to the end
@@ -4834,22 +4833,20 @@ void OpenMPIRBuilder::emitOffloadingArrays(
48344833
}
48354834
}
48364835

4836+
PointerType *PtrTy = Builder.getPtrTy();
48374837
for (unsigned I = 0; I < Info.NumberOfPtrs; ++I) {
48384838
Value *BPVal = CombinedInfo.BasePointers[I];
48394839
Value *BP = Builder.CreateConstInBoundsGEP2_32(
4840-
ArrayType::get(Builder.getInt8PtrTy(), Info.NumberOfPtrs),
4840+
ArrayType::get(PtrTy, Info.NumberOfPtrs),
48414841
Info.RTArgs.BasePointersArray, 0, I);
4842-
BP = Builder.CreatePointerBitCastOrAddrSpaceCast(
4843-
BP, BPVal->getType()->getPointerTo(/*AddrSpace=*/0));
48444842
Builder.CreateAlignedStore(
4845-
BPVal, BP, M.getDataLayout().getPrefTypeAlign(Builder.getInt8PtrTy()));
4843+
BPVal, BP, M.getDataLayout().getPrefTypeAlign(PtrTy));
48464844

48474845
if (Info.requiresDevicePointerInfo()) {
48484846
if (CombinedInfo.DevicePointers[I] == DeviceInfoTy::Pointer) {
48494847
CodeGenIP = Builder.saveIP();
48504848
Builder.restoreIP(AllocaIP);
4851-
Info.DevicePtrInfoMap[BPVal] = {
4852-
BP, Builder.CreateAlloca(Builder.getPtrTy())};
4849+
Info.DevicePtrInfoMap[BPVal] = {BP, Builder.CreateAlloca(PtrTy)};
48534850
Builder.restoreIP(CodeGenIP);
48544851
assert(DeviceAddrCB &&
48554852
"DeviceAddrCB missing for DevicePtr code generation");
@@ -4864,13 +4861,11 @@ void OpenMPIRBuilder::emitOffloadingArrays(
48644861

48654862
Value *PVal = CombinedInfo.Pointers[I];
48664863
Value *P = Builder.CreateConstInBoundsGEP2_32(
4867-
ArrayType::get(Builder.getInt8PtrTy(), Info.NumberOfPtrs),
4864+
ArrayType::get(PtrTy, Info.NumberOfPtrs),
48684865
Info.RTArgs.PointersArray, 0, I);
4869-
P = Builder.CreatePointerBitCastOrAddrSpaceCast(
4870-
P, PVal->getType()->getPointerTo(/*AddrSpace=*/0));
48714866
// TODO: Check alignment correct.
48724867
Builder.CreateAlignedStore(
4873-
PVal, P, M.getDataLayout().getPrefTypeAlign(Builder.getInt8PtrTy()));
4868+
PVal, P, M.getDataLayout().getPrefTypeAlign(PtrTy));
48744869

48754870
if (RuntimeSizes.test(I)) {
48764871
Value *S = Builder.CreateConstInBoundsGEP2_32(
@@ -4880,14 +4875,14 @@ void OpenMPIRBuilder::emitOffloadingArrays(
48804875
Builder.CreateAlignedStore(
48814876
Builder.CreateIntCast(CombinedInfo.Sizes[I], Int64Ty,
48824877
/*isSigned=*/true),
4883-
S, M.getDataLayout().getPrefTypeAlign(Builder.getInt8PtrTy()));
4878+
S, M.getDataLayout().getPrefTypeAlign(PtrTy));
48844879
}
48854880
// Fill up the mapper array.
48864881
unsigned IndexSize = M.getDataLayout().getIndexSizeInBits(0);
4887-
Value *MFunc = ConstantPointerNull::get(Builder.getInt8PtrTy());
4882+
Value *MFunc = ConstantPointerNull::get(PtrTy);
48884883
if (CustomMapperCB)
48894884
if (Value *CustomMFunc = CustomMapperCB(I))
4890-
MFunc = Builder.CreatePointerCast(CustomMFunc, Builder.getInt8PtrTy());
4885+
MFunc = Builder.CreatePointerCast(CustomMFunc, PtrTy);
48914886
Value *MAddr = Builder.CreateInBoundsGEP(
48924887
MappersArray->getAllocatedType(), MappersArray,
48934888
{Builder.getIntN(IndexSize, 0), Builder.getIntN(IndexSize, I)});
@@ -5483,7 +5478,7 @@ OpenMPIRBuilder::createOffloadMapnames(SmallVectorImpl<llvm::Constant *> &Names,
54835478
std::string VarName) {
54845479
llvm::Constant *MapNamesArrayInit = llvm::ConstantArray::get(
54855480
llvm::ArrayType::get(
5486-
llvm::Type::getInt8Ty(M.getContext())->getPointerTo(), Names.size()),
5481+
llvm::PointerType::getUnqual(M.getContext()), Names.size()),
54875482
Names);
54885483
auto *MapNamesArrayGlobal = new llvm::GlobalVariable(
54895484
M, MapNamesArrayInit->getType(),

llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2263,11 +2263,11 @@ bool HexagonLoopIdiomRecognize::processCopyingStore(Loop *CurLoop,
22632263

22642264
if (DestVolatile) {
22652265
Type *Int32Ty = Type::getInt32Ty(Ctx);
2266-
Type *Int32PtrTy = Type::getInt32PtrTy(Ctx);
2266+
Type *PtrTy = PointerType::get(Ctx, 0);
22672267
Type *VoidTy = Type::getVoidTy(Ctx);
22682268
Module *M = Func->getParent();
22692269
FunctionCallee Fn = M->getOrInsertFunction(
2270-
HexagonVolatileMemcpyName, VoidTy, Int32PtrTy, Int32PtrTy, Int32Ty);
2270+
HexagonVolatileMemcpyName, VoidTy, PtrTy, PtrTy, Int32Ty);
22712271

22722272
const SCEV *OneS = SE->getConstant(Int32Ty, 1);
22732273
const SCEV *BECount32 = SE->getTruncateOrZeroExtend(BECount, Int32Ty);
@@ -2278,13 +2278,8 @@ bool HexagonLoopIdiomRecognize::processCopyingStore(Loop *CurLoop,
22782278
if (Value *Simp = simplifyInstruction(In, {*DL, TLI, DT}))
22792279
NumWords = Simp;
22802280

2281-
Value *Op0 = (StoreBasePtr->getType() == Int32PtrTy)
2282-
? StoreBasePtr
2283-
: CondBuilder.CreateBitCast(StoreBasePtr, Int32PtrTy);
2284-
Value *Op1 = (LoadBasePtr->getType() == Int32PtrTy)
2285-
? LoadBasePtr
2286-
: CondBuilder.CreateBitCast(LoadBasePtr, Int32PtrTy);
2287-
NewCall = CondBuilder.CreateCall(Fn, {Op0, Op1, NumWords});
2281+
NewCall = CondBuilder.CreateCall(Fn,
2282+
{StoreBasePtr, LoadBasePtr, NumWords});
22882283
} else {
22892284
NewCall = CondBuilder.CreateMemMove(
22902285
StoreBasePtr, SI->getAlign(), LoadBasePtr, LI->getAlign(), NumBytes);

llvm/lib/Transforms/IPO/AttributorAttributes.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,6 @@ static Value *constructPointer(Type *ResTy, Type *PtrElemTy, Value *Ptr,
313313

314314
// If an offset is left we use byte-wise adjustment.
315315
if (IntOffset != 0) {
316-
Ptr = IRB.CreateBitCast(Ptr, IRB.getInt8PtrTy());
317316
Ptr = IRB.CreateGEP(IRB.getInt8Ty(), Ptr, IRB.getInt(IntOffset),
318317
GEPName + ".b" + Twine(IntOffset.getZExtValue()));
319318
}

llvm/lib/Transforms/IPO/GlobalOpt.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1905,10 +1905,8 @@ static void RemovePreallocated(Function *F) {
19051905
Builder.SetInsertPoint(InsertBefore);
19061906
auto *Alloca =
19071907
Builder.CreateAlloca(ArgType, AddressSpace, nullptr, "paarg");
1908-
auto *BitCast = Builder.CreateBitCast(
1909-
Alloca, Type::getInt8PtrTy(M->getContext()), UseCall->getName());
1910-
ArgAllocas[AllocArgIndex] = BitCast;
1911-
AllocaReplacement = BitCast;
1908+
ArgAllocas[AllocArgIndex] = Alloca;
1909+
AllocaReplacement = Alloca;
19121910
}
19131911

19141912
UseCall->replaceAllUsesWith(AllocaReplacement);
@@ -2117,19 +2115,18 @@ static void setUsedInitializer(GlobalVariable &V,
21172115
const auto *VEPT = cast<PointerType>(VAT->getArrayElementType());
21182116

21192117
// Type of pointer to the array of pointers.
2120-
PointerType *Int8PtrTy =
2121-
Type::getInt8PtrTy(V.getContext(), VEPT->getAddressSpace());
2118+
PointerType *PtrTy =
2119+
PointerType::get(V.getContext(), VEPT->getAddressSpace());
21222120

21232121
SmallVector<Constant *, 8> UsedArray;
21242122
for (GlobalValue *GV : Init) {
2125-
Constant *Cast =
2126-
ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, Int8PtrTy);
2123+
Constant *Cast = ConstantExpr::getPointerBitCastOrAddrSpaceCast(GV, PtrTy);
21272124
UsedArray.push_back(Cast);
21282125
}
21292126

21302127
// Sort to get deterministic order.
21312128
array_pod_sort(UsedArray.begin(), UsedArray.end(), compareNames);
2132-
ArrayType *ATy = ArrayType::get(Int8PtrTy, UsedArray.size());
2129+
ArrayType *ATy = ArrayType::get(PtrTy, UsedArray.size());
21332130

21342131
Module *M = V.getParent();
21352132
V.removeFromParent();

0 commit comments

Comments
 (0)