Skip to content

Commit f3d2c94

Browse files
committed
Pass MonoItemData to MonoItem::define
1 parent 27c431c commit f3d2c94

File tree

4 files changed

+13
-15
lines changed

4 files changed

+13
-15
lines changed

compiler/rustc_codegen_gcc/src/base.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ pub fn compile_codegen_unit(
217217
}
218218

219219
// ... and now that we have everything pre-defined, fill out those definitions.
220-
for &(mono_item, _) in &mono_items {
221-
mono_item.define::<Builder<'_, '_, '_>>(&cx);
220+
for &(mono_item, item_data) in &mono_items {
221+
mono_item.define::<Builder<'_, '_, '_>>(&cx, item_data);
222222
}
223223

224224
// If this codegen unit contains the main function, also create the

compiler/rustc_codegen_llvm/src/base.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ pub(crate) fn compile_codegen_unit(
9090
}
9191

9292
// ... and now that we have everything pre-defined, fill out those definitions.
93-
for &(mono_item, _) in &mono_items {
94-
mono_item.define::<Builder<'_, '_, '_>>(&cx);
93+
for &(mono_item, item_data) in &mono_items {
94+
mono_item.define::<Builder<'_, '_, '_>>(&cx, item_data);
9595
}
9696

9797
// If this codegen unit contains the main function, also create the

compiler/rustc_codegen_ssa/src/mir/naked_asm.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc_attr_parsing::InstructionSetAttr;
2-
use rustc_middle::mir::mono::{Linkage, MonoItem, MonoItemData, Visibility};
2+
use rustc_middle::mir::mono::{Linkage, MonoItemData, Visibility};
33
use rustc_middle::mir::{InlineAsmOperand, START_BLOCK};
44
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
55
use rustc_middle::ty::{Instance, TyCtxt, TypeVisitableExt};
@@ -8,17 +8,16 @@ use rustc_span::sym;
88

99
use crate::common;
1010
use crate::mir::AsmCodegenMethods;
11-
use crate::traits::{GlobalAsmOperandRef, MiscCodegenMethods};
11+
use crate::traits::GlobalAsmOperandRef;
1212

1313
pub(crate) fn codegen_naked_asm<
1414
'a,
1515
'tcx,
16-
Cx: LayoutOf<'tcx, LayoutOfResult = TyAndLayout<'tcx>>
17-
+ AsmCodegenMethods<'tcx>
18-
+ MiscCodegenMethods<'tcx>,
16+
Cx: LayoutOf<'tcx, LayoutOfResult = TyAndLayout<'tcx>> + AsmCodegenMethods<'tcx>,
1917
>(
2018
cx: &'a Cx,
2119
instance: Instance<'tcx>,
20+
item_data: MonoItemData,
2221
) {
2322
assert!(!instance.args.has_infer());
2423
let mir = cx.tcx().instance_mir(instance.def);
@@ -39,7 +38,6 @@ pub(crate) fn codegen_naked_asm<
3938
let operands: Vec<_> =
4039
operands.iter().map(|op| inline_to_global_operand::<Cx>(cx, instance, op)).collect();
4140

42-
let item_data = cx.codegen_unit().items().get(&MonoItem::Fn(instance)).unwrap();
4341
let name = cx.mangled_name(instance);
4442
let (begin, end) = prefix_and_suffix(cx.tcx(), instance, &name, item_data);
4543

@@ -130,7 +128,7 @@ fn prefix_and_suffix<'tcx>(
130128
tcx: TyCtxt<'tcx>,
131129
instance: Instance<'tcx>,
132130
asm_name: &str,
133-
item_data: &MonoItemData,
131+
item_data: MonoItemData,
134132
) -> (String, String) {
135133
use std::fmt::Write;
136134

compiler/rustc_codegen_ssa/src/mono_item.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rustc_hir as hir;
22
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
33
use rustc_middle::mir::interpret::ErrorHandled;
4-
use rustc_middle::mir::mono::{Linkage, MonoItem, Visibility};
4+
use rustc_middle::mir::mono::{Linkage, MonoItem, MonoItemData, Visibility};
55
use rustc_middle::ty::Instance;
66
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
77
use rustc_middle::{span_bug, ty};
@@ -12,7 +12,7 @@ use crate::traits::*;
1212
use crate::{base, common};
1313

1414
pub trait MonoItemExt<'a, 'tcx> {
15-
fn define<Bx: BuilderMethods<'a, 'tcx>>(&self, cx: &'a Bx::CodegenCx);
15+
fn define<Bx: BuilderMethods<'a, 'tcx>>(&self, cx: &'a Bx::CodegenCx, item_data: MonoItemData);
1616
fn predefine<Bx: BuilderMethods<'a, 'tcx>>(
1717
&self,
1818
cx: &'a Bx::CodegenCx,
@@ -23,7 +23,7 @@ pub trait MonoItemExt<'a, 'tcx> {
2323
}
2424

2525
impl<'a, 'tcx: 'a> MonoItemExt<'a, 'tcx> for MonoItem<'tcx> {
26-
fn define<Bx: BuilderMethods<'a, 'tcx>>(&self, cx: &'a Bx::CodegenCx) {
26+
fn define<Bx: BuilderMethods<'a, 'tcx>>(&self, cx: &'a Bx::CodegenCx, item_data: MonoItemData) {
2727
debug!(
2828
"BEGIN IMPLEMENTING '{} ({})' in cgu {}",
2929
self,
@@ -109,7 +109,7 @@ impl<'a, 'tcx: 'a> MonoItemExt<'a, 'tcx> for MonoItem<'tcx> {
109109
.flags
110110
.contains(CodegenFnAttrFlags::NAKED)
111111
{
112-
naked_asm::codegen_naked_asm::<Bx::CodegenCx>(cx, instance);
112+
naked_asm::codegen_naked_asm::<Bx::CodegenCx>(cx, instance, item_data);
113113
} else {
114114
base::codegen_instance::<Bx>(cx, instance);
115115
}

0 commit comments

Comments
 (0)