@@ -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 ;
@@ -677,26 +678,19 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
677
678
678
679
unsafe {
679
680
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 ) ) ) ,
683
684
] ;
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) ;
690
687
}
691
688
}
692
689
693
690
fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
694
691
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) ;
700
694
}
701
695
}
702
696
@@ -744,9 +738,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
744
738
// *always* point to a metadata value of the integer 1.
745
739
//
746
740
// [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 ) ;
750
744
}
751
745
}
752
746
store
@@ -1210,11 +1204,8 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1210
1204
1211
1205
fn set_invariant_load ( & mut self , load : & ' ll Value ) {
1212
1206
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) ;
1218
1209
}
1219
1210
}
1220
1211
@@ -1343,33 +1334,23 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1343
1334
1344
1335
fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
1345
1336
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) ;
1353
1340
}
1354
1341
}
1355
1342
1356
1343
fn noundef_metadata ( & mut self , load : & ' ll Value ) {
1357
1344
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) ;
1363
1347
}
1364
1348
}
1365
1349
1366
1350
pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
1367
1351
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) ;
1373
1354
}
1374
1355
}
1375
1356
0 commit comments