@@ -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 ;
@@ -684,25 +685,21 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
684685 unsafe {
685686 let llty = self . cx . val_ty ( load) ;
686687 let v = [
687- self . cx . const_uint_big ( llty, range. start ) ,
688- self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ,
688+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. start ) ) ,
689+ llvm :: LLVMValueAsMetadata ( self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ) ,
689690 ] ;
690691
691- llvm:: LLVMSetMetadata (
692- load,
693- llvm:: MD_range as c_uint ,
694- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
695- ) ;
692+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
693+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
694+ llvm:: LLVMSetMetadata ( load, llvm:: MD_range as c_uint , md) ;
696695 }
697696 }
698697
699698 fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
700699 unsafe {
701- llvm:: LLVMSetMetadata (
702- load,
703- llvm:: MD_nonnull as c_uint ,
704- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
705- ) ;
700+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
701+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
702+ llvm:: LLVMSetMetadata ( load, llvm:: MD_nonnull as c_uint , md) ;
706703 }
707704 }
708705
@@ -750,8 +747,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
750747 // *always* point to a metadata value of the integer 1.
751748 //
752749 // [1]: https://llvm.org/docs/LangRef.html#store-instruction
753- let one = self . cx . const_i32 ( 1 ) ;
754- let node = llvm:: LLVMMDNodeInContext ( self . cx . llcx , & one, 1 ) ;
750+ let one = llvm:: LLVMValueAsMetadata ( self . cx . const_i32 ( 1 ) ) ;
751+ let node = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , & one, 1 ) ;
752+ let node = llvm:: LLVMMetadataAsValue ( & self . llcx , node) ;
755753 llvm:: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node) ;
756754 }
757755 }
@@ -1216,11 +1214,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
12161214
12171215 fn set_invariant_load ( & mut self , load : & ' ll Value ) {
12181216 unsafe {
1219- llvm:: LLVMSetMetadata (
1220- load,
1221- llvm:: MD_invariant_load as c_uint ,
1222- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1223- ) ;
1217+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1218+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1219+ llvm:: LLVMSetMetadata ( load, llvm:: MD_invariant_load as c_uint , md) ;
12241220 }
12251221 }
12261222
@@ -1355,33 +1351,26 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
13551351
13561352 fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
13571353 unsafe {
1358- let v = [ self . cx . const_u64 ( align. bytes ( ) ) ] ;
1359-
1360- llvm:: LLVMSetMetadata (
1361- load,
1362- llvm:: MD_align as c_uint ,
1363- llvm:: LLVMMDNodeInContext ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) as c_uint ) ,
1364- ) ;
1354+ let v = [ llvm:: LLVMValueAsMetadata ( self . cx . const_u64 ( align. bytes ( ) ) ) ] ;
1355+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
1356+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1357+ llvm:: LLVMSetMetadata ( load, llvm:: MD_align as c_uint , md) ;
13651358 }
13661359 }
13671360
13681361 fn noundef_metadata ( & mut self , load : & ' ll Value ) {
13691362 unsafe {
1370- llvm:: LLVMSetMetadata (
1371- load,
1372- llvm:: MD_noundef as c_uint ,
1373- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1374- ) ;
1363+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1364+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1365+ llvm:: LLVMSetMetadata ( load, llvm:: MD_noundef as c_uint , md) ;
13751366 }
13761367 }
13771368
13781369 pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
13791370 unsafe {
1380- llvm:: LLVMSetMetadata (
1381- inst,
1382- llvm:: MD_unpredictable as c_uint ,
1383- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1384- ) ;
1371+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1372+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1373+ llvm:: LLVMSetMetadata ( inst, llvm:: MD_unpredictable as c_uint , md) ;
13851374 }
13861375 }
13871376
0 commit comments