C++ 在llvm中标识常量值
我正在编写一个条件,以查看const llvm::Value*是否为常量。代码如下:C++ 在llvm中标识常量值,c++,llvm,C++,Llvm,我正在编写一个条件,以查看const llvm::Value*是否为常量。代码如下: if(const Constant* c = dynamic_cast<Constant>(val)){ ...... } if(常数*c=dynamic_cast(val)){ ...... } “val”这里是一个常量llvm::Value*,然而,编译器说 error: 'llvm::Constant' is not a reference or pointer if(const
if(const Constant* c = dynamic_cast<Constant>(val)){
......
}
if(常数*c=dynamic_cast(val)){
......
}
“val”这里是一个常量llvm::Value*,然而,编译器说
error: 'llvm::Constant' is not a reference or pointer
if(const Constant* c = dynamic_cast<Constant>(val)){
^ ~~~~~~~~~~
错误:“llvm::Constant”不是引用或指针
if(常数*c=动态(val)){
^ ~~~~~~~~~~
如何修改它?在
dynamic\u cast
中使用的类型必须是指针或引用类型。我猜您也希望保持常量
试试这个:
dynamic_cast<const Constant*>(val)
// ^^^^^ ^
dynamic_cast(val)
// ^^^^^ ^
如果不需要在If块中使用常量,则可以使用isa()
if(isa(val)){……}
仍然不工作,但是dyn_cast(val)可以编译,我还没有检查它的正确性。抱歉,我没有意识到您需要llvmdyn_cast
函数看起来就像直接切换到dyn_cast(val)
正是您想要的
if(isa<Constant>(val)){ ...... }