如何在llvm中创建命名局部变量?

时间:2014-01-15 15:03:53

标签: c++ api variables llvm named

在这样的结构中:

struct point{
    int x0;
    int y0;
};

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

1 个答案:

答案 0 :(得分:1)

你不能;在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字段的指针,并且该加载的名称表明它是实际字段。另请注意该名称如何包含从中访问的变量的名称,以提高可读性。