【发布时间】:2016-08-02 16:20:26
【问题描述】:
我有一个 llvm::Value。 Value::dump() 打印
void (...)* bitcast (void ()* @test_impl to void (...)*)
通常我会假设这是一个 BitCastOperator,但是,这个类似乎不存在于 llvm 3.4.2(我正在使用,因为我正在使用的工具之一尚未移植到更新版本)。
这是 Value 的哪个子类?而且,我将来如何回答这些问题?我试过了:
- 使用 lldb 进行调试。这只能告诉我顶级类。
- 访问 rtti 信息。 LLVM 似乎有自己的 RTTI 系统,与 typeid() 不兼容,也没有 typeid() 的等价物。
- 编译为 C++ API 代码,这将告诉我如何创建这个值,我可以从中看到类型。但是, llc -march=cpp 失败并出现一个晦涩的错误(无效的原始类型),并且 clang -march=cpp 表示它不知道这种架构。我确认 clang --version 和 llc --version 给出了相同的版本号。
- 我确认它不是 BitCastInst,因为 dyn_cast 不起作用。
【问题讨论】: