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

问题描述 投票:0回答:1

在这样的结构中:

struct point{
    int x0;
    int y0;
};

当我使用 C++ API 创建

x0
时,如何将名称
y0
llvm::StructType
传递给 llvm?

c++ llvm named
1个回答
1
投票

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

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

  • 如果您想为这些字段启用调试信息,这无论如何都不是正确的方法 - 相反,请使用

    DIBuilder
    定义结构类型

  • 如果您想让 IR 的文本表示(.ll 文件和

    dump()
    结果)更具可读性,您可以做一些不同的事情 - 每当访问字段时,让前端使用该字段值的字段名称。例如:

    %p.py0 = getelementptr %point* %p, i32 0, i32 1
    %p.y0 = load i32* %p.py0
    
    访问第二个字段的

    getelementptr

     的名称表明它是指向名为 
    y0
     的字段的指针,并且负载的名称表明它是实际字段。另请注意名称如何包含从中访问的变量的名称,以提高可读性。

© www.soinside.com 2019 - 2024. All rights reserved.