在这样的结构中:
struct point{
int x0;
int y0;
};
当我使用C ++ API创建llvm :: StructType时,如何将名称x0和y0传递给llvm?
答案 0 :(得分:1)
你不能;在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
字段的指针,并且该加载的名称表明它是实际字段。另请注意该名称如何包含从中访问的变量的名称,以提高可读性。