@@ -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 ;
@@ -678,25 +679,21 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
678
679
unsafe {
679
680
let llty = self . cx . val_ty ( load) ;
680
681
let v = [
681
- self . cx . const_uint_big ( llty, range. start ) ,
682
- self . cx . const_uint_big ( llty, range. end . wrapping_add ( 1 ) ) ,
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
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
- ) ;
686
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
687
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
688
+ llvm:: LLVMSetMetadata ( load, llvm:: MD_range as c_uint , md) ;
690
689
}
691
690
}
692
691
693
692
fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
694
693
unsafe {
695
- llvm:: LLVMSetMetadata (
696
- load,
697
- llvm:: MD_nonnull as c_uint ,
698
- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
699
- ) ;
694
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
695
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
696
+ llvm:: LLVMSetMetadata ( load, llvm:: MD_nonnull as c_uint , md) ;
700
697
}
701
698
}
702
699
@@ -744,8 +741,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
744
741
// *always* point to a metadata value of the integer 1.
745
742
//
746
743
// [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 ) ;
744
+ let one = llvm:: LLVMValueAsMetadata ( self . cx . const_i32 ( 1 ) ) ;
745
+ let node = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , & one, 1 ) ;
746
+ let node = llvm:: LLVMMetadataAsValue ( & self . llcx , node) ;
749
747
llvm:: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node) ;
750
748
}
751
749
}
@@ -1210,11 +1208,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1210
1208
1211
1209
fn set_invariant_load ( & mut self , load : & ' ll Value ) {
1212
1210
unsafe {
1213
- llvm:: LLVMSetMetadata (
1214
- load,
1215
- llvm:: MD_invariant_load as c_uint ,
1216
- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1217
- ) ;
1211
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1212
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1213
+ llvm:: LLVMSetMetadata ( load, llvm:: MD_invariant_load as c_uint , md) ;
1218
1214
}
1219
1215
}
1220
1216
@@ -1343,33 +1339,26 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1343
1339
1344
1340
fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
1345
1341
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
- ) ;
1342
+ let v = [ llvm:: LLVMValueAsMetadata ( self . cx . const_u64 ( align. bytes ( ) ) ) ] ;
1343
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , v. as_ptr ( ) , v. len ( ) ) ;
1344
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1345
+ llvm:: LLVMSetMetadata ( load, llvm:: MD_align as c_uint , md) ;
1353
1346
}
1354
1347
}
1355
1348
1356
1349
fn noundef_metadata ( & mut self , load : & ' ll Value ) {
1357
1350
unsafe {
1358
- llvm:: LLVMSetMetadata (
1359
- load,
1360
- llvm:: MD_noundef as c_uint ,
1361
- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1362
- ) ;
1351
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1352
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1353
+ llvm:: LLVMSetMetadata ( load, llvm:: MD_noundef as c_uint , md) ;
1363
1354
}
1364
1355
}
1365
1356
1366
1357
pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
1367
1358
unsafe {
1368
- llvm:: LLVMSetMetadata (
1369
- inst,
1370
- llvm:: MD_unpredictable as c_uint ,
1371
- llvm:: LLVMMDNodeInContext ( self . cx . llcx , ptr:: null ( ) , 0 ) ,
1372
- ) ;
1359
+ let md = llvm:: LLVMMDNodeInContext2 ( self . cx . llcx , ptr:: null ( ) , 0 ) ;
1360
+ let md = llvm:: LLVMMetadataAsValue ( & self . llcx , md) ;
1361
+ llvm:: LLVMSetMetadata ( inst, llvm:: MD_unpredictable as c_uint , md) ;
1373
1362
}
1374
1363
}
1375
1364
0 commit comments