在LLVM版本3.6中,他们已经大量更改了元数据类,并且他们已经从值中拆分了元数据。 所以我之前基于3.5版本的代码不再适用了。我在升级代码时遇到了困难。任何人都可以提供帮助。
e.g。 :上一个代码:
MDNode *record;
Value *undVal = record->getOperand(1);
Type *type_hint = undVal->getType();
有谁知道如何升级此代码以使其兼容3.6?
我试过了:
MDNode *record;
const MDOperand &undVal = record->getOperand(1);
Type *type_hint = undVal->getType();
但它不起作用。导致编译错误说
'的getType' :不是< llvm :: Metadata'
的成员
感谢任何帮助。
答案 0 :(得分:1)
你有没有试过dyn_cast<>,就像这样:
Value* undval = dyn_cast<Value>(record->getoperand(1));
Type* type_hint;
if(undval) type_hint = undVal->hetType();
答案 1 :(得分:1)
MDNode *record;
Value *undVal = dyn_cast<ValueAsMetadata>(record->getOperand(1))->getValue();