确定LLVM中的常数值

Identify constant value in llvm

本文关键字:常数值 LLVM 确定      更新时间:2023-10-16

我正在写一个条件,看看const llvm :: value*是否是常数。代码如下:

if(const Constant* c = dynamic_cast<Constant>(val)){
    ......
}

" val"这是一个const llvm :: value*,但是,编译器说

error: 'llvm::Constant' is not a reference or pointer
if(const Constant* c = dynamic_cast<Constant>(val)){
                       ^           ~~~~~~~~~~

如何修改它?

如果您不需要使用if块内部的常数,则可以使用isa&lt;>((

if(isa<Constant>(val)){ ...... }

dynamic_cast中使用的类型必须是指针或参考类型。我猜你也想保留 const ness。

尝试以下操作:

dynamic_cast<const Constant*>(val)
//           ^^^^^         ^