[clang] 1de15c1 - Add arrangeCXXMethodCall to the CodeGenABITypes interface. (#111597)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 16 09:35:10 PDT 2024
Author: Hiroshi Yamauchi
Date: 2024-10-16T09:35:05-07:00
New Revision: 1de15c15bc52b1e3bf97f90a72d79100dc3f5b8e
URL: https://github.com/llvm/llvm-project/commit/1de15c15bc52b1e3bf97f90a72d79100dc3f5b8e
DIFF: https://github.com/llvm/llvm-project/commit/1de15c15bc52b1e3bf97f90a72d79100dc3f5b8e.diff
LOG: Add arrangeCXXMethodCall to the CodeGenABITypes interface. (#111597)
In MSVC, the calling conventions for free functions and C++ instance
methods could be different, it makes sense to have this variant there.
Added:
Modified:
clang/include/clang/CodeGen/CodeGenABITypes.h
clang/lib/CodeGen/CodeGenABITypes.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/CodeGen/CodeGenABITypes.h b/clang/include/clang/CodeGen/CodeGenABITypes.h
index 9cbc5a8a2a3f41..836fdd75477c76 100644
--- a/clang/include/clang/CodeGen/CodeGenABITypes.h
+++ b/clang/include/clang/CodeGen/CodeGenABITypes.h
@@ -75,11 +75,25 @@ const CGFunctionInfo &arrangeCXXMethodType(CodeGenModule &CGM,
const FunctionProtoType *FTP,
const CXXMethodDecl *MD);
-const CGFunctionInfo &arrangeFreeFunctionCall(CodeGenModule &CGM,
- CanQualType returnType,
- ArrayRef<CanQualType> argTypes,
- FunctionType::ExtInfo info,
- RequiredArgs args);
+const CGFunctionInfo &
+arrangeCXXMethodCall(CodeGenModule &CGM, CanQualType returnType,
+ ArrayRef<CanQualType> argTypes, FunctionType::ExtInfo info,
+ ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos,
+ RequiredArgs args);
+
+const CGFunctionInfo &arrangeFreeFunctionCall(
+ CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes,
+ FunctionType::ExtInfo info,
+ 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) {
+ return arrangeFreeFunctionCall(CGM, returnType, argTypes, info, {}, args);
+}
/// Returns the implicit arguments to add to a complete, non-delegating C++
/// constructor call.
diff --git a/clang/lib/CodeGen/CodeGenABITypes.cpp b/clang/lib/CodeGen/CodeGenABITypes.cpp
index a6073e1188d6fa..3f10d68f8c5d45 100644
--- a/clang/lib/CodeGen/CodeGenABITypes.cpp
+++ b/clang/lib/CodeGen/CodeGenABITypes.cpp
@@ -59,14 +59,23 @@ CodeGen::arrangeCXXMethodType(CodeGenModule &CGM,
return CGM.getTypes().arrangeCXXMethodType(RD, FTP, MD);
}
-const CGFunctionInfo &
-CodeGen::arrangeFreeFunctionCall(CodeGenModule &CGM,
- CanQualType returnType,
- ArrayRef<CanQualType> argTypes,
- FunctionType::ExtInfo info,
- RequiredArgs args) {
- return CGM.getTypes().arrangeLLVMFunctionInfo(returnType, FnInfoOpts::None,
- argTypes, info, {}, args);
+const CGFunctionInfo &CodeGen::arrangeCXXMethodCall(
+ CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes,
+ FunctionType::ExtInfo info,
+ ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos,
+ RequiredArgs args) {
+ return CGM.getTypes().arrangeLLVMFunctionInfo(
+ returnType, FnInfoOpts::IsInstanceMethod, argTypes, info, paramInfos,
+ args);
+}
+
+const CGFunctionInfo &CodeGen::arrangeFreeFunctionCall(
+ CodeGenModule &CGM, CanQualType returnType, ArrayRef<CanQualType> argTypes,
+ FunctionType::ExtInfo info,
+ ArrayRef<FunctionProtoType::ExtParameterInfo> paramInfos,
+ RequiredArgs args) {
+ return CGM.getTypes().arrangeLLVMFunctionInfo(
+ returnType, FnInfoOpts::None, argTypes, info, paramInfos, args);
}
ImplicitCXXConstructorArgs
More information about the cfe-commits
mailing list