[clang] [CIR] Cleanup support for C functions (PR #136854)
Andy Kaylor via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 23 10:49:30 PDT 2025
================
@@ -47,18 +98,51 @@ class CIRGenFunctionInfo final
// This function has to be CamelCase because llvm::FoldingSet requires so.
// NOLINTNEXTLINE(readability-identifier-naming)
- static void Profile(llvm::FoldingSetNodeID &id, CanQualType resultType) {
+ static void Profile(llvm::FoldingSetNodeID &id, RequiredArgs required,
+ CanQualType resultType,
+ llvm::ArrayRef<CanQualType> argTypes) {
+ id.AddBoolean(required.getOpaqueData());
resultType.Profile(id);
+ for (const auto &arg : argTypes)
+ arg.Profile(id);
}
- void Profile(llvm::FoldingSetNodeID &id) { getReturnType().Profile(id); }
+ // NOLINTNEXTLINE(readability-identifier-naming)
+ void Profile(llvm::FoldingSetNodeID &id) {
+ id.AddBoolean(required.getOpaqueData());
+ getReturnType().Profile(id);
+ for (const auto &i : arguments())
+ i.type.Profile(id);
+ }
CanQualType getReturnType() const { return getArgsBuffer()[0].type; }
cir::ABIArgInfo &getReturnInfo() { return getArgsBuffer()[0].info; }
const cir::ABIArgInfo &getReturnInfo() const {
return getArgsBuffer()[0].info;
}
+ using const_arg_iterator = const ArgInfo *;
+ using arg_iterator = ArgInfo *;
+
+ const_arg_iterator arg_begin() const { return getArgsBuffer() + 1; }
+ const_arg_iterator arg_end() const { return getArgsBuffer() + 1 + numArgs; }
+ arg_iterator arg_begin() { return getArgsBuffer() + 1; }
+ arg_iterator arg_end() { return getArgsBuffer() + 1 + numArgs; }
+
+ unsigned arg_size() const { return numArgs; }
+
+ llvm::MutableArrayRef<ArgInfo> arguments() {
----------------
andykaylor wrote:
This doesn't seem like the right name here. It's return info about the arguments, not the actual arguments, right? Similarly for the arg_begin and arg_end functions.
https://github.com/llvm/llvm-project/pull/136854
More information about the cfe-commits
mailing list