Skip to content

Commit be160bb

Browse files
committed
[IR] Remove unnecessary bitcasts from pointer to pointer
1 parent 6df9dc8 commit be160bb

File tree

5 files changed

+8
-30
lines changed

5 files changed

+8
-30
lines changed

llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1954,10 +1954,8 @@ instCombineLD1GatherIndex(InstCombiner &IC, IntrinsicInst &II) {
19541954
Align Alignment =
19551955
BasePtr->getPointerAlignment(II.getDataLayout());
19561956

1957-
Type *VecPtrTy = PointerType::getUnqual(II.getContext());
19581957
Value *Ptr = IC.Builder.CreateGEP(cast<VectorType>(Ty)->getElementType(),
19591958
BasePtr, IndexBase);
1960-
Ptr = IC.Builder.CreateBitCast(Ptr, VecPtrTy);
19611959
CallInst *MaskedLoad =
19621960
IC.Builder.CreateMaskedLoad(Ty, Ptr, Alignment, Mask, PassThru);
19631961
MaskedLoad->takeName(&II);
@@ -1986,9 +1984,6 @@ instCombineST1ScatterIndex(InstCombiner &IC, IntrinsicInst &II) {
19861984

19871985
Value *Ptr = IC.Builder.CreateGEP(cast<VectorType>(Ty)->getElementType(),
19881986
BasePtr, IndexBase);
1989-
Type *VecPtrTy = PointerType::getUnqual(Val->getContext());
1990-
Ptr = IC.Builder.CreateBitCast(Ptr, VecPtrTy);
1991-
19921987
(void)IC.Builder.CreateMaskedStore(Val, Ptr, Alignment, Mask);
19931988

19941989
return IC.eraseInstFromFunction(II);

llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,20 +1529,18 @@ void DevirtModule::applyICallBranchFunnel(VTableSlotInfo &SlotInfo,
15291529
FunctionType *NewFT =
15301530
FunctionType::get(CB.getFunctionType()->getReturnType(), NewArgs,
15311531
CB.getFunctionType()->isVarArg());
1532-
PointerType *NewFTPtr = PointerType::getUnqual(CB.getContext());
1533-
15341532
IRBuilder<> IRB(&CB);
15351533
std::vector<Value *> Args;
15361534
Args.push_back(VCallSite.VTable);
15371535
llvm::append_range(Args, CB.args());
15381536

15391537
CallBase *NewCS = nullptr;
15401538
if (isa<CallInst>(CB))
1541-
NewCS = IRB.CreateCall(NewFT, IRB.CreateBitCast(JT, NewFTPtr), Args);
1539+
NewCS = IRB.CreateCall(NewFT, JT, Args);
15421540
else
1543-
NewCS = IRB.CreateInvoke(NewFT, IRB.CreateBitCast(JT, NewFTPtr),
1544-
cast<InvokeInst>(CB).getNormalDest(),
1545-
cast<InvokeInst>(CB).getUnwindDest(), Args);
1541+
NewCS =
1542+
IRB.CreateInvoke(NewFT, JT, cast<InvokeInst>(CB).getNormalDest(),
1543+
cast<InvokeInst>(CB).getUnwindDest(), Args);
15461544
NewCS->setCallingConv(CB.getCallingConv());
15471545

15481546
AttributeList Attrs = CB.getAttributes();

llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -379,14 +379,7 @@ void ObjCARCContract::tryToContractReleaseIntoStoreStrong(
379379
<< " Retain: " << *Retain << "\n"
380380
<< " Load: " << *Load << "\n");
381381

382-
LLVMContext &C = Release->getContext();
383-
Type *I8X = PointerType::getUnqual(C);
384-
385-
Value *Args[] = { Load->getPointerOperand(), New };
386-
if (Args[0]->getType() != I8X)
387-
Args[0] = new BitCastInst(Args[0], I8X, "", Store->getIterator());
388-
if (Args[1]->getType() != I8X)
389-
Args[1] = new BitCastInst(Args[1], I8X, "", Store->getIterator());
382+
Value *Args[] = {Load->getPointerOperand(), New};
390383
Function *Decl = EP.get(ARCRuntimeEntryPointKind::StoreStrong);
391384
CallInst *StoreStrong = objcarc::createCallInstWithColors(
392385
Decl, Args, "", Store->getIterator(), BlockColors);

llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,14 +1769,11 @@ void ObjCARCOpt::MoveCalls(Value *Arg, RRInfo &RetainsToMove,
17691769

17701770
// Insert the new retain and release calls.
17711771
for (Instruction *InsertPt : ReleasesToMove.ReverseInsertPts) {
1772-
Value *MyArg = ArgTy == ParamTy ? Arg
1773-
: new BitCastInst(Arg, ParamTy, "",
1774-
InsertPt->getIterator());
17751772
Function *Decl = EP.get(ARCRuntimeEntryPointKind::Retain);
17761773
SmallVector<OperandBundleDef, 1> BundleList;
17771774
addOpBundleForFunclet(InsertPt->getParent(), BundleList);
17781775
CallInst *Call =
1779-
CallInst::Create(Decl, MyArg, BundleList, "", InsertPt->getIterator());
1776+
CallInst::Create(Decl, Arg, BundleList, "", InsertPt->getIterator());
17801777
Call->setDoesNotThrow();
17811778
Call->setTailCall();
17821779

llvm/tools/bugpoint/Miscompilation.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -894,18 +894,13 @@ CleanupAndPrepareModules(BugDriver &BD, std::unique_ptr<Module> Test,
894894
CallInst *Resolver = CallInst::Create(resolverFunc, ResolverArgs,
895895
"resolver", LookupBB);
896896

897-
// Cast the result from the resolver to correctly-typed function.
898-
CastInst *CastedResolver =
899-
new BitCastInst(Resolver, PointerType::getUnqual(F->getContext()),
900-
"resolverCast", LookupBB);
901-
902897
// Save the value in our cache.
903-
new StoreInst(CastedResolver, Cache, LookupBB);
898+
new StoreInst(Resolver, Cache, LookupBB);
904899
BranchInst::Create(DoCallBB, LookupBB);
905900

906901
PHINode *FuncPtr =
907902
PHINode::Create(NullPtr->getType(), 2, "fp", DoCallBB);
908-
FuncPtr->addIncoming(CastedResolver, LookupBB);
903+
FuncPtr->addIncoming(Resolver, LookupBB);
909904
FuncPtr->addIncoming(CachedVal, EntryBB);
910905

911906
// Save the argument list.

0 commit comments

Comments
 (0)