@@ -56,6 +56,7 @@ const UNNAMED: *const c_char = c"".as_ptr();
5656
5757impl < ' ll , ' tcx > BackendTypes for Builder < ' _ , ' ll , ' tcx > {
5858 type Value = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Value ;
59+ type Metadata = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Metadata ;
5960 type Function = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Function ;
6061 type BasicBlock = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: BasicBlock ;
6162 type Type = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Type ;
@@ -678,25 +679,21 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
678679 unsafe {
679680 let llty = self . cx . val_ty ( load) ;
680681 let v = [
681- self . cx . const_uint_big ( llty, range. start ) ,
682- self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ,
682+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. start ) ) ,
683+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ) ,
683684 ] ;
684685
685- llvm:: LLVMSetMetadata (
686- load,
687- llvm:: MD_range as c_uint ,
688- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
689- ) ;
686+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
687+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
688+ llvm:: LLVMSetMetadata ( load, llvm:: MD_range as c_uint , md) ;
690689 }
691690 }
692691
693692 fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
694693 unsafe {
695- llvm:: LLVMSetMetadata (
696- load,
697- llvm:: MD_nonnull as c_uint ,
698- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
699- ) ;
694+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
695+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
696+ llvm:: LLVMSetMetadata ( load, llvm:: MD_nonnull as c_uint , md) ;
700697 }
701698 }
702699
@@ -744,8 +741,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
744741 // *always* point to a metadata value of the integer 1.
745742 //
746743 // [1]: https://llvm.org/docs/LangRef.html#store-instruction
747- let one = self . cx . const_i32 ( 1 ) ;
748- let node = llvm:: LLVMMDNodeInContext ( self . cx . llcx , & one, 1 ) ;
744+ let one = llvm:: LLVMValueAsMetadata ( self . cx . const_i32 ( 1 ) ) ;
745+ let node = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , & one, 1 ) ;
746+ let node = llvm:: LLVMMetadataAsValue ( & self . llcx , node) ;
749747 llvm:: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node) ;
750748 }
751749 }
@@ -1210,11 +1208,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
12101208
12111209 fn set_invariant_load ( & mut self , load : & ' ll Value ) {
12121210 unsafe {
1213- llvm:: LLVMSetMetadata (
1214- load,
1215- llvm:: MD_invariant_load as c_uint ,
1216- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1217- ) ;
1211+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1212+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1213+ llvm:: LLVMSetMetadata ( load, llvm:: MD_invariant_load as c_uint , md) ;
12181214 }
12191215 }
12201216
@@ -1343,33 +1339,26 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
13431339
13441340 fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
13451341 unsafe {
1346- let v = [ self . cx . const_u64 ( align. bytes ( ) ) ] ;
1347-
1348- llvm:: LLVMSetMetadata (
1349- load,
1350- llvm:: MD_align as c_uint ,
1351- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
1352- ) ;
1342+ let v = [ llvm:: LLVMValueAsMetadata ( self . cx . const_u64 ( align. bytes ( ) ) ) ] ;
1343+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
1344+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1345+ llvm:: LLVMSetMetadata ( load, llvm:: MD_align as c_uint , md) ;
13531346 }
13541347 }
13551348
13561349 fn noundef_metadata ( & mut self , load : & ' ll Value ) {
13571350 unsafe {
1358- llvm:: LLVMSetMetadata (
1359- load,
1360- llvm:: MD_noundef as c_uint ,
1361- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1362- ) ;
1351+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1352+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1353+ llvm:: LLVMSetMetadata ( load, llvm:: MD_noundef as c_uint , md) ;
13631354 }
13641355 }
13651356
13661357 pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
13671358 unsafe {
1368- llvm:: LLVMSetMetadata (
1369- inst,
1370- llvm:: MD_unpredictable as c_uint ,
1371- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1372- ) ;
1359+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1360+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1361+ llvm:: LLVMSetMetadata ( inst, llvm:: MD_unpredictable as c_uint , md) ;
13731362 }
13741363 }
13751364
0 commit comments