Calling this via the C interface LLVMAddNamedMetadataOperand(M, "llvm.ident", LLVMMetadataAsValue(LLVMGetModuleContext(M), LLVMMDStringInContext2(LLVMGetModuleContext(M), "foo", 3))); produces an assert Core.cpp:1094: llvm::MDNode* extractMDNode(llvm::MetadataAsValue*): Assertion `(isa<MDNode>(MD) || isa<ConstantAsMetadata>(MD)) && "Expected a metadata node or a canonicalized constant"' failed.