我一直在尝试使用llvm IR中的cpp API提取指针类型,以用作指令的元数据。我已经找到了各种方法来获取指令操作数的指针类型(例如getPointerElementType()),但结果总是以十六进制格式(0x ....),这是无用的,因为它不会告诉指针是否为int或浮动等我主要使用加载指令。 我的问题是如何在Ascii中获取指针类型(例如float或i32)?
P.S。我对llvm很新,所以如果我问一些非常基本的话,请原谅我。
答案 0 :(得分:0)
我在这里找到了答案, Is any way to get llvm deference pointer value's raw type(i.e. pointer type)
但有几个遗漏:
请记住要将LoadH中的Instructions.h包括在内,如下所示:
#include“llvm / IR / Instructions.h”
通过将指针传递给指令,可以为加载指令(而不是函数调用)优化接受的答案:
LoadInst * LI = dyn_cast(O0)
O0应该是指向加载指令的指针。
希望它有所帮助。