Llvm 可变参数

Llvm 可变参数,llvm,variadic-functions,Llvm,Variadic Functions,当我将一个c文件编译为使用printf函数的LLVM-IR时,会得到一个函数声明行,如下所示: declare i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr #2 我现在想知道LLVM如何转换可变参数?printf(char*,…)不是引用标准库中的宏吗? 另外,如何在LLVM库中进行这样的声明?您应该看到调用方正在设置_va_arg结构,接收方正在使用该结构。与C中的模型基本相同。谢谢你的回答。经过进一步的研究,我在L

当我将一个c文件编译为使用printf函数的LLVM-IR时,会得到一个函数声明行,如下所示:

declare i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr #2
我现在想知道LLVM如何转换可变参数?
printf(char*,…)
不是引用标准库中的宏吗?
另外,如何在LLVM库中进行这样的声明?

您应该看到调用方正在设置_va_arg结构,接收方正在使用该结构。与C中的模型基本相同。谢谢你的回答。经过进一步的研究,我在LLVM语言参考中找到了相应的部分:LLVM确实有自己的内部函数,其工作原理与stdarg.hYes中的C宏相同,有很多内部函数。我假设您直接生成IR或使用llvm库,您会发现它是受支持的,您应该看到调用方正在设置_va_arg结构,接收方正在使用它。与C中的模型基本相同。谢谢你的回答。经过进一步的研究,我在LLVM语言参考中找到了相应的部分:LLVM确实有自己的内部函数,其工作原理与stdarg.hYes中的C宏相同,有很多内部函数。我假设您直接生成IR或使用llvm库,您会发现它是受支持的