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.honerm...@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.honerm...@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; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits