Index: lib/IR/Core.cpp =================================================================== --- lib/IR/Core.cpp +++ lib/IR/Core.cpp @@ -563,9 +563,12 @@ return nullptr; } -void LLVMSetMetadata(LLVMValueRef Inst, unsigned KindID, LLVMValueRef MD) { - MDNode *N = - MD ? cast(unwrap(MD)->getMetadata()) : nullptr; +void LLVMSetMetadata(LLVMValueRef Inst, unsigned KindID, LLVMValueRef Val) { + Metadata *MD = Val ? unwrap(Val)->getMetadata() : nullptr; + + MDNode *N = MD + ? (isa(MD) ? cast(MD) : MDNode::get(unwrap(Val)->getContext(), MD)) + : nullptr; unwrap(Inst)->setMetadata(KindID, N); }