我想了解如何将参数以.ll文本格式传递给函数。
我的c函数原型如下:
int power(int n, int r)
clang(后接opt)编译为:
define i32 @power(i32, i32) #0 {
在任何地方都没有明确引用“ n”,“ r”!了解参数的实际使用方式并非易事。
函数中的第一个参数可能是约定,例如“%1”,但这似乎并不明显。
有什么想法吗?
在函数标题中是否有命名约定或用于理解我的“ c”参数如何映射到.ll名称的内容?
答案 0 :(得分:1)
没有这样的约定,没有,因为IR是值而不是变量,所以名称实际上并没有朝那个方向映射。
int a = 42;
while(b())
a += c();
d(a);
有一个称为a的变量,但是IR可能包含四个值,它们对应于第1行末尾,第3行起始,第3行末尾和第4行起始处a的值。
This answer显示了如何添加名称。是否执行此操作取决于您,如果要执行此操作,则也必须找到一个命名方案。 “ a.line4.column0”或其他任何内容。