识别llvm中的常量值

时间:2018-02-06 05:03:31

标签: c++ llvm

我正在编写一个条件来查看const llvm :: Value *是否为常量。代码如下:

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

&#34; VAL&#34;这是一个const llvm :: Value *,然而,编译器说

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

我该如何修改?

2 个答案:

答案 0 :(得分:0)

dynamic_cast中使用的类型必须是指针或引用类型。我猜你也想要保持const

试试这个:

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

答案 1 :(得分:0)

如果不需要在if块内部使用常量,则可以使用isa <>()

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