函数arg列表中的数组检测LLVM opt pass

时间:2012-12-10 17:59:53

标签: llvm-3.0 llvm-ir

假设我有以下LLVM IR

define void @foo(i32 *%a,i32 *%m)nounwind {...

我通过传递第一个arg的数组并传递m的变量地址来调用foo。 现在,我需要分析foo的arg列表并确定哪个arg传递给一个数组,哪个只是一个指针地址。我知道两者都是地址,但LLVM提供某种元数据,以便我可以静态地确定传入的类型。

注意:我正在写一个选择通行证

1 个答案:

答案 0 :(得分:1)

您可能可以使用“指向数组的指针”类型:

define void @foo([0 x i32]* %a, i32* %m)

零大小的数组是完全有效的,llvm文档说:

  

对数组末尾之外的索引没有限制   静态类型隐含的