|
1 | 1 | use std::borrow::{Borrow, Cow};
|
| 2 | +use std::iter; |
2 | 3 | use std::ops::Deref;
|
3 |
| -use std::{iter, ptr}; |
4 | 4 |
|
5 | 5 | use rustc_ast::expand::typetree::FncTree;
|
6 | 6 | pub(crate) mod autodiff;
|
7 | 7 | pub(crate) mod gpu_offload;
|
8 | 8 |
|
9 |
| -use libc::{c_char, c_uint, size_t}; |
| 9 | +use libc::{c_char, c_uint}; |
10 | 10 | use rustc_abi as abi;
|
11 | 11 | use rustc_abi::{Align, Size, WrappingRange};
|
12 | 12 | use rustc_codegen_ssa::MemFlags;
|
@@ -396,10 +396,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
396 | 396 | md.push(weight(is_cold));
|
397 | 397 | }
|
398 | 398 |
|
399 |
| - unsafe { |
400 |
| - let md_node = llvm::LLVMMDNodeInContext2(self.cx.llcx, md.as_ptr(), md.len() as size_t); |
401 |
| - self.cx.set_metadata(switch, llvm::MD_prof, md_node); |
402 |
| - } |
| 399 | + self.cx.set_metadata_node(switch, llvm::MD_prof, &md); |
403 | 400 | }
|
404 | 401 |
|
405 | 402 | fn invoke(
|
@@ -801,22 +798,16 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
801 | 798 | return;
|
802 | 799 | }
|
803 | 800 |
|
804 |
| - unsafe { |
805 |
| - let llty = self.cx.val_ty(load); |
806 |
| - let md = [ |
807 |
| - llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.start)), |
808 |
| - llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.end.wrapping_add(1))), |
809 |
| - ]; |
810 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, md.as_ptr(), md.len()); |
811 |
| - self.set_metadata(load, llvm::MD_range, md); |
812 |
| - } |
| 801 | + let llty = self.cx.val_ty(load); |
| 802 | + let md = [ |
| 803 | + llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.start)), |
| 804 | + llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.end.wrapping_add(1))), |
| 805 | + ]; |
| 806 | + self.set_metadata_node(load, llvm::MD_range, &md); |
813 | 807 | }
|
814 | 808 |
|
815 | 809 | fn nonnull_metadata(&mut self, load: &'ll Value) {
|
816 |
| - unsafe { |
817 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); |
818 |
| - self.set_metadata(load, llvm::MD_nonnull, md); |
819 |
| - } |
| 810 | + self.set_metadata_node(load, llvm::MD_nonnull, &[]); |
820 | 811 | }
|
821 | 812 |
|
822 | 813 | fn store(&mut self, val: &'ll Value, ptr: &'ll Value, align: Align) -> &'ll Value {
|
@@ -865,8 +856,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
865 | 856 | //
|
866 | 857 | // [1]: https://llvm.org/docs/LangRef.html#store-instruction
|
867 | 858 | let one = llvm::LLVMValueAsMetadata(self.cx.const_i32(1));
|
868 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, &one, 1); |
869 |
| - self.set_metadata(store, llvm::MD_nontemporal, md); |
| 859 | + self.set_metadata_node(store, llvm::MD_nontemporal, &[one]); |
870 | 860 | }
|
871 | 861 | }
|
872 | 862 | store
|
@@ -1381,10 +1371,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
1381 | 1371 | }
|
1382 | 1372 |
|
1383 | 1373 | fn set_invariant_load(&mut self, load: &'ll Value) {
|
1384 |
| - unsafe { |
1385 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); |
1386 |
| - self.set_metadata(load, llvm::MD_invariant_load, md); |
1387 |
| - } |
| 1374 | + self.set_metadata_node(load, llvm::MD_invariant_load, &[]); |
1388 | 1375 | }
|
1389 | 1376 |
|
1390 | 1377 | fn lifetime_start(&mut self, ptr: &'ll Value, size: Size) {
|
@@ -1528,25 +1515,16 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
|
1528 | 1515 | }
|
1529 | 1516 | impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
|
1530 | 1517 | fn align_metadata(&mut self, load: &'ll Value, align: Align) {
|
1531 |
| - unsafe { |
1532 |
| - let md = [llvm::LLVMValueAsMetadata(self.cx.const_u64(align.bytes()))]; |
1533 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, md.as_ptr(), md.len()); |
1534 |
| - self.set_metadata(load, llvm::MD_align, md); |
1535 |
| - } |
| 1518 | + let md = [llvm::LLVMValueAsMetadata(self.cx.const_u64(align.bytes()))]; |
| 1519 | + self.set_metadata_node(load, llvm::MD_align, &md); |
1536 | 1520 | }
|
1537 | 1521 |
|
1538 | 1522 | fn noundef_metadata(&mut self, load: &'ll Value) {
|
1539 |
| - unsafe { |
1540 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); |
1541 |
| - self.set_metadata(load, llvm::MD_noundef, md); |
1542 |
| - } |
| 1523 | + self.set_metadata_node(load, llvm::MD_noundef, &[]); |
1543 | 1524 | }
|
1544 | 1525 |
|
1545 | 1526 | pub(crate) fn set_unpredictable(&mut self, inst: &'ll Value) {
|
1546 |
| - unsafe { |
1547 |
| - let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); |
1548 |
| - self.set_metadata(inst, llvm::MD_unpredictable, md); |
1549 |
| - } |
| 1527 | + self.set_metadata_node(inst, llvm::MD_unpredictable, &[]); |
1550 | 1528 | }
|
1551 | 1529 | }
|
1552 | 1530 | impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
|
|
0 commit comments