c – 如何处理LLVM metadata.h中的更改

在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();
点赞