将“ c”函数参数映射到.ll原型的命名约定

时间:2019-12-06 08:56:47

标签: clang llvm

我想了解如何将参数以.ll文本格式传递给函数。

我的c函数原型如下:

int power(int n, int r)

clang(后接opt)编译为:

define i32 @power(i32, i32) #0 {

在任何地方都没有明确引用“ n”,“ r”!了解参数的实际使用方式并非易事。

函数中的第一个参数可能是约定,例如“%1”,但这似乎并不明显。

有什么想法吗?

函数标题中是否有命名约定或用于理解我的“ c”参数如何映射到.ll名称的内容?

1 个答案:

答案 0 :(得分:1)

没有这样的约定,没有,因为IR是值而不是变量,所以名称实际上并没有朝那个方向映射。

int a = 42;
while(b())
   a += c();
d(a);

有一个称为a的变量,但是IR可能包含四个值,它们对应于第1行末尾,第3行起始,第3行末尾和第4行起始处a的值。

This answer显示了如何添加名称。是否执行此操作取决于您,如果要执行此操作,则也必须找到一个命名方案。 “ a.line4.column0”或其他任何内容。