在这样的结构中:

struct point{
    int x0;
    int y0;
};


使用C ++ API创建llvm :: StructType时,如何将名称x0和y0传递给llvm?

最佳答案

你不能在LLVM IR中,结构字段没有名称。

您可以做什么取决于您要实现的目标:


如果您想为这些字段启用调试信息,无论如何这都不是正确的方法,而是使用DIBuilderdefine 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/

10-12 04:34