[clang] 45ca24e - [clang] Remove no-op ptr-to-ptr bitcasts (NFC)
Youngsuk Kim via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 7 09:34:08 PST 2023
Author: Youngsuk Kim
Date: 2023-11-07T11:21:35-06:00
New Revision: 45ca24edc0b9f2541efb0ae3c668ee7af82e22f4
URL: https://github.com/llvm/llvm-project/commit/45ca24edc0b9f2541efb0ae3c668ee7af82e22f4
DIFF: https://github.com/llvm/llvm-project/commit/45ca24edc0b9f2541efb0ae3c668ee7af82e22f4.diff
LOG: [clang] Remove no-op ptr-to-ptr bitcasts (NFC)
Opaque ptr cleanup effort (NFC).
Added:
Modified:
clang/lib/CodeGen/CGObjCGNU.cpp
clang/lib/CodeGen/CGVTables.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp
index f02938cf799acd0..519133055dcac59 100644
--- a/clang/lib/CodeGen/CGObjCGNU.cpp
+++ b/clang/lib/CodeGen/CGObjCGNU.cpp
@@ -1784,7 +1784,7 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
}
}
if (!IsCOFF)
- classFields.add(llvm::ConstantExpr::getBitCast(SuperClass, PtrTy));
+ classFields.add(SuperClass);
else
classFields.addNullPointer(PtrTy);
} else
@@ -1959,16 +1959,14 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
// Resolve the class aliases, if they exist.
// FIXME: Class pointer aliases shouldn't exist!
if (ClassPtrAlias) {
- ClassPtrAlias->replaceAllUsesWith(
- llvm::ConstantExpr::getBitCast(classStruct, IdTy));
+ ClassPtrAlias->replaceAllUsesWith(classStruct);
ClassPtrAlias->eraseFromParent();
ClassPtrAlias = nullptr;
}
if (auto Placeholder =
TheModule.getNamedGlobal(SymbolForClass(className)))
if (Placeholder != classStruct) {
- Placeholder->replaceAllUsesWith(
- llvm::ConstantExpr::getBitCast(classStruct, Placeholder->getType()));
+ Placeholder->replaceAllUsesWith(classStruct);
Placeholder->eraseFromParent();
classStruct->setName(SymbolForClass(className));
}
@@ -2415,7 +2413,7 @@ llvm::Constant *CGObjCGNUstep::GetEHType(QualType T) {
false,
llvm::GlobalValue::ExternalLinkage,
nullptr, "__objc_id_type_info");
- return llvm::ConstantExpr::getBitCast(IDEHType, PtrToInt8Ty);
+ return IDEHType;
}
const ObjCObjectPointerType *PT =
@@ -2429,9 +2427,8 @@ llvm::Constant *CGObjCGNUstep::GetEHType(QualType T) {
std::string typeinfoName = "__objc_eh_typeinfo_" + className;
// Return the existing typeinfo if it exists
- llvm::Constant *typeinfo = TheModule.getGlobalVariable(typeinfoName);
- if (typeinfo)
- return llvm::ConstantExpr::getBitCast(typeinfo, PtrToInt8Ty);
+ if (llvm::Constant *typeinfo = TheModule.getGlobalVariable(typeinfoName))
+ return typeinfo;
// Otherwise create it.
@@ -2495,9 +2492,7 @@ ConstantAddress CGObjCGNU::GenerateConstantString(const StringLiteral *SL) {
Fields.add(isa);
Fields.add(MakeConstantString(Str));
Fields.addInt(IntTy, Str.size());
- llvm::Constant *ObjCStr =
- Fields.finishAndCreateGlobal(".objc_str", Align);
- ObjCStr = llvm::ConstantExpr::getBitCast(ObjCStr, PtrToInt8Ty);
+ llvm::Constant *ObjCStr = Fields.finishAndCreateGlobal(".objc_str", Align);
ObjCStrings[Str] = ObjCStr;
ConstantStrings.push_back(ObjCStr);
return ConstantAddress(ObjCStr, Int8Ty, Align);
@@ -3060,8 +3055,7 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
Elements.finishAndCreateGlobal(ClassSym, CGM.getPointerAlign(), false,
llvm::GlobalValue::ExternalLinkage);
if (ClassRef) {
- ClassRef->replaceAllUsesWith(llvm::ConstantExpr::getBitCast(Class,
- ClassRef->getType()));
+ ClassRef->replaceAllUsesWith(Class);
ClassRef->removeFromParent();
Class->setName(ClassSym);
}
@@ -3227,9 +3221,7 @@ void CGObjCGNU::GenerateProtocol(const ObjCProtocolDecl *PD) {
Elements.add(PropertyList);
Elements.add(OptionalPropertyList);
ExistingProtocols[ProtocolName] =
- llvm::ConstantExpr::getBitCast(
- Elements.finishAndCreateGlobal(".objc_protocol", CGM.getPointerAlign()),
- IdTy);
+ Elements.finishAndCreateGlobal(".objc_protocol", CGM.getPointerAlign());
}
void CGObjCGNU::GenerateProtocolHolderCategory() {
// Collect information about instance methods
@@ -3263,9 +3255,8 @@ void CGObjCGNU::GenerateProtocolHolderCategory() {
ProtocolList.finishAndCreateGlobal(".objc_protocol_list",
CGM.getPointerAlign()),
PtrTy);
- Categories.push_back(llvm::ConstantExpr::getBitCast(
- Elements.finishAndCreateGlobal("", CGM.getPointerAlign()),
- PtrTy));
+ Categories.push_back(
+ Elements.finishAndCreateGlobal("", CGM.getPointerAlign()));
}
/// Libobjc2 uses a bitfield representation where small(ish) bitfields are
@@ -3736,7 +3727,6 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
statics = allStaticsArray.finishAndCreateGlobal(".objc_statics_ptr",
CGM.getPointerAlign());
- statics = llvm::ConstantExpr::getBitCast(statics, PtrTy);
}
// Array of classes, categories, and constant objects.
@@ -3799,9 +3789,6 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
// FIXME: We're generating redundant loads and stores here!
llvm::Constant *selPtr = llvm::ConstantExpr::getGetElementPtr(
selectorList->getValueType(), selectorList, idxs);
- // If selectors are defined as an opaque type, cast the pointer to this
- // type.
- selPtr = llvm::ConstantExpr::getBitCast(selPtr, SelectorTy);
selectorAliases[i]->replaceAllUsesWith(selPtr);
selectorAliases[i]->eraseFromParent();
}
@@ -3922,7 +3909,6 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
llvm::Constant *TheClass =
TheModule.getGlobalVariable("_OBJC_CLASS_" + iter->first, true);
if (TheClass) {
- TheClass = llvm::ConstantExpr::getBitCast(TheClass, PtrTy);
Builder.CreateCall(RegisterAlias,
{TheClass, MakeConstantString(iter->second)});
}
diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp
index 959940775ee8096..27a2cab4f75319a 100644
--- a/clang/lib/CodeGen/CGVTables.cpp
+++ b/clang/lib/CodeGen/CGVTables.cpp
@@ -465,10 +465,6 @@ void CodeGenFunction::generateThunk(llvm::Function *Fn,
llvm::Constant *Callee = CGM.GetAddrOfFunction(GD, Ty, /*ForVTable=*/true);
- // Fix up the function type for an unprototyped musttail call.
- if (IsUnprototyped)
- Callee = llvm::ConstantExpr::getBitCast(Callee, Fn->getType());
-
// Make the call and return the result.
EmitCallAndReturnForThunk(llvm::FunctionCallee(Fn->getFunctionType(), Callee),
&Thunk, IsUnprototyped);
@@ -537,11 +533,8 @@ llvm::Constant *CodeGenVTables::maybeEmitThunk(GlobalDecl GD,
Name.str(), &CGM.getModule());
CGM.SetLLVMFunctionAttributes(MD, FnInfo, ThunkFn, /*IsThunk=*/false);
- // If needed, replace the old thunk with a bitcast.
if (!OldThunkFn->use_empty()) {
- llvm::Constant *NewPtrForOldDecl =
- llvm::ConstantExpr::getBitCast(ThunkFn, OldThunkFn->getType());
- OldThunkFn->replaceAllUsesWith(NewPtrForOldDecl);
+ OldThunkFn->replaceAllUsesWith(ThunkFn);
}
// Remove the old thunk.
More information about the cfe-commits
mailing list