Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有以下 LLVM IR
定义 void @foo(i32* %a, i32* %m) nounwind { ...
我通过为第一个 arg 传递一个数组并为 m 传递一个变量的地址来调用 foo。现在,我需要分析 foo 的 arg 列表并确定哪个 arg 传递了一个数组,而哪个只是一个指针地址。我知道两者实际上都是地址,但是 LLVM 是否提供某种元数据,以便我可以静态确定传入的类型。
注意:我正在写一个选择通行证
您可能可以改用“指向数组的指针”类型:
define void @foo([0 x i32]* %a, i32* %m)
零大小的数组是完全有效的,llvm 文档说:
对超出静态类型隐含的数组末尾的索引没有限制