铸造LLVM值的指令

时间:2018-01-14 23:20:28

标签: c++ llvm

我试图将指令转换为值,如下所示:

Value *def_val = (dyn_cast<Value>(instr));

然而,这会产生以下错误:

error: non-pointer
  operand type 'llvm::Value' incompatible with nullptr
return isa<X>(Val) ? cast<X>(Val) : nullptr;

我还尝试转换为Value*,并将*放在整个dyn_cast表达式的前面,但这些选项都不起作用。

2 个答案:

答案 0 :(得分:0)

获取指令指针:

Value *val = dyn_cast<Value>(&instr);

答案 1 :(得分:-1)

你的dynamic_cast必须是值*(并且dynamic_cast的参数需要是指向已经处理多态行为的东西的指针。如果后者不是这种情况,你可能可以使用其他一些演员但是dynamic_cast不行。