假设我有以下LLVM IR
define void @foo(i32 *%a,i32 *%m)nounwind {...
我通过传递第一个arg的数组并传递m的变量地址来调用foo。 现在,我需要分析foo的arg列表并确定哪个arg传递给一个数组,哪个只是一个指针地址。我知道两者都是地址,但LLVM提供某种元数据,以便我可以静态地确定传入的类型。
注意:我正在写一个选择通行证
答案 0 :(得分:1)
您可能可以使用“指向数组的指针”类型:
define void @foo([0 x i32]* %a, i32* %m)
零大小的数组是完全有效的,llvm文档说:
对数组末尾之外的索引没有限制 静态类型隐含的