[clang] [NFC][Clang] Introduce type aliases to replace use of auto in clang/lib/CodeGen/CGCall.cpp. (PR #135861)
Tom Honermann via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 15 20:05:37 PDT 2025
https://github.com/tahonermann updated https://github.com/llvm/llvm-project/pull/135861
>From f413b7eeb673812fb66b1465c885a34fe21d1fc6 Mon Sep 17 00:00:00 2001
From: Tom Honermann <tom.honermann at intel.com>
Date: Tue, 15 Apr 2025 14:25:06 -0700
Subject: [PATCH 1/2] [NFC][Clang] Introduce type aliases to replace use of
auto in clang/lib/CodeGen/CGCall.cpp.
CGCall.cpp declares several functions with a return type that is an explicitly
spelled out specialization of SmallVector. Previously, `auto` was used in
several places to avoid repeating the long type name; a use that Clang
maintainers find unjustified. This change introduces type aliases and replaces
the existing uses of `auto` with the corresponding alias name.
---
clang/lib/CodeGen/CGCall.cpp | 73 ++++++++++++++++++------------------
1 file changed, 36 insertions(+), 37 deletions(-)
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index b25cdf9523ae1..b5995023a213a 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -199,15 +199,17 @@ static void appendParameterTypes(const CodeGenTypes &CGT,
prefix.size());
}
+using SmallExtParameterInfoList =
+ SmallVector<FunctionProtoType::ExtParameterInfo, 16>;
+
/// Arrange the LLVM function layout for a value of the given function
/// type, on top of any implicit parameters already stored.
static const CGFunctionInfo &
arrangeLLVMFunctionInfo(CodeGenTypes &CGT, bool instanceMethod,
SmallVectorImpl<CanQualType> &prefix,
CanQual<FunctionProtoType> FTP) {
- SmallVector<FunctionProtoType::ExtParameterInfo, 16> paramInfos;
+ SmallExtParameterInfoList paramInfos;
RequiredArgs Required = RequiredArgs::forPrototypePlus(FTP, prefix.size());
- // FIXME: Kill copy.
appendParameterTypes(CGT, prefix, paramInfos, FTP);
CanQualType resultType = FTP->getReturnType().getUnqualifiedType();
@@ -217,11 +219,13 @@ arrangeLLVMFunctionInfo(CodeGenTypes &CGT, bool instanceMethod,
FTP->getExtInfo(), paramInfos, Required);
}
+using SmallCanQualTypeList = SmallVector<CanQualType, 16>;
+
/// Arrange the argument and result information for a value of the
/// given freestanding function type.
const CGFunctionInfo &
CodeGenTypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> FTP) {
- SmallVector<CanQualType, 16> argTypes;
+ SmallCanQualTypeList argTypes;
return ::arrangeLLVMFunctionInfo(*this, /*instanceMethod=*/false, argTypes,
FTP);
}
@@ -319,7 +323,7 @@ const CGFunctionInfo &
CodeGenTypes::arrangeCXXMethodType(const CXXRecordDecl *RD,
const FunctionProtoType *FTP,
const CXXMethodDecl *MD) {
- SmallVector<CanQualType, 16> argTypes;
+ SmallCanQualTypeList argTypes;
// Add the 'this' pointer.
argTypes.push_back(DeriveThisType(RD, MD));
@@ -375,8 +379,8 @@ const CGFunctionInfo &
CodeGenTypes::arrangeCXXStructorDeclaration(GlobalDecl GD) {
auto *MD = cast<CXXMethodDecl>(GD.getDecl());
- SmallVector<CanQualType, 16> argTypes;
- SmallVector<FunctionProtoType::ExtParameterInfo, 16> paramInfos;
+ SmallCanQualTypeList argTypes;
+ SmallExtParameterInfoList paramInfos;
const CXXRecordDecl *ThisType = getCXXABI().getThisArgumentTypeForMethod(GD);
argTypes.push_back(DeriveThisType(ThisType, MD));
@@ -421,26 +425,26 @@ CodeGenTypes::arrangeCXXStructorDeclaration(GlobalDecl GD) {
argTypes, extInfo, paramInfos, required);
}
-static SmallVector<CanQualType, 16>
-getArgTypesForCall(ASTContext &ctx, const CallArgList &args) {
- SmallVector<CanQualType, 16> argTypes;
+static SmallCanQualTypeList getArgTypesForCall(ASTContext &ctx,
+ const CallArgList &args) {
+ SmallCanQualTypeList argTypes;
for (auto &arg : args)
argTypes.push_back(ctx.getCanonicalParamType(arg.Ty));
return argTypes;
}
-static SmallVector<CanQualType, 16>
+static SmallCanQualTypeList
getArgTypesForDeclaration(ASTContext &ctx, const FunctionArgList &args) {
- SmallVector<CanQualType, 16> argTypes;
+ SmallCanQualTypeList argTypes;
for (auto &arg : args)
argTypes.push_back(ctx.getCanonicalParamType(arg->getType()));
return argTypes;
}
-static llvm::SmallVector<FunctionProtoType::ExtParameterInfo, 16>
-getExtParameterInfosForCall(const FunctionProtoType *proto,
- unsigned prefixArgs, unsigned totalArgs) {
- llvm::SmallVector<FunctionProtoType::ExtParameterInfo, 16> result;
+static SmallExtParameterInfoList
+getExtParameterInfosForCall(const FunctionProtoType *proto, unsigned prefixArgs,
+ unsigned totalArgs) {
+ SmallExtParameterInfoList result;
if (proto->hasExtParameterInfos()) {
addExtParameterInfosForCall(result, proto, prefixArgs, totalArgs);
}
@@ -462,8 +466,7 @@ CodeGenTypes::arrangeCXXConstructorCall(const CallArgList &args,
unsigned ExtraPrefixArgs,
unsigned ExtraSuffixArgs,
bool PassProtoArgs) {
- // FIXME: Kill copy.
- SmallVector<CanQualType, 16> ArgTypes;
+ SmallCanQualTypeList ArgTypes;
for (const auto &Arg : args)
ArgTypes.push_back(Context.getCanonicalParamType(Arg.Ty));
@@ -483,7 +486,7 @@ CodeGenTypes::arrangeCXXConstructorCall(const CallArgList &args,
: Context.VoidTy;
FunctionType::ExtInfo Info = FPT->getExtInfo();
- llvm::SmallVector<FunctionProtoType::ExtParameterInfo, 16> ParamInfos;
+ SmallExtParameterInfoList ParamInfos;
// If the prototype args are elided, we should only have ABI-specific args,
// which never have param info.
if (PassProtoArgs && FPT->hasExtParameterInfos()) {
@@ -546,13 +549,11 @@ CodeGenTypes::arrangeObjCMethodDeclaration(const ObjCMethodDecl *MD) {
const CGFunctionInfo &
CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
QualType receiverType) {
- SmallVector<CanQualType, 16> argTys;
- SmallVector<FunctionProtoType::ExtParameterInfo, 4> extParamInfos(
- MD->isDirectMethod() ? 1 : 2);
+ SmallCanQualTypeList argTys;
+ SmallExtParameterInfoList extParamInfos(MD->isDirectMethod() ? 1 : 2);
argTys.push_back(Context.getCanonicalParamType(receiverType));
if (!MD->isDirectMethod())
argTys.push_back(Context.getCanonicalParamType(Context.getObjCSelType()));
- // FIXME: Kill copy?
for (const auto *I : MD->parameters()) {
argTys.push_back(Context.getCanonicalParamType(I->getType()));
auto extParamInfo = FunctionProtoType::ExtParameterInfo().withIsNoEscape(
@@ -579,7 +580,7 @@ CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
const CGFunctionInfo &
CodeGenTypes::arrangeUnprototypedObjCMessageSend(QualType returnType,
const CallArgList &args) {
- auto argTypes = getArgTypesForCall(Context, args);
+ SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
FunctionType::ExtInfo einfo;
return arrangeLLVMFunctionInfo(GetReturnType(returnType), FnInfoOpts::None,
@@ -641,7 +642,7 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT,
bool chainCall) {
assert(args.size() >= numExtraRequiredArgs);
- llvm::SmallVector<FunctionProtoType::ExtParameterInfo, 16> paramInfos;
+ SmallExtParameterInfoList paramInfos;
// In most cases, there are no optional arguments.
RequiredArgs required = RequiredArgs::All;
@@ -666,8 +667,7 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT,
required = RequiredArgs(args.size());
}
- // FIXME: Kill copy.
- SmallVector<CanQualType, 16> argTypes;
+ SmallCanQualTypeList argTypes;
for (const auto &arg : args)
argTypes.push_back(CGT.getContext().getCanonicalParamType(arg.Ty));
FnInfoOpts opts = chainCall ? FnInfoOpts::IsChainCall : FnInfoOpts::None;
@@ -700,8 +700,9 @@ CodeGenTypes::arrangeBlockFunctionCall(const CallArgList &args,
const CGFunctionInfo &
CodeGenTypes::arrangeBlockFunctionDeclaration(const FunctionProtoType *proto,
const FunctionArgList ¶ms) {
- auto paramInfos = getExtParameterInfosForCall(proto, 1, params.size());
- auto argTypes = getArgTypesForDeclaration(Context, params);
+ SmallExtParameterInfoList paramInfos =
+ getExtParameterInfosForCall(proto, 1, params.size());
+ SmallCanQualTypeList argTypes = getArgTypesForDeclaration(Context, params);
return arrangeLLVMFunctionInfo(GetReturnType(proto->getReturnType()),
FnInfoOpts::None, argTypes,
@@ -712,8 +713,7 @@ CodeGenTypes::arrangeBlockFunctionDeclaration(const FunctionProtoType *proto,
const CGFunctionInfo &
CodeGenTypes::arrangeBuiltinFunctionCall(QualType resultType,
const CallArgList &args) {
- // FIXME: Kill copy.
- SmallVector<CanQualType, 16> argTypes;
+ SmallCanQualTypeList argTypes;
for (const auto &Arg : args)
argTypes.push_back(Context.getCanonicalParamType(Arg.Ty));
return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None,
@@ -724,7 +724,7 @@ CodeGenTypes::arrangeBuiltinFunctionCall(QualType resultType,
const CGFunctionInfo &
CodeGenTypes::arrangeBuiltinFunctionDeclaration(QualType resultType,
const FunctionArgList &args) {
- auto argTypes = getArgTypesForDeclaration(Context, args);
+ SmallCanQualTypeList argTypes = getArgTypesForDeclaration(Context, args);
return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None,
argTypes, FunctionType::ExtInfo(), {},
@@ -752,11 +752,10 @@ CodeGenTypes::arrangeCXXMethodCall(const CallArgList &args,
"Emitting a call with less args than the required prefix?");
// Add one to account for `this`. It's a bit awkward here, but we don't count
// `this` in similar places elsewhere.
- auto paramInfos =
- getExtParameterInfosForCall(proto, numPrefixArgs + 1, args.size());
+ SmallExtParameterInfoList paramInfos =
+ getExtParameterInfosForCall(proto, numPrefixArgs + 1, args.size());
- // FIXME: Kill copy.
- auto argTypes = getArgTypesForCall(Context, args);
+ SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
FunctionType::ExtInfo info = proto->getExtInfo();
return arrangeLLVMFunctionInfo(GetReturnType(proto->getReturnType()),
@@ -777,14 +776,14 @@ CodeGenTypes::arrangeCall(const CGFunctionInfo &signature,
if (signature.arg_size() == args.size())
return signature;
- SmallVector<FunctionProtoType::ExtParameterInfo, 16> paramInfos;
+ SmallExtParameterInfoList paramInfos;
auto sigParamInfos = signature.getExtParameterInfos();
if (!sigParamInfos.empty()) {
paramInfos.append(sigParamInfos.begin(), sigParamInfos.end());
paramInfos.resize(args.size());
}
- auto argTypes = getArgTypesForCall(Context, args);
+ SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
assert(signature.getRequiredArgs().allowsOptionalArgs());
FnInfoOpts opts = FnInfoOpts::None;
>From 2c8b297eae0bb90454b7e04c85d17872d7564e0a Mon Sep 17 00:00:00 2001
From: Tom Honermann <tom.honermann at intel.com>
Date: Tue, 15 Apr 2025 20:04:45 -0700
Subject: [PATCH 2/2] Address code review feedback from Erich Keane.
- Removed "Small" from the names of the new type aliases.
---
clang/lib/CodeGen/CGCall.cpp | 60 ++++++++++++++++++------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index b5995023a213a..bc1035163a8eb 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -199,7 +199,7 @@ static void appendParameterTypes(const CodeGenTypes &CGT,
prefix.size());
}
-using SmallExtParameterInfoList =
+using ExtParameterInfoList =
SmallVector<FunctionProtoType::ExtParameterInfo, 16>;
/// Arrange the LLVM function layout for a value of the given function
@@ -208,7 +208,7 @@ static const CGFunctionInfo &
arrangeLLVMFunctionInfo(CodeGenTypes &CGT, bool instanceMethod,
SmallVectorImpl<CanQualType> &prefix,
CanQual<FunctionProtoType> FTP) {
- SmallExtParameterInfoList paramInfos;
+ ExtParameterInfoList paramInfos;
RequiredArgs Required = RequiredArgs::forPrototypePlus(FTP, prefix.size());
appendParameterTypes(CGT, prefix, paramInfos, FTP);
CanQualType resultType = FTP->getReturnType().getUnqualifiedType();
@@ -219,13 +219,13 @@ arrangeLLVMFunctionInfo(CodeGenTypes &CGT, bool instanceMethod,
FTP->getExtInfo(), paramInfos, Required);
}
-using SmallCanQualTypeList = SmallVector<CanQualType, 16>;
+using CanQualTypeList = SmallVector<CanQualType, 16>;
/// Arrange the argument and result information for a value of the
/// given freestanding function type.
const CGFunctionInfo &
CodeGenTypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> FTP) {
- SmallCanQualTypeList argTypes;
+ CanQualTypeList argTypes;
return ::arrangeLLVMFunctionInfo(*this, /*instanceMethod=*/false, argTypes,
FTP);
}
@@ -323,7 +323,7 @@ const CGFunctionInfo &
CodeGenTypes::arrangeCXXMethodType(const CXXRecordDecl *RD,
const FunctionProtoType *FTP,
const CXXMethodDecl *MD) {
- SmallCanQualTypeList argTypes;
+ CanQualTypeList argTypes;
// Add the 'this' pointer.
argTypes.push_back(DeriveThisType(RD, MD));
@@ -379,8 +379,8 @@ const CGFunctionInfo &
CodeGenTypes::arrangeCXXStructorDeclaration(GlobalDecl GD) {
auto *MD = cast<CXXMethodDecl>(GD.getDecl());
- SmallCanQualTypeList argTypes;
- SmallExtParameterInfoList paramInfos;
+ CanQualTypeList argTypes;
+ ExtParameterInfoList paramInfos;
const CXXRecordDecl *ThisType = getCXXABI().getThisArgumentTypeForMethod(GD);
argTypes.push_back(DeriveThisType(ThisType, MD));
@@ -425,26 +425,26 @@ CodeGenTypes::arrangeCXXStructorDeclaration(GlobalDecl GD) {
argTypes, extInfo, paramInfos, required);
}
-static SmallCanQualTypeList getArgTypesForCall(ASTContext &ctx,
- const CallArgList &args) {
- SmallCanQualTypeList argTypes;
+static CanQualTypeList getArgTypesForCall(ASTContext &ctx,
+ const CallArgList &args) {
+ CanQualTypeList argTypes;
for (auto &arg : args)
argTypes.push_back(ctx.getCanonicalParamType(arg.Ty));
return argTypes;
}
-static SmallCanQualTypeList
-getArgTypesForDeclaration(ASTContext &ctx, const FunctionArgList &args) {
- SmallCanQualTypeList argTypes;
+static CanQualTypeList getArgTypesForDeclaration(ASTContext &ctx,
+ const FunctionArgList &args) {
+ CanQualTypeList argTypes;
for (auto &arg : args)
argTypes.push_back(ctx.getCanonicalParamType(arg->getType()));
return argTypes;
}
-static SmallExtParameterInfoList
+static ExtParameterInfoList
getExtParameterInfosForCall(const FunctionProtoType *proto, unsigned prefixArgs,
unsigned totalArgs) {
- SmallExtParameterInfoList result;
+ ExtParameterInfoList result;
if (proto->hasExtParameterInfos()) {
addExtParameterInfosForCall(result, proto, prefixArgs, totalArgs);
}
@@ -466,7 +466,7 @@ CodeGenTypes::arrangeCXXConstructorCall(const CallArgList &args,
unsigned ExtraPrefixArgs,
unsigned ExtraSuffixArgs,
bool PassProtoArgs) {
- SmallCanQualTypeList ArgTypes;
+ CanQualTypeList ArgTypes;
for (const auto &Arg : args)
ArgTypes.push_back(Context.getCanonicalParamType(Arg.Ty));
@@ -486,7 +486,7 @@ CodeGenTypes::arrangeCXXConstructorCall(const CallArgList &args,
: Context.VoidTy;
FunctionType::ExtInfo Info = FPT->getExtInfo();
- SmallExtParameterInfoList ParamInfos;
+ ExtParameterInfoList ParamInfos;
// If the prototype args are elided, we should only have ABI-specific args,
// which never have param info.
if (PassProtoArgs && FPT->hasExtParameterInfos()) {
@@ -549,8 +549,8 @@ CodeGenTypes::arrangeObjCMethodDeclaration(const ObjCMethodDecl *MD) {
const CGFunctionInfo &
CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
QualType receiverType) {
- SmallCanQualTypeList argTys;
- SmallExtParameterInfoList extParamInfos(MD->isDirectMethod() ? 1 : 2);
+ CanQualTypeList argTys;
+ ExtParameterInfoList extParamInfos(MD->isDirectMethod() ? 1 : 2);
argTys.push_back(Context.getCanonicalParamType(receiverType));
if (!MD->isDirectMethod())
argTys.push_back(Context.getCanonicalParamType(Context.getObjCSelType()));
@@ -580,7 +580,7 @@ CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD,
const CGFunctionInfo &
CodeGenTypes::arrangeUnprototypedObjCMessageSend(QualType returnType,
const CallArgList &args) {
- SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
+ CanQualTypeList argTypes = getArgTypesForCall(Context, args);
FunctionType::ExtInfo einfo;
return arrangeLLVMFunctionInfo(GetReturnType(returnType), FnInfoOpts::None,
@@ -642,7 +642,7 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT,
bool chainCall) {
assert(args.size() >= numExtraRequiredArgs);
- SmallExtParameterInfoList paramInfos;
+ ExtParameterInfoList paramInfos;
// In most cases, there are no optional arguments.
RequiredArgs required = RequiredArgs::All;
@@ -667,7 +667,7 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT,
required = RequiredArgs(args.size());
}
- SmallCanQualTypeList argTypes;
+ CanQualTypeList argTypes;
for (const auto &arg : args)
argTypes.push_back(CGT.getContext().getCanonicalParamType(arg.Ty));
FnInfoOpts opts = chainCall ? FnInfoOpts::IsChainCall : FnInfoOpts::None;
@@ -700,9 +700,9 @@ CodeGenTypes::arrangeBlockFunctionCall(const CallArgList &args,
const CGFunctionInfo &
CodeGenTypes::arrangeBlockFunctionDeclaration(const FunctionProtoType *proto,
const FunctionArgList ¶ms) {
- SmallExtParameterInfoList paramInfos =
+ ExtParameterInfoList paramInfos =
getExtParameterInfosForCall(proto, 1, params.size());
- SmallCanQualTypeList argTypes = getArgTypesForDeclaration(Context, params);
+ CanQualTypeList argTypes = getArgTypesForDeclaration(Context, params);
return arrangeLLVMFunctionInfo(GetReturnType(proto->getReturnType()),
FnInfoOpts::None, argTypes,
@@ -713,7 +713,7 @@ CodeGenTypes::arrangeBlockFunctionDeclaration(const FunctionProtoType *proto,
const CGFunctionInfo &
CodeGenTypes::arrangeBuiltinFunctionCall(QualType resultType,
const CallArgList &args) {
- SmallCanQualTypeList argTypes;
+ CanQualTypeList argTypes;
for (const auto &Arg : args)
argTypes.push_back(Context.getCanonicalParamType(Arg.Ty));
return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None,
@@ -724,7 +724,7 @@ CodeGenTypes::arrangeBuiltinFunctionCall(QualType resultType,
const CGFunctionInfo &
CodeGenTypes::arrangeBuiltinFunctionDeclaration(QualType resultType,
const FunctionArgList &args) {
- SmallCanQualTypeList argTypes = getArgTypesForDeclaration(Context, args);
+ CanQualTypeList argTypes = getArgTypesForDeclaration(Context, args);
return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None,
argTypes, FunctionType::ExtInfo(), {},
@@ -752,10 +752,10 @@ CodeGenTypes::arrangeCXXMethodCall(const CallArgList &args,
"Emitting a call with less args than the required prefix?");
// Add one to account for `this`. It's a bit awkward here, but we don't count
// `this` in similar places elsewhere.
- SmallExtParameterInfoList paramInfos =
+ ExtParameterInfoList paramInfos =
getExtParameterInfosForCall(proto, numPrefixArgs + 1, args.size());
- SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
+ CanQualTypeList argTypes = getArgTypesForCall(Context, args);
FunctionType::ExtInfo info = proto->getExtInfo();
return arrangeLLVMFunctionInfo(GetReturnType(proto->getReturnType()),
@@ -776,14 +776,14 @@ CodeGenTypes::arrangeCall(const CGFunctionInfo &signature,
if (signature.arg_size() == args.size())
return signature;
- SmallExtParameterInfoList paramInfos;
+ ExtParameterInfoList paramInfos;
auto sigParamInfos = signature.getExtParameterInfos();
if (!sigParamInfos.empty()) {
paramInfos.append(sigParamInfos.begin(), sigParamInfos.end());
paramInfos.resize(args.size());
}
- SmallCanQualTypeList argTypes = getArgTypesForCall(Context, args);
+ CanQualTypeList argTypes = getArgTypesForCall(Context, args);
assert(signature.getRequiredArgs().allowsOptionalArgs());
FnInfoOpts opts = FnInfoOpts::None;
More information about the cfe-commits
mailing list