相关疑难解决方法(0)

获取LLVM值的原始变量名称

llvm::User(例如指令)的操作数是llvm::Values.

mem2reg传递之后,变量采用SSA形式,并且它们与原始源代码对应的名称将丢失. Value::getName()只是针对某些事情; 对于大多数变量,它们是中介,它没有设置.

instnamer通可以运行给所有的变量的名称,如TMP1TMP2,但这并不能捕捉到他们最初来自.这是原始C代码旁边的一些LLVM IR:

在此输入图像描述

我正在构建一个简单的html页面来可视化和调试我正在进行的一些优化,并且我想将SSA变量显示为名称ver表示法,而不仅仅是临时的instnamer名称.它只是为了帮助我的可读性.

我通过命令行来获取我的LLVM IR,例如:

 clang -g3 -O1 -emit-llvm -o test.bc -c test.c
Run Code Online (Sandbox Code Playgroud)

在国际关系中有电话llvm.dbg.declare和电话llvm.dbg.value; 你如何变成原始的源代码名称和SSA版本号?

那么如何从一个llvm::Value?确定原始变量(或命名常量名称)?调试器必须能够做到这一点,所以我该怎么办?

compiler-construction llvm clang debug-symbols llvm-ir

19
推荐指数
2
解决办法
6345
查看次数