LLVM 检查一个 PointerType 是否是一个 Const 指针

LLVM Check if a PointerType is a Const pointer

我需要知道,如果函数参数的给定 LLVM 类型实际上是一个 const 指针。

有没有办法在 LLVM 中检查这个?

你想要的大概是LLVM's function and function parameter attributes。例如,这里检查被调用函数的 return 值是否可以为空:

foo = called->hasAttribute(AttributeList::ReturnIndex, llvm::Attribute::NonNull)

这将检查特定值是否为 const 参数

isa<Argument>(value) && cast<Argument>(value)->onlyReadsMemory()

好吧,假设我知道你所说的 const 指针是什么意思。常量有很多深浅的含义...