diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-12-12 19:36:25 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2025-04-14 09:36:20 +0000 |
| commit | 764d3a50a318c22fd0145b1837ad32cf69bf7d28 (patch) | |
| tree | 881bfb60b44834cb5753ebdbbc7c5dca626f9c3c | |
| parent | 1988de5c37b229348ebfe77e25a2d8ea15a426c4 (diff) | |
| download | rust-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.rs | 6 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/naked_asm.rs | 5 |
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, |
