@@ -56,6 +56,7 @@ const UNNAMED: *const c_char = c"".as_ptr();
56
56
57
57
impl < ' ll , ' tcx > BackendTypes for Builder < ' _ , ' ll , ' tcx > {
58
58
type Value = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Value ;
59
+ type Metadata = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Metadata ;
59
60
type Function = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Function ;
60
61
type BasicBlock = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: BasicBlock ;
61
62
type Type = <CodegenCx < ' ll , ' tcx > as BackendTypes >:: Type ;
@@ -623,26 +624,19 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
623
624
624
625
unsafe {
625
626
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 ) ) ) ,
629
630
] ;
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) ;
636
633
}
637
634
}
638
635
639
636
fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
640
637
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) ;
646
640
}
647
641
}
648
642
@@ -690,9 +684,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
690
684
// *always* point to a metadata value of the integer 1.
691
685
//
692
686
// [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 ) ;
696
690
}
697
691
}
698
692
store
@@ -1157,11 +1151,8 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1157
1151
1158
1152
fn set_invariant_load ( & mut self , load : & ' ll Value ) {
1159
1153
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) ;
1165
1156
}
1166
1157
}
1167
1158
@@ -1290,33 +1281,23 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1290
1281
1291
1282
fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
1292
1283
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) ;
1300
1287
}
1301
1288
}
1302
1289
1303
1290
fn noundef_metadata ( & mut self , load : & ' ll Value ) {
1304
1291
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) ;
1310
1294
}
1311
1295
}
1312
1296
1313
1297
pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
1314
1298
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) ;
1320
1301
}
1321
1302
}
1322
1303
0 commit comments