llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-codegen Author: Nikita Popov (nikic) <details> <summary>Changes</summary> Reverts llvm/llvm-project#<!-- -->193298 Causes a major compile-time regression. --- Patch is 69.90 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/210303.diff 28 Files Affected: - (modified) clang/docs/ReleaseNotes.md (-7) - (modified) clang/include/clang/Basic/ABIVersions.def (-6) - (modified) clang/include/clang/Basic/LangOptions.def (+1-1) - (modified) clang/include/clang/CodeGen/CGFunctionInfo.h (+3-12) - (modified) clang/include/clang/CodeGen/CodeGenABITypes.h (+5-7) - (modified) clang/lib/CodeGen/ABIInfo.h (-9) - (modified) clang/lib/CodeGen/CGCUDARuntime.cpp (+2-3) - (modified) clang/lib/CodeGen/CGCall.cpp (+51-105) - (modified) clang/lib/CodeGen/CGClass.cpp (+4-5) - (modified) clang/lib/CodeGen/CGDeclCXX.cpp (+1-2) - (modified) clang/lib/CodeGen/CGExpr.cpp (+1-1) - (modified) clang/lib/CodeGen/CGExprCXX.cpp (+5-8) - (modified) clang/lib/CodeGen/CGExprComplex.cpp (+1-2) - (modified) clang/lib/CodeGen/CGHLSLRuntime.cpp (+2-4) - (modified) clang/lib/CodeGen/CGObjCRuntime.cpp (+1-3) - (modified) clang/lib/CodeGen/CGVTables.cpp (+2-4) - (modified) clang/lib/CodeGen/CodeGenABITypes.cpp (+6-6) - (modified) clang/lib/CodeGen/CodeGenFunction.cpp (+1-8) - (modified) clang/lib/CodeGen/CodeGenFunction.h (-1) - (modified) clang/lib/CodeGen/CodeGenTypes.h (+13-24) - (modified) clang/lib/CodeGen/ItaniumCXXABI.cpp (+1-1) - (modified) clang/lib/CodeGen/MicrosoftCXXABI.cpp (+1-5) - (modified) clang/lib/CodeGen/Targets/X86.cpp (+1-54) - (modified) clang/test/CodeGen/sysv_abi.c (-18) - (removed) clang/test/CodeGen/target-avx-function-abi.c (-71) - (removed) clang/test/CodeGenCXX/target-avx-method-abi.cpp (-121) - (modified) clang/unittests/CodeGen/CodeGenExternalTest.cpp (+16-129) - (modified) clang/unittests/CodeGen/TestCompiler.h (+6-10) ``````````diff diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index 06ded79f4d995..ecf192125b2ed 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -50,13 +50,6 @@ latest release, please see the [Clang Web Site](https://clang.llvm.org) or the ### ABI Changes in This Version -- Except on PlayStation, Clang now derives the x86-64 System V AVX ABI level -for 256- and 512-bit vector arguments and returns from effective per-function -target features. Features and `arch=` CPUs that imply AVX or AVX512F are -honored, and calls use the caller's features, matching GCC. Per-function -features cannot lower the translation-unit ABI level; -`-fclang-abi-compat=23` restores the previous behavior. (#GH193298) - ### AST Dumping Potentially Breaking Changes ### Clang Frontend Potentially Breaking Changes diff --git a/clang/include/clang/Basic/ABIVersions.def b/clang/include/clang/Basic/ABIVersions.def index 15fb8ddf6d774..a9f72481ee0ea 100644 --- a/clang/include/clang/Basic/ABIVersions.def +++ b/clang/include/clang/Basic/ABIVersions.def @@ -140,12 +140,6 @@ ABI_VER_MAJOR(21) /// local classes as nested-name entities instead of local-name entities. ABI_VER_MAJOR(22) -/// Attempt to be ABI-compatible with code generated by Clang 23.0.x. -/// This causes clang to: -/// - Ignore per-function target attributes when determining the x86 AVX ABI -/// level. -ABI_VER_MAJOR(23) - /// Conform to the underlying platform's C and C++ ABIs as closely as we can. ABI_VER_LATEST(Latest) diff --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def index 922124b696d43..1fb491a54a278 100644 --- a/clang/include/clang/Basic/LangOptions.def +++ b/clang/include/clang/Basic/LangOptions.def @@ -426,7 +426,7 @@ LANGOPT(ForceEmitVTables, 1, 0, NotCompatible, "whether to emit all vtables") LANGOPT(AllowEditorPlaceholders, 1, 0, Benign, "allow editor placeholders in source") -ENUM_LANGOPT(ClangABICompat, ClangABI, 5, ClangABI::Latest, NotCompatible, +ENUM_LANGOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest, NotCompatible, "version of Clang that we should attempt to be ABI-compatible " "with") diff --git a/clang/include/clang/CodeGen/CGFunctionInfo.h b/clang/include/clang/CodeGen/CGFunctionInfo.h index d1fc80337d859..713b52a4cc2b8 100644 --- a/clang/include/clang/CodeGen/CGFunctionInfo.h +++ b/clang/include/clang/CodeGen/CGFunctionInfo.h @@ -17,9 +17,10 @@ #include "clang/AST/CanonicalType.h" #include "clang/AST/CharUnits.h" +#include "clang/AST/Decl.h" #include "clang/AST/Type.h" -#include "llvm/ADT/FoldingSet.h" #include "llvm/IR/DerivedTypes.h" +#include "llvm/ADT/FoldingSet.h" #include "llvm/Support/TrailingObjects.h" #include <cassert> @@ -652,10 +653,6 @@ class CGFunctionInfo final /// Log 2 of the maximum vector width. unsigned MaxVectorWidth : 4; - /// X86 AVX Level, can be different from global / module level AVX level - /// because of target attributes. - unsigned X86ABIAVXLevel = 0; - RequiredArgs Required; /// The struct representing all arguments passed in memory. Only used when @@ -686,8 +683,7 @@ class CGFunctionInfo final public: static CGFunctionInfo * create(unsigned llvmCC, bool instanceMethod, bool chainCall, - bool delegateCall, unsigned X86ABIAVXLevel, - const FunctionType::ExtInfo &extInfo, + bool delegateCall, const FunctionType::ExtInfo &extInfo, ArrayRef<ExtParameterInfo> paramInfos, CanQualType resultType, ArrayRef<CanQualType> argTypes, RequiredArgs required); void operator delete(void *p) { ::operator delete(p); } @@ -813,8 +809,6 @@ class CGFunctionInfo final MaxVectorWidth = llvm::countr_zero(Width) + 1; } - unsigned getX86ABIAVXLevel() const { return X86ABIAVXLevel; } - void Profile(llvm::FoldingSetNodeID &ID) { ID.AddInteger(getASTCallingConvention()); ID.AddBoolean(InstanceMethod); @@ -827,7 +821,6 @@ class CGFunctionInfo final ID.AddInteger(RegParm); ID.AddBoolean(NoCfCheck); ID.AddBoolean(CmseNSCall); - ID.AddInteger(X86ABIAVXLevel); ID.AddInteger(Required.getOpaqueData()); ID.AddBoolean(HasExtParameterInfos); if (HasExtParameterInfos) { @@ -840,7 +833,6 @@ class CGFunctionInfo final } static void Profile(llvm::FoldingSetNodeID &ID, bool InstanceMethod, bool ChainCall, bool IsDelegateCall, - unsigned X86ABIAVXLevel, const FunctionType::ExtInfo &info, ArrayRef<ExtParameterInfo> paramInfos, RequiredArgs required, CanQualType resultType, @@ -856,7 +848,6 @@ class CGFunctionInfo final ID.AddInteger(info.getRegParm()); ID.AddBoolean(info.getNoCfCheck()); ID.AddBoolean(info.getCmseNSCall()); - ID.AddInteger(X86ABIAVXLevel); ID.AddInteger(required.getOpaqueData()); ID.AddBoolean(!paramInfos.empty()); if (!paramInfos.empty()) { diff --git a/clang/include/clang/CodeGen/CodeGenABITypes.h b/clang/include/clang/CodeGen/CodeGenABITypes.h index e79c31d3efa21..627dd0f0453ac 100644 --- a/clang/include/clang/CodeGen/CodeGenABITypes.h +++ b/clang/include/clang/CodeGen/CodeGenABITypes.h @@ -81,22 +81,20 @@ const CGFunctionInfo & arrangeCXXMethodCall(CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes, FunctionType::ExtInfo info, ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos, - RequiredArgs args, const FunctionDecl *CallerFD); + RequiredArgs args); const CGFunctionInfo &arrangeFreeFunctionCall( CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes, FunctionType::ExtInfo info, - ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos, RequiredArgs args, - const FunctionDecl *CallerFD); + ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos, + RequiredArgs args); // An overload with an empty `paramInfos` inline const CGFunctionInfo & arrangeFreeFunctionCall(CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes, - FunctionType::ExtInfo info, RequiredArgs args, - const FunctionDecl *CallerFD) { - return arrangeFreeFunctionCall(CGM, returnType, argTypes, info, {}, args, - CallerFD); + FunctionType::ExtInfo info, RequiredArgs args) { + return arrangeFreeFunctionCall(CGM, returnType, argTypes, info, {}, args); } /// Returns the implicit arguments to add to a complete, non-delegating C++ diff --git a/clang/lib/CodeGen/ABIInfo.h b/clang/lib/CodeGen/ABIInfo.h index b9a970919740f..4563154d50960 100644 --- a/clang/lib/CodeGen/ABIInfo.h +++ b/clang/lib/CodeGen/ABIInfo.h @@ -26,7 +26,6 @@ class FixedVectorType; namespace clang { class ASTContext; class CodeGenOptions; -class FunctionDecl; class TargetInfo; namespace CodeGen { @@ -70,14 +69,6 @@ class ABIInfo { /// functions. llvm::CallingConv::ID getRuntimeCC() const { return RuntimeCC; } - // Get X86ABIAVXLevel for the given FunctionDecl and ExtInfo. - // This can be different than the global / module level X86ABIAVXLevel - // due to function attributes. - virtual unsigned getX86ABIAVXLevel(const FunctionDecl *, - const FunctionType::ExtInfo &) const { - return 0; - } - virtual void computeInfo(CodeGen::CGFunctionInfo &FI) const = 0; /// EmitVAArg - Emit the target dependent code to load a value of diff --git a/clang/lib/CodeGen/CGCUDARuntime.cpp b/clang/lib/CodeGen/CGCUDARuntime.cpp index 0b09546453138..9c831b26c3a7b 100644 --- a/clang/lib/CodeGen/CGCUDARuntime.cpp +++ b/clang/lib/CodeGen/CGCUDARuntime.cpp @@ -53,8 +53,7 @@ static llvm::Value *emitGetParamBuf(CodeGenFunction &CGF, Args.add(RValue::get(CGF.CGM.getSize(Offset)), CGF.getContext().getSizeType()); const CGFunctionInfo &CallInfo = CGF.CGM.getTypes().arrangeFreeFunctionCall( - Args, GetParamBufProto, /*ChainCall=*/false, - CGF.getCurrentFunctionDecl()); + Args, GetParamBufProto, /*ChainCall=*/false); auto Ret = CGF.EmitCall(CallInfo, Callee, /*ReturnValue=*/{}, Args); return Ret.getScalarVal(); @@ -117,7 +116,7 @@ RValue CGCUDARuntime::EmitCUDADeviceKernelCallExpr( LaunchCallArgs[1] = CallArg(RValue::get(Config), CGM.getContext().VoidPtrTy); const CGFunctionInfo &LaunchCallInfo = CGM.getTypes().arrangeFreeFunctionCall( LaunchCallArgs, LaunchCalleeFuncTy->getAs<FunctionProtoType>(), - /*ChainCall=*/false, CGF.getCurrentFunctionDecl()); + /*ChainCall=*/false); CGF.EmitCall(LaunchCallInfo, LaunchCallee, ReturnValue, LaunchCallArgs, CallOrInvoke, /*IsMustTail=*/false, E->getExprLoc()); diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index a29f7aab0e58b..08cb9860f2f92 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -168,7 +168,7 @@ CodeGenTypes::arrangeFreeFunctionType(CanQual<FunctionNoProtoType> FTNP) { // variadic type. return arrangeLLVMFunctionInfo(FTNP->getReturnType().getUnqualifiedType(), FnInfoOpts::None, {}, FTNP->getExtInfo(), {}, - RequiredArgs(0), /*ABIInfoFD=*/nullptr); + RequiredArgs(0)); } static void addExtParameterInfosForCall( @@ -246,8 +246,7 @@ arrangeLLVMFunctionInfo(CodeGenTypes &CGT, bool instanceMethod, FnInfoOpts opts = instanceMethod ? FnInfoOpts::IsInstanceMethod : FnInfoOpts::None; return CGT.arrangeLLVMFunctionInfo(resultType, opts, prefix, - FTP->getExtInfo(), paramInfos, Required, - /*ABIInfoFD=*/nullptr); + FTP->getExtInfo(), paramInfos, Required); } using CanQualTypeList = SmallVector<CanQualType, 16>; @@ -358,16 +357,10 @@ CodeGenTypes::arrangeCXXMethodType(const CXXRecordDecl *RD, // Add the 'this' pointer. argTypes.push_back(DeriveThisType(RD, MD)); - auto CanonicalFTP = - FTP->getCanonicalTypeUnqualified().getAs<FunctionProtoType>(); - ExtParameterInfoList paramInfos; - RequiredArgs required = RequiredArgs::forPrototypePlus( - CanonicalFTP.getTypePtr(), argTypes.size()); - appendParameterTypes(*this, argTypes, paramInfos, CanonicalFTP); - return arrangeLLVMFunctionInfo( - CanonicalFTP->getReturnType().getUnqualifiedType(), - FnInfoOpts::IsInstanceMethod, argTypes, CanonicalFTP->getExtInfo(), - paramInfos, required, MD); + + return ::arrangeLLVMFunctionInfo( + *this, /*instanceMethod=*/true, argTypes, + FTP->getCanonicalTypeUnqualified().getAs<FunctionProtoType>()); } /// Set calling convention for CUDA/HIP kernel. @@ -400,13 +393,7 @@ CodeGenTypes::arrangeCXXMethodDeclaration(const CXXMethodDecl *MD) { return arrangeCXXMethodType(ThisType, prototype.getTypePtr(), MD); } - CanQualTypeList argTypes; - ExtParameterInfoList paramInfos; - appendParameterTypes(*this, argTypes, paramInfos, prototype); - return arrangeLLVMFunctionInfo( - prototype->getReturnType().getUnqualifiedType(), FnInfoOpts::None, - argTypes, prototype->getExtInfo(), paramInfos, - RequiredArgs::forPrototypePlus(prototype.getTypePtr(), 0), MD); + return arrangeFreeFunctionType(prototype); } bool CodeGenTypes::inheritingCtorHasParams( @@ -465,7 +452,7 @@ CodeGenTypes::arrangeCXXStructorDeclaration(GlobalDecl GD) { ? CGM.getContext().VoidPtrTy : Context.VoidTy; return arrangeLLVMFunctionInfo(resultType, FnInfoOpts::IsInstanceMethod, - argTypes, extInfo, paramInfos, required, MD); + argTypes, extInfo, paramInfos, required); } static CanQualTypeList getArgTypesForCall(ASTContext &ctx, @@ -504,8 +491,7 @@ getExtParameterInfosForCall(const FunctionProtoType *proto, unsigned prefixArgs, /// given CXXConstructorDecl. const CGFunctionInfo &CodeGenTypes::arrangeCXXConstructorCall( const CallArgList &args, const CXXConstructorDecl *D, CXXCtorType CtorKind, - unsigned ExtraPrefixArgs, unsigned ExtraSuffixArgs, - const FunctionDecl *ABIInfoFD, bool PassProtoArgs) { + unsigned ExtraPrefixArgs, unsigned ExtraSuffixArgs, bool PassProtoArgs) { CanQualTypeList ArgTypes; for (const auto &Arg : args) ArgTypes.push_back(Context.getCanonicalParamType(Arg.Ty)); @@ -536,8 +522,7 @@ const CGFunctionInfo &CodeGenTypes::arrangeCXXConstructorCall( } return arrangeLLVMFunctionInfo(ResultType, FnInfoOpts::IsInstanceMethod, - ArgTypes, Info, ParamInfos, Required, - ABIInfoFD); + ArgTypes, Info, ParamInfos, Required); } /// Arrange the argument and result information for the declaration or @@ -566,17 +551,10 @@ CodeGenTypes::arrangeFunctionDeclaration(const GlobalDecl GD) { if (CanQual<FunctionNoProtoType> noProto = FTy.getAs<FunctionNoProtoType>()) { return arrangeLLVMFunctionInfo(noProto->getReturnType(), FnInfoOpts::None, {}, noProto->getExtInfo(), {}, - RequiredArgs::All, FD); + RequiredArgs::All); } - CanQual<FunctionProtoType> FTP = FTy.castAs<FunctionProtoType>(); - CanQualTypeList argTypes; - ExtParameterInfoList paramInfos; - appendParameterTypes(*this, argTypes, paramInfos, FTP); - return arrangeLLVMFunctionInfo(FTP->getReturnType().getUnqualifiedType(), - FnInfoOpts::None, argTypes, FTP->getExtInfo(), - paramInfos, - RequiredArgs::forPrototypePlus(FTP, 0), FD); + return arrangeFreeFunctionType(FTy.castAs<FunctionProtoType>()); } /// Arrange the argument and result information for the declaration or @@ -625,7 +603,7 @@ CodeGenTypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD, return arrangeLLVMFunctionInfo(GetReturnType(MD->getReturnType()), FnInfoOpts::None, argTys, einfo, extParamInfos, - required, /*ABIInfoFD=*/nullptr); + required); } const CGFunctionInfo & @@ -635,8 +613,7 @@ CodeGenTypes::arrangeUnprototypedObjCMessageSend(QualType returnType, FunctionType::ExtInfo einfo; return arrangeLLVMFunctionInfo(GetReturnType(returnType), FnInfoOpts::None, - argTypes, einfo, {}, RequiredArgs::All, - nullptr); + argTypes, einfo, {}, RequiredArgs::All); } const CGFunctionInfo &CodeGenTypes::arrangeGlobalDeclaration(GlobalDecl GD) { @@ -659,7 +636,7 @@ CodeGenTypes::arrangeUnprototypedMustTailThunk(const CXXMethodDecl *MD) { CanQual<FunctionProtoType> FTP = GetFormalType(MD); CanQualType ArgTys[] = {DeriveThisType(MD->getParent(), MD)}; return arrangeLLVMFunctionInfo(Context.VoidTy, FnInfoOpts::None, ArgTys, - FTP->getExtInfo(), {}, RequiredArgs(1), MD); + FTP->getExtInfo(), {}, RequiredArgs(1)); } const CGFunctionInfo & @@ -679,7 +656,7 @@ CodeGenTypes::arrangeMSCtorClosure(const CXXConstructorDecl *CD, /*IsVariadic=*/false, /*IsCXXMethod=*/true); return arrangeLLVMFunctionInfo(Context.VoidTy, FnInfoOpts::IsInstanceMethod, ArgTys, FunctionType::ExtInfo(CC), {}, - RequiredArgs::All, /*ABIInfoFD=*/nullptr); + RequiredArgs::All); } /// Arrange a call as unto a free function, except possibly with an @@ -687,8 +664,7 @@ CodeGenTypes::arrangeMSCtorClosure(const CXXConstructorDecl *CD, static const CGFunctionInfo & arrangeFreeFunctionLikeCall(CodeGenTypes &CGT, CodeGenModule &CGM, const CallArgList &args, const FunctionType *fnType, - unsigned numExtraRequiredArgs, bool chainCall, - const FunctionDecl *ABIInfoFD) { + unsigned numExtraRequiredArgs, bool chainCall) { assert(args.size() >= numExtraRequiredArgs); ExtParameterInfoList paramInfos; @@ -721,7 +697,7 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT, CodeGenModule &CGM, FnInfoOpts opts = chainCall ? FnInfoOpts::IsChainCall : FnInfoOpts::None; return CGT.arrangeLLVMFunctionInfo(GetReturnType(fnType->getReturnType()), opts, argTypes, fnType->getExtInfo(), - paramInfos, required, ABIInfoFD); + paramInfos, required); } /// Figure out the rules for calling a function with the given formal @@ -729,10 +705,9 @@ arrangeFreeFunctionLikeCall(CodeGenTypes &CGT, CodeGenModule &CGM, /// because the function might be unprototyped, in which case it's /// target-dependent in crazy ways. const CGFunctionInfo &CodeGenTypes::arrangeFreeFunctionCall( - const CallArgList &args, const FunctionType *fnType, bool chainCall, - const FunctionDecl *ABIInfoFD) { + const CallArgList &args, const FunctionType *fnType, bool chainCall) { return arrangeFreeFunctionLikeCall(*this, CGM, args, fnType, - chainCall ? 1 : 0, chainCall, ABIInfoFD); + chainCall ? 1 : 0, chainCall); } /// A block function is essentially a free function with an @@ -740,10 +715,8 @@ const CGFunctionInfo &CodeGenTypes::arrangeFreeFunctionCall( const CGFunctionInfo & CodeGenTypes::arrangeBlockFunctionCall(const CallArgList &args, const FunctionType *fnType) { - // FIXME: Pass the enclosing function's ABI information so block calls use - // the caller's target features. return arrangeFreeFunctionLikeCall(*this, CGM, args, fnType, 1, - /*chainCall=*/false, nullptr); + /*chainCall=*/false); } const CGFunctionInfo & @@ -753,11 +726,10 @@ CodeGenTypes::arrangeBlockFunctionDeclaration(const FunctionProtoType *proto, getExtParameterInfosForCall(proto, 1, params.size()); CanQualTypeList argTypes = getArgTypesForDeclaration(Context, params); - // FIXME: Use the block's target features when arranging its invoke function. - return arrangeLLVMFunctionInfo( - GetReturnType(proto->getReturnType()), FnInfoOpts::None, argTypes, - proto->getExtInfo(), paramInfos, RequiredArgs::forPrototypePlus(proto, 1), - /*ABIInfoFD=*/nullptr); + return arrangeLLVMFunctionInfo(GetReturnType(proto->getReturnType()), + FnInfoOpts::None, argTypes, + proto->getExtInfo(), paramInfos, + RequiredArgs::forPrototypePlus(proto, 1)); } const CGFunctionInfo & @@ -768,7 +740,7 @@ CodeGenTypes::arrangeBuiltinFunctionCall(QualType resultType, argTypes.push_back(Context.getCanonicalParamType(Arg.Ty)); return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None, argTypes, FunctionType::ExtInfo(), - /*paramInfos=*/{}, RequiredArgs::All, nullptr); + /*paramInfos=*/{}, RequiredArgs::All); } const CGFunctionInfo & @@ -778,14 +750,14 @@ CodeGenTypes::arrangeBuiltinFunctionDeclaration(QualType resultType, return arrangeLLVMFunctionInfo(GetReturnType(resultType), FnInfoOpts::None, argTypes, FunctionType::ExtInfo(), {}, - RequiredArgs::All, /*ABIInfoFD=*/nullptr); + RequiredArgs::All); } const CGFunctionInfo &CodeGenTypes::arrangeBuiltinFunctionDeclaration( CanQualType resultType, ArrayRef<CanQualType> argTypes) { return arrangeLLVMFunctionInfo(resultType, FnInfoOpts::None, argTypes, - FunctionType::ExtInfo(), {}, RequiredArgs::All, - /*ABIInfoFD=*/nullptr); + ... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/210303 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
