[clang] 14f2025 - [clang][CGExpr] Remove no-op ptr-to-ptr bitcasts (NFC)
Youngsuk Kim via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 2 15:56:20 PDT 2023
Author: Youngsuk Kim
Date: 2023-11-02T17:50:46-05:00
New Revision: 14f2025671f82192d38e1db9bc185790e1221cd3
URL: https://github.com/llvm/llvm-project/commit/14f2025671f82192d38e1db9bc185790e1221cd3
DIFF: https://github.com/llvm/llvm-project/commit/14f2025671f82192d38e1db9bc185790e1221cd3.diff
LOG: [clang][CGExpr] Remove no-op ptr-to-ptr bitcasts (NFC)
Opaque ptr cleanup effort.
Added:
Modified:
clang/lib/CodeGen/CGExpr.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 54a1d300a9ac738..46d0b5b8c277f00 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -450,9 +450,7 @@ EmitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *M) {
Address Object = createReferenceTemporary(*this, M, E);
if (auto *Var = dyn_cast<llvm::GlobalVariable>(Object.getPointer())) {
llvm::Type *Ty = ConvertTypeForMem(E->getType());
- Object = Address(llvm::ConstantExpr::getBitCast(
- Var, Ty->getPointerTo(Object.getAddressSpace())),
- Ty, Object.getAlignment());
+ Object = Object.withElementType(Ty);
// createReferenceTemporary will promote the temporary to a global with a
// constant initializer if it can. It can only do this to a value of
@@ -508,11 +506,7 @@ EmitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *M) {
if (auto *Var = dyn_cast<llvm::GlobalVariable>(
Object.getPointer()->stripPointerCasts())) {
llvm::Type *TemporaryType = ConvertTypeForMem(E->getType());
- Object = Address(llvm::ConstantExpr::getBitCast(
- cast<llvm::Constant>(Object.getPointer()),
- TemporaryType->getPointerTo()),
- TemporaryType,
- Object.getAlignment());
+ Object = Object.withElementType(TemporaryType);
// If the temporary is a global and has a constant initializer or is a
// constant temporary that we promoted to a global, we may have already
// initialized it.
@@ -2678,19 +2672,6 @@ static llvm::Constant *EmitFunctionDeclPointer(CodeGenModule &CGM,
}
llvm::Constant *V = CGM.GetAddrOfFunction(GD);
- if (!FD->hasPrototype()) {
- if (const FunctionProtoType *Proto =
- FD->getType()->getAs<FunctionProtoType>()) {
- // Ugly case: for a K&R-style definition, the type of the definition
- // isn't the same as the type of a use. Correct for this with a
- // bitcast.
- QualType NoProtoType =
- CGM.getContext().getFunctionNoProtoType(Proto->getReturnType());
- NoProtoType = CGM.getContext().getPointerType(NoProtoType);
- V = llvm::ConstantExpr::getBitCast(V,
- CGM.getTypes().ConvertType(NoProtoType));
- }
- }
return V;
}
More information about the cfe-commits
mailing list