我想了解如何将参数以.ll文本格式传递给函数。
我的c函数原型看起来像:
void kernel(int first[N][N],int second[N][N],int multiply[N][N])
clang(后接opt)编译为:
define void @kernel([3 x i32]*, [3 x i32]*, [3 x i32]*)
没有明确提及“第一”,“第二”和“乘”。了解参数的实际使用方式并非易事。
可能有一个类似“%1”的约定是该函数的第一个参数,等等,但这似乎并不那么明显。
任何想法?
是否有命名约定或将我的“ c”名称映射到.ll的内容?
没有这样的约定,不,并且名称实际上并没有映射,因为IR具有值而不是变量。
int a = 42;
while(b())
a += c();
d(a);
[有一个变量称为a,但是IR可能包含四个值,它们对应于第1行末尾,第3行起始,第3行末尾和第4行起始处a的值。
This answer显示如何添加名称。是否执行此操作取决于您,如果要执行此操作,也必须找到一个命名方案。 “ a.line4.column0”或其他任何内容。