我使用以下方式从整数常量创建一个llvm::Value*:
llvm::Value* constValue = llvm::ConstantInt::get( llvmContext , llvm::APInt( node->someInt() ));
现在我想要检索编译时常量的值;
int constIntValue = constValue->???
LLVM程序员手册中展示的例子似乎暗示着,当使用类型(而不是类型加指针)模板参数时,cast<>将接受一个指针,然而我相当确定这在2.8版本之后已经失效:
llvm::Value* foo = 0;
llvm::ConstantInt* intValue = & llvm::cast< llvm::ConstantInt , llvm::Value >(foo );
//build error:
//error: no matching function for call to ‘cast(llvm::Value*&)’
在这里什么是正确的方法?
cast
将导致断言失败,而dyn_cast
则会返回0,而不是相反。 - RoastDuck