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

问题描述 投票:0回答:1

我想了解如何将参数以.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的内容?

clang llvm
1个回答
0
投票

没有这样的约定,不,并且名称实际上并没有映射,因为IR具有值而不是变量。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.