@@ -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 ;
@@ -623,26 +624,19 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
623624
624625 unsafe {
625626 let llty = self . cx . val_ty ( load) ;
626- let v = [
627- self . cx . const_uint_big ( llty, range. start ) ,
628- self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ,
627+ let md = [
628+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. start ) ) ,
629+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ) ,
629630 ] ;
630-
631- llvm:: LLVMSetMetadata (
632- load,
633- llvm:: MD_range as c_uint ,
634- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
635- ) ;
631+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , md. as_ptr ( ) , md. len ( ) ) ;
632+ self . set_metadata ( load, llvm:: MD_range , md) ;
636633 }
637634 }
638635
639636 fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
640637 unsafe {
641- llvm:: LLVMSetMetadata (
642- load,
643- llvm:: MD_nonnull as c_uint ,
644- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
645- ) ;
638+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
639+ self . set_metadata ( load, llvm:: MD_nonnull , md) ;
646640 }
647641 }
648642
@@ -690,9 +684,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
690684 // *always* point to a metadata value of the integer 1.
691685 //
692686 // [1]: https://llvm.org/docs/LangRef.html#store-instruction
693- let one = self . cx . const_i32 ( 1 ) ;
694- let node = llvm:: LLVMMDNodeInContext ( self . cx . llcx , & one, 1 ) ;
695- llvm :: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node ) ;
687+ let one = llvm :: LLVMValueAsMetadata ( self . cx . const_i32 ( 1 ) ) ;
688+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , & one, 1 ) ;
689+ self . set_metadata ( store, llvm:: MD_nontemporal , md ) ;
696690 }
697691 }
698692 store
@@ -1157,11 +1151,8 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
11571151
11581152 fn set_invariant_load ( & mut self , load : & ' ll Value ) {
11591153 unsafe {
1160- llvm:: LLVMSetMetadata (
1161- load,
1162- llvm:: MD_invariant_load as c_uint ,
1163- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1164- ) ;
1154+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1155+ self . set_metadata ( load, llvm:: MD_invariant_load , md) ;
11651156 }
11661157 }
11671158
@@ -1290,33 +1281,23 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
12901281
12911282 fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
12921283 unsafe {
1293- let v = [ self . cx . const_u64 ( align. bytes ( ) ) ] ;
1294-
1295- llvm:: LLVMSetMetadata (
1296- load,
1297- llvm:: MD_align as c_uint ,
1298- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
1299- ) ;
1284+ let md = [ llvm:: LLVMValueAsMetadata ( self . cx . const_u64 ( align. bytes ( ) ) ) ] ;
1285+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , md. as_ptr ( ) , md. len ( ) ) ;
1286+ self . set_metadata ( load, llvm:: MD_align , md) ;
13001287 }
13011288 }
13021289
13031290 fn noundef_metadata ( & mut self , load : & ' ll Value ) {
13041291 unsafe {
1305- llvm:: LLVMSetMetadata (
1306- load,
1307- llvm:: MD_noundef as c_uint ,
1308- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1309- ) ;
1292+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1293+ self . set_metadata ( load, llvm:: MD_noundef , md) ;
13101294 }
13111295 }
13121296
13131297 pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
13141298 unsafe {
1315- llvm:: LLVMSetMetadata (
1316- inst,
1317- llvm:: MD_unpredictable as c_uint ,
1318- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1319- ) ;
1299+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1300+ self . set_metadata ( inst, llvm:: MD_unpredictable , md) ;
13201301 }
13211302 }
13221303
0 commit comments