@@ -34,7 +34,7 @@ use smallvec::SmallVec;
3434use crate :: back:: write:: to_llvm_code_model;
3535use crate :: callee:: get_fn;
3636use crate :: debuginfo:: metadata:: apply_vcall_visibility_metadata;
37- use crate :: llvm:: { Metadata , MetadataKindId } ;
37+ use crate :: llvm:: { Metadata , MetadataKindId , Module } ;
3838use crate :: type_:: Type ;
3939use crate :: value:: Value ;
4040use crate :: { attributes, common, coverageinfo, debuginfo, llvm, llvm_util} ;
@@ -495,14 +495,7 @@ pub(crate) unsafe fn create_module<'ll>(
495495 format ! ( "rustc version {}" , option_env!( "CFG_VERSION" ) . expect( "CFG_VERSION" ) ) ;
496496
497497 let name_metadata = cx. create_metadata ( rustc_producer. as_bytes ( ) ) ;
498-
499- unsafe {
500- llvm:: LLVMAddNamedMetadataOperand (
501- llmod,
502- c"llvm.ident" . as_ptr ( ) ,
503- & cx. get_metadata_value ( llvm:: LLVMMDNodeInContext2 ( llcx, & name_metadata, 1 ) ) ,
504- ) ;
505- }
498+ cx. module_add_named_metadata_node ( llmod, c"llvm.ident" , & [ name_metadata] ) ;
506499
507500 // Emit RISC-V specific target-abi metadata
508501 // to workaround lld as the LTO plugin not
@@ -1031,6 +1024,21 @@ impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX> {
10311024 let md = self . md_node_in_context ( md_list) ;
10321025 self . set_metadata ( instruction, kind_id, md) ;
10331026 }
1027+
1028+ /// Helper method for the sequence of calls:
1029+ /// - `LLVMMDNodeInContext2` (to create an `llvm::MDNode` from a list of metadata)
1030+ /// - `LLVMMetadataAsValue` (to adapt that node to an `llvm::Value`)
1031+ /// - `LLVMAddNamedMetadataOperand` (to set that node as metadata of `kind_name` for `module`)
1032+ pub ( crate ) fn module_add_named_metadata_node (
1033+ & self ,
1034+ module : & ' ll Module ,
1035+ kind_name : & CStr ,
1036+ md_list : & [ & ' ll Metadata ] ,
1037+ ) {
1038+ let md = self . md_node_in_context ( md_list) ;
1039+ let md_as_val = self . get_metadata_value ( md) ;
1040+ unsafe { llvm:: LLVMAddNamedMetadataOperand ( module, kind_name. as_ptr ( ) , md_as_val) } ;
1041+ }
10341042}
10351043
10361044impl HasDataLayout for CodegenCx < ' _ , ' _ > {
0 commit comments