【问题标题】:Array Detection in Function arg list LLVM opt passFunction arg list LLVM opt pass 中的数组检测
【发布时间】:2012-11-28 04:38:17
【问题描述】:

假设我有以下 LLVM IR

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

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

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

【问题讨论】:

    标签: llvm-3.0 llvm-ir


    【解决方案1】:

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

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

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

    对超出数组末尾的索引没有限制 由静态类型隐含

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      相关资源
      最近更新 更多