在这样的结构中:
struct point{
int x0;
int y0;
};
使用C ++ API创建llvm :: StructType时,如何将名称x0和y0传递给llvm?
最佳答案
你不能在LLVM IR中,结构字段没有名称。
您可以做什么取决于您要实现的目标:
如果您想为这些字段启用调试信息,无论如何这都不是正确的方法,而是使用DIBuilder
到define the struct type。
如果要使IR的文本表示形式(.ll文件和dump()
结果)更具可读性,则可以执行其他操作-每当访问字段时,让前端使用字段名称作为该字段的值。例如:
%p.py0 = getelementptr %point* %p, i32 0, i32 1
%p.y0 = load i32* %p.py0
访问第二个字段的
getelementptr
具有一个名称,该名称指示它是指向名为y0
的字段的指针,而负载具有一个名称,指示该字段是实际字段。还要注意,该名称如何包括从中访问变量的名称,以提高可读性。关于c++ - 如何在llvm中创建命名局部变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21140883/