c++ - 如何获取 Ascii 格式 llvm 的指针类型?

标签 c++ llvm llvm-ir

我一直在尝试使用 llvm IR 中的 cpp API 提取指针类型,以用作指令的元数据。我找到了各种方法来获取指令操作数的指针类型(例如 getPointerElementType()),但结果始终为十六进制格式(0x....),这没有用,因为它无法判断指针是否为 int或 float 等。我主要使用加载指令。 我的问题是如何获取 Ascii 中的指针类型(例如 float 或 i32)?

附言我是 llvm 的新手,所以如果我问了一些非常基本的问题,请原谅我。

最佳答案

我在这里找到了答案, Is any way to get llvm deference pointer value's raw type(i.e. pointer type)

不过还有一些缺失:

  1. 请记住包含 Instructions.h 以便 LoadInst 被识别如下:

    #include "llvm/IR/Instructions.h"

  2. 可以通过将指针传递给指令来针对加载指令(而不是函数调用)优化已接受的答案:

    LoadInst* LI = dyn_cast(O0)

O0 应该是指向相关加载指令的指针。

希望对您有所帮助。

关于c++ - 如何获取 Ascii 格式 llvm 的指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739283/

相关文章:

我的 std::map of &Objects 和 std::vector of &Objects 导致 C++ 内存泄漏

c++ - 模板化类无法采用其他模板化类

compiler-construction - LLVM,通过引用调用

c++ - 如何在 LLVM pass 中的模块末尾插入函数调用?

llvm - lli 不会善待 rust 的 LLVM IR

c++ - 我可以分离内部 std::future 线程吗?

c++ - 检查 std::any 变量是否包含 std::string 时出现问题

c++ - 是否有关于 std::move 的这种使用的编译警告?

c - 每个源文件展开一次 __COUNTER__ 宏

c - LLVM IR 浮点转换