Skip to content

Commit a8dd1ac

Browse files
committed
Only require a CodegenCx for codegen_naked_asm
1 parent 56b60e3 commit a8dd1ac

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

compiler/rustc_codegen_ssa/src/mir/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ pub fn codegen_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
173173
let mir = cx.tcx().instance_mir(instance.def);
174174

175175
if cx.tcx().codegen_fn_attrs(instance.def_id()).flags.contains(CodegenFnAttrFlags::NAKED) {
176-
crate::mir::naked_asm::codegen_naked_asm::<Bx>(cx, &mir, instance);
176+
crate::mir::naked_asm::codegen_naked_asm::<Bx::CodegenCx>(cx, &mir, instance);
177177
return;
178178
}
179179

compiler/rustc_codegen_ssa/src/mir/naked_asm.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,26 @@ use rustc_attr_parsing::InstructionSetAttr;
33
use rustc_hir::def_id::DefId;
44
use rustc_middle::mir::mono::{Linkage, MonoItem, MonoItemData, Visibility};
55
use rustc_middle::mir::{Body, InlineAsmOperand, START_BLOCK};
6-
use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, HasTypingEnv, LayoutOf};
6+
use rustc_middle::ty::layout::{FnAbiOf, LayoutOf, TyAndLayout};
77
use rustc_middle::ty::{Instance, Ty, TyCtxt};
88
use rustc_middle::{bug, span_bug, ty};
99
use rustc_span::sym;
1010
use rustc_target::callconv::{ArgAbi, FnAbi, PassMode};
1111
use rustc_target::spec::WasmCAbi;
1212

1313
use crate::common;
14-
use crate::traits::{AsmCodegenMethods, BuilderMethods, GlobalAsmOperandRef, MiscCodegenMethods};
15-
16-
pub(crate) fn codegen_naked_asm<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
17-
cx: &'a Bx::CodegenCx,
14+
use crate::mir::AsmCodegenMethods;
15+
use crate::traits::{GlobalAsmOperandRef, MiscCodegenMethods};
16+
17+
pub(crate) fn codegen_naked_asm<
18+
'a,
19+
'tcx,
20+
Cx: LayoutOf<'tcx, LayoutOfResult = TyAndLayout<'tcx>>
21+
+ FnAbiOf<'tcx, FnAbiOfResult = &'tcx FnAbi<'tcx, Ty<'tcx>>>
22+
+ AsmCodegenMethods<'tcx>
23+
+ MiscCodegenMethods<'tcx>,
24+
>(
25+
cx: &'a Cx,
1826
mir: &Body<'tcx>,
1927
instance: Instance<'tcx>,
2028
) {
@@ -32,7 +40,7 @@ pub(crate) fn codegen_naked_asm<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
3240
};
3341

3442
let operands: Vec<_> =
35-
operands.iter().map(|op| inline_to_global_operand::<Bx>(cx, instance, op)).collect();
43+
operands.iter().map(|op| inline_to_global_operand::<Cx>(cx, instance, op)).collect();
3644

3745
let item_data = cx.codegen_unit().items().get(&MonoItem::Fn(instance)).unwrap();
3846
let name = cx.mangled_name(instance);
@@ -47,8 +55,8 @@ pub(crate) fn codegen_naked_asm<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
4755
cx.codegen_global_asm(&template_vec, &operands, options, line_spans);
4856
}
4957

50-
fn inline_to_global_operand<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
51-
cx: &'a Bx::CodegenCx,
58+
fn inline_to_global_operand<'a, 'tcx, Cx: LayoutOf<'tcx, LayoutOfResult = TyAndLayout<'tcx>>>(
59+
cx: &'a Cx,
5260
instance: Instance<'tcx>,
5361
op: &InlineAsmOperand<'tcx>,
5462
) -> GlobalAsmOperandRef<'tcx> {

0 commit comments

Comments
 (0)