在LLVM版本3.6中,他们已经大量更改了元数据类,并且他们已经从值中拆分了元数据.
所以我之前基于3.5版本的代码不再起作用了.我在升级代码时遇到了困难.任何人都可以帮忙.
例如:上一个代码:
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’ : is not a member of ‘llvm::Metadata’
任何帮助表示赞赏.
最佳答案 您是否尝试过dyn_cast<>,如下所示:
Value* undval = dyn_cast<Value>(record->getoperand(1));
Type* type_hint;
if(undval) type_hint = undVal->hetType();