在这样的结构中:
struct point{
int x0;
int y0;
};
当我使用 C++ API 创建
x0
时,如何将名称 y0
和 llvm::StructType
传递给 llvm?
你不能;在 LLVM IR 中,结构体的字段没有名称。
您可以做什么取决于您想要实现的目标:
如果您想为这些字段启用调试信息,这无论如何都不是正确的方法 - 相反,请使用
DIBuilder
来定义结构类型。如果您想让 IR 的文本表示(.ll 文件和
dump()
结果)更具可读性,您可以做一些不同的事情 - 每当访问字段时,让前端使用该字段值的字段名称。例如:
%p.py0 = getelementptr %point* %p, i32 0, i32 1
%p.y0 = load i32* %p.py0
访问第二个字段的 getelementptr
的名称表明它是指向名为
y0
的字段的指针,并且负载的名称表明它是实际字段。另请注意名称如何包含从中访问的变量的名称,以提高可读性。