@@ -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 ;
@@ -684,25 +685,21 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
684
685
unsafe {
685
686
let llty = self . cx . val_ty ( load) ;
686
687
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 ) ) ) ,
689
690
] ;
690
691
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) ;
696
695
}
697
696
}
698
697
699
698
fn nonnull_metadata ( & mut self , load : & ' ll Value ) {
700
699
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) ;
706
703
}
707
704
}
708
705
@@ -750,8 +747,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
750
747
// *always* point to a metadata value of the integer 1.
751
748
//
752
749
// [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) ;
755
753
llvm:: LLVMSetMetadata ( store, llvm:: MD_nontemporal as c_uint , node) ;
756
754
}
757
755
}
@@ -1216,11 +1214,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
1216
1214
1217
1215
fn set_invariant_load ( & mut self , load : & ' ll Value ) {
1218
1216
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) ;
1224
1220
}
1225
1221
}
1226
1222
@@ -1355,33 +1351,26 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
1355
1351
1356
1352
fn align_metadata ( & mut self , load : & ' ll Value , align : Align ) {
1357
1353
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) ;
1365
1358
}
1366
1359
}
1367
1360
1368
1361
fn noundef_metadata ( & mut self , load : & ' ll Value ) {
1369
1362
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) ;
1375
1366
}
1376
1367
}
1377
1368
1378
1369
pub ( crate ) fn set_unpredictable ( & mut self , inst : & ' ll Value ) {
1379
1370
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) ;
1385
1374
}
1386
1375
}
1387
1376
0 commit comments