diff options
| author | Guy Shefy <guyshefyb@gmail.com> | 2024-03-30 16:33:18 +0300 |
|---|---|---|
| committer | Guy Shefy <guyshefyb@gmail.com> | 2024-04-12 15:29:39 +0300 |
| commit | 9139d7252de74c30539afb35dc05e3536456971b (patch) | |
| tree | 513f875f3779e936a668131716ab43b908ba8018 /compiler/rustc_codegen_ssa/src/mir | |
| parent | 8df7e723ea729a7f917501cc2d91d640b7021373 (diff) | |
do not add prolog for variadic naked functions
fixes #99858
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/mir')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/mod.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/mod.rs b/compiler/rustc_codegen_ssa/src/mir/mod.rs index 387a5366b20..dc589a5fd30 100644 --- a/compiler/rustc_codegen_ssa/src/mir/mod.rs +++ b/compiler/rustc_codegen_ssa/src/mir/mod.rs @@ -2,6 +2,7 @@ use crate::base; use crate::traits::*; use rustc_index::bit_set::BitSet; use rustc_index::IndexVec; +use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags; use rustc_middle::mir; use rustc_middle::mir::traversal; use rustc_middle::mir::UnwindTerminateReason; @@ -290,6 +291,12 @@ fn arg_local_refs<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>( let mut num_untupled = None; + let codegen_fn_attrs = bx.tcx().codegen_fn_attrs(fx.instance.def_id()); + let naked = codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::NAKED); + if naked { + return vec![]; + } + let args = mir .args_iter() .enumerate() |
