about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>2024-12-12 19:36:25 +0000
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>2025-04-14 09:36:20 +0000
commit764d3a50a318c22fd0145b1837ad32cf69bf7d28 (patch)
tree881bfb60b44834cb5753ebdbbc7c5dca626f9c3c
parent1988de5c37b229348ebfe77e25a2d8ea15a426c4 (diff)
downloadrust-764d3a50a318c22fd0145b1837ad32cf69bf7d28.tar.gz
rust-764d3a50a318c22fd0145b1837ad32cf69bf7d28.zip
Make codegen_naked_asm retrieve the MIR Body itself
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/mod.rs6
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/naked_asm.rs5
2 files changed, 6 insertions, 5 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/mod.rs b/compiler/rustc_codegen_ssa/src/mir/mod.rs
index 2612d43829b..9c89b284104 100644
--- a/compiler/rustc_codegen_ssa/src/mir/mod.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/mod.rs
@@ -170,16 +170,16 @@ pub fn codegen_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
 ) {
     assert!(!instance.args.has_infer());
 
-    let mut mir = cx.tcx().instance_mir(instance.def);
-
     if cx.tcx().codegen_fn_attrs(instance.def_id()).flags.contains(CodegenFnAttrFlags::NAKED) {
-        crate::mir::naked_asm::codegen_naked_asm::<Bx::CodegenCx>(cx, &mir, instance);
+        crate::mir::naked_asm::codegen_naked_asm::<Bx::CodegenCx>(cx, instance);
         return;
     }
 
     let tcx = cx.tcx();
     let llfn = cx.get_fn(instance);
 
+    let mut mir = tcx.instance_mir(instance.def);
+
     let fn_abi = cx.fn_abi_of_instance(instance, ty::List::empty());
     debug!("fn_abi: {:?}", fn_abi);
 
diff --git a/compiler/rustc_codegen_ssa/src/mir/naked_asm.rs b/compiler/rustc_codegen_ssa/src/mir/naked_asm.rs
index 82d44c87af9..7490fdf7166 100644
--- a/compiler/rustc_codegen_ssa/src/mir/naked_asm.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/naked_asm.rs
@@ -2,7 +2,7 @@ use rustc_abi::{BackendRepr, Float, Integer, Primitive, RegKind};
 use rustc_attr_parsing::InstructionSetAttr;
 use rustc_hir::def_id::DefId;
 use rustc_middle::mir::mono::{Linkage, MonoItem, MonoItemData, Visibility};
-use rustc_middle::mir::{Body, InlineAsmOperand, START_BLOCK};
+use rustc_middle::mir::{InlineAsmOperand, START_BLOCK};
 use rustc_middle::ty::layout::{FnAbiOf, LayoutOf, TyAndLayout};
 use rustc_middle::ty::{Instance, Ty, TyCtxt};
 use rustc_middle::{bug, span_bug, ty};
@@ -23,9 +23,10 @@ pub(crate) fn codegen_naked_asm<
         + MiscCodegenMethods<'tcx>,
 >(
     cx: &'a Cx,
-    mir: &Body<'tcx>,
     instance: Instance<'tcx>,
 ) {
+    let mir = cx.tcx().instance_mir(instance.def);
+
     let rustc_middle::mir::TerminatorKind::InlineAsm {
         asm_macro: _,
         template,