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

Reply via email to