如何获取 Ascii 格式 llvm 的指针类型?
How to get Pointer Type in Ascii format llvm?
我一直在尝试使用 llvm IR 中的 cpp API 提取指针类型,以用作指令的元数据。我找到了多种获取指令操作数指针类型的方法(例如 getPointerElementType()),但结果始终为十六进制格式(0x....),这没有用,因为它无法判断指针是否为 int或浮动等。我主要使用加载指令。
我的问题是如何获取 Ascii 中的指针类型(例如 float 或 i32)?
P.s。我是 llvm 的新手,如果我问了一些非常基本的问题,请原谅我。
我在这里找到了答案,
虽然缺少一些位:
记得包含 Instructions.h 以便 LoadInst 被识别如下:
#include "llvm/IR/Instructions.h"
接受的答案可以通过将指针传递给指令来针对加载指令(而不是函数调用)进行优化:
LoadInst* LI = dyn_cast(O0)
O0 应该是指向相关加载指令的指针。
希望对您有所帮助。
我一直在尝试使用 llvm IR 中的 cpp API 提取指针类型,以用作指令的元数据。我找到了多种获取指令操作数指针类型的方法(例如 getPointerElementType()),但结果始终为十六进制格式(0x....),这没有用,因为它无法判断指针是否为 int或浮动等。我主要使用加载指令。 我的问题是如何获取 Ascii 中的指针类型(例如 float 或 i32)?
P.s。我是 llvm 的新手,如果我问了一些非常基本的问题,请原谅我。
我在这里找到了答案,
虽然缺少一些位:
记得包含 Instructions.h 以便 LoadInst 被识别如下:
#include "llvm/IR/Instructions.h"
接受的答案可以通过将指针传递给指令来针对加载指令(而不是函数调用)进行优化:
LoadInst* LI = dyn_cast(O0)
O0 应该是指向相关加载指令的指针。
希望对您有所帮助。