首页 > 解决方案 > 如何获取 Ascii 格式 llvm 的指针类型?

问题描述

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

Ps 我对 llvm 很陌生,所以如果我问了一些非常基本的问题,请原谅我。

标签: c++llvmllvm-ir

解决方案


我在这里找到了答案, 有什么方法可以获取 llvm 引用指针值的原始类型(即指针类型)

但是有几个缺失的位:

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

    #include "llvm/IR/Instructions.h"

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

    LoadInst* LI = dyn_cast(O0)

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

希望能帮助到你。


推荐阅读