@@ -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 ;
@@ -677,26 +678,19 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
677678
678679 unsafe {
679680 let llty = self . cx . val_ty ( load) ;
680- let v = [
681- self . cx . const_uint_big ( llty, range. start ) ,
682- self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ,
681+ let md = [
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 ] ;
684-
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- ) ;
685+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , md. as_ptr ( ) , md. len ( ) ) ;
686+ self . set_metadata ( load, llvm:: MD_range , md) ;
690687 }
691688 }
692689
693690 fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
694691 unsafe {
695- llvm:: LLVMSetMetadata (
696- load,
697- llvm:: MD_nonnull as c_uint ,
698- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
699- ) ;
692+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
693+ self . set_metadata ( load, llvm:: MD_nonnull , md) ;
700694 }
701695 }
702696
@@ -744,9 +738,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
744738 // *always* point to a metadata value of the integer 1.
745739 //
746740 // [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 ) ;
749- llvm :: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node ) ;
741+ let one = llvm :: LLVMValueAsMetadata ( self . cx . const_i32 ( 1 ) ) ;
742+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , & one, 1 ) ;
743+ self . set_metadata ( store, llvm:: MD_nontemporal , md ) ;
750744 }
751745 }
752746 store
@@ -1210,11 +1204,8 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
12101204
12111205 fn set_invariant_load ( & mut self , load : & ' ll Value ) {
12121206 unsafe {
1213- llvm:: LLVMSetMetadata (
1214- load,
1215- llvm:: MD_invariant_load as c_uint ,
1216- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1217- ) ;
1207+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1208+ self . set_metadata ( load, llvm:: MD_invariant_load , md) ;
12181209 }
12191210 }
12201211
@@ -1343,33 +1334,23 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
13431334
13441335 fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
13451336 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- ) ;
1337+ let md = [ llvm:: LLVMValueAsMetadata ( self . cx . const_u64 ( align. bytes ( ) ) ) ] ;
1338+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , md. as_ptr ( ) , md. len ( ) ) ;
1339+ self . set_metadata ( load, llvm:: MD_align , md) ;
13531340 }
13541341 }
13551342
13561343 fn noundef_metadata ( & mut self , load : & ' ll Value ) {
13571344 unsafe {
1358- llvm:: LLVMSetMetadata (
1359- load,
1360- llvm:: MD_noundef as c_uint ,
1361- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1362- ) ;
1345+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1346+ self . set_metadata ( load, llvm:: MD_noundef , md) ;
13631347 }
13641348 }
13651349
13661350 pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
13671351 unsafe {
1368- llvm:: LLVMSetMetadata (
1369- inst,
1370- llvm:: MD_unpredictable as c_uint ,
1371- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1372- ) ;
1352+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1353+ self . set_metadata ( inst, llvm:: MD_unpredictable , md) ;
13731354 }
13741355 }
13751356
0 commit comments