https://github.com/tahonermann created https://github.com/llvm/llvm-project/pull/135861
`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. >From f413b7eeb673812fb66b1465c885a34fe21d1fc6 Mon Sep 17 00:00:00 2001 From: Tom Honermann <tom.honerm...@intel.com> Date: Tue, 15 Apr 2025 14:25:06 -0700 Subject: [PATCH] [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; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits