diff options
| author | Luv-Ray <zhuoxun.yang777@outlook.com> | 2024-09-19 09:39:28 +0800 |
|---|---|---|
| committer | Luv-Ray <zhuoxun.yang777@outlook.com> | 2024-09-19 09:39:28 +0800 |
| commit | b7c5656713158e826189db21eeea051347548e07 (patch) | |
| tree | 79959f337e65a2b9d8814baefac0640289724a77 /compiler/rustc_codegen_llvm/src/builder.rs | |
| parent | a5cf8bbd4e1c8edeae08778c85c6f806dd00e853 (diff) | |
| download | rust-b7c5656713158e826189db21eeea051347548e07.tar.gz rust-b7c5656713158e826189db21eeea051347548e07.zip | |
replace some deprecated functions
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/builder.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/builder.rs | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/compiler/rustc_codegen_llvm/src/builder.rs b/compiler/rustc_codegen_llvm/src/builder.rs index c806d0c5499..e4efe83079b 100644 --- a/compiler/rustc_codegen_llvm/src/builder.rs +++ b/compiler/rustc_codegen_llvm/src/builder.rs @@ -56,6 +56,7 @@ const UNNAMED: *const c_char = c"".as_ptr(); impl<'ll, 'tcx> BackendTypes for Builder<'_, 'll, 'tcx> { type Value = <CodegenCx<'ll, 'tcx> as BackendTypes>::Value; + type Metadata = <CodegenCx<'ll, 'tcx> as BackendTypes>::Metadata; type Function = <CodegenCx<'ll, 'tcx> as BackendTypes>::Function; type BasicBlock = <CodegenCx<'ll, 'tcx> as BackendTypes>::BasicBlock; type Type = <CodegenCx<'ll, 'tcx> as BackendTypes>::Type; @@ -678,25 +679,21 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { unsafe { let llty = self.cx.val_ty(load); let v = [ - self.cx.const_uint_big(llty, range.start), - self.cx.const_uint_big(llty, range.end.wrapping_add(1)), + llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.start)), + llvm::LLVMValueAsMetadata(self.cx.const_uint_big(llty, range.end.wrapping_add(1))), ]; - llvm::LLVMSetMetadata( - load, - llvm::MD_range as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, v.as_ptr(), v.len() as c_uint), - ); + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, v.as_ptr(), v.len()); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(load, llvm::MD_range as c_uint, md); } } fn nonnull_metadata(&mut self, load: &'ll Value) { unsafe { - llvm::LLVMSetMetadata( - load, - llvm::MD_nonnull as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, ptr::null(), 0), - ); + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(load, llvm::MD_nonnull as c_uint, md); } } @@ -744,8 +741,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { // *always* point to a metadata value of the integer 1. // // [1]: https://llvm.org/docs/LangRef.html#store-instruction - let one = self.cx.const_i32(1); - let node = llvm::LLVMMDNodeInContext(self.cx.llcx, &one, 1); + let one = llvm::LLVMValueAsMetadata(self.cx.const_i32(1)); + let node = llvm::LLVMMDNodeInContext2(self.cx.llcx, &one, 1); + let node = llvm::LLVMMetadataAsValue(&self.llcx, node); llvm::LLVMSetMetadata(store, llvm::MD_nontemporal as c_uint, node); } } @@ -1210,11 +1208,9 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { fn set_invariant_load(&mut self, load: &'ll Value) { unsafe { - llvm::LLVMSetMetadata( - load, - llvm::MD_invariant_load as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, ptr::null(), 0), - ); + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(load, llvm::MD_invariant_load as c_uint, md); } } @@ -1343,33 +1339,26 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> { fn align_metadata(&mut self, load: &'ll Value, align: Align) { unsafe { - let v = [self.cx.const_u64(align.bytes())]; - - llvm::LLVMSetMetadata( - load, - llvm::MD_align as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, v.as_ptr(), v.len() as c_uint), - ); + let v = [llvm::LLVMValueAsMetadata(self.cx.const_u64(align.bytes()))]; + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, v.as_ptr(), v.len()); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(load, llvm::MD_align as c_uint, md); } } fn noundef_metadata(&mut self, load: &'ll Value) { unsafe { - llvm::LLVMSetMetadata( - load, - llvm::MD_noundef as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, ptr::null(), 0), - ); + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(load, llvm::MD_noundef as c_uint, md); } } pub(crate) fn set_unpredictable(&mut self, inst: &'ll Value) { unsafe { - llvm::LLVMSetMetadata( - inst, - llvm::MD_unpredictable as c_uint, - llvm::LLVMMDNodeInContext(self.cx.llcx, ptr::null(), 0), - ); + let md = llvm::LLVMMDNodeInContext2(self.cx.llcx, ptr::null(), 0); + let md = llvm::LLVMMetadataAsValue(&self.llcx, md); + llvm::LLVMSetMetadata(inst, llvm::MD_unpredictable as c_uint, md); } } |
