Skip to content

Commit 8de591f

Browse files
committed
Remove the unused field_remapping field from TypeLowering
1 parent 9c3ad80 commit 8de591f

File tree

2 files changed

+8
-33
lines changed

2 files changed

+8
-33
lines changed

compiler/rustc_codegen_llvm/src/context.rs

+1-10
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub struct CodegenCx<'ll, 'tcx> {
7878
pub compiler_used_statics: RefCell<Vec<&'ll Value>>,
7979

8080
/// Mapping of non-scalar types to llvm types and field remapping if needed.
81-
pub type_lowering: RefCell<FxHashMap<(Ty<'tcx>, Option<VariantIdx>), TypeLowering<'ll>>>,
81+
pub type_lowering: RefCell<FxHashMap<(Ty<'tcx>, Option<VariantIdx>), &'ll Type>>,
8282

8383
/// Mapping of scalar types to llvm types.
8484
pub scalar_lltypes: RefCell<FxHashMap<Ty<'tcx>, &'ll Type>>,
@@ -105,15 +105,6 @@ pub struct CodegenCx<'ll, 'tcx> {
105105
pub renamed_statics: RefCell<FxHashMap<DefId, &'ll Value>>,
106106
}
107107

108-
pub struct TypeLowering<'ll> {
109-
/// Associated LLVM type
110-
pub lltype: &'ll Type,
111-
112-
/// If padding is used the slice maps fields from source order
113-
/// to llvm order.
114-
pub field_remapping: Option<SmallVec<[u32; 4]>>,
115-
}
116-
117108
fn to_llvm_tls_model(tls_model: TlsModel) -> llvm::ThreadLocalMode {
118109
match tls_model {
119110
TlsModel::GeneralDynamic => llvm::ThreadLocalMode::GeneralDynamic,

compiler/rustc_codegen_llvm/src/type_of.rs

+7-23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::common::*;
2-
use crate::context::TypeLowering;
32
use crate::type_::Type;
43
use rustc_codegen_ssa::traits::*;
54
use rustc_middle::bug;
@@ -10,15 +9,13 @@ use rustc_target::abi::HasDataLayout;
109
use rustc_target::abi::{Abi, Align, FieldsShape};
1110
use rustc_target::abi::{Int, Pointer, F128, F16, F32, F64};
1211
use rustc_target::abi::{Scalar, Size, Variants};
13-
use smallvec::{smallvec, SmallVec};
1412

1513
use std::fmt::Write;
1614

1715
fn uncached_llvm_type<'a, 'tcx>(
1816
cx: &CodegenCx<'a, 'tcx>,
1917
layout: TyAndLayout<'tcx>,
2018
defer: &mut Option<(&'a Type, TyAndLayout<'tcx>)>,
21-
field_remapping: &mut Option<SmallVec<[u32; 4]>>,
2219
) -> &'a Type {
2320
match layout.abi {
2421
Abi::Scalar(_) => bug!("handled elsewhere"),
@@ -71,8 +68,7 @@ fn uncached_llvm_type<'a, 'tcx>(
7168
FieldsShape::Array { count, .. } => cx.type_array(layout.field(cx, 0).llvm_type(cx), count),
7269
FieldsShape::Arbitrary { .. } => match name {
7370
None => {
74-
let (llfields, packed, new_field_remapping) = struct_llfields(cx, layout);
75-
*field_remapping = new_field_remapping;
71+
let (llfields, packed) = struct_llfields(cx, layout);
7672
cx.type_struct(&llfields, packed)
7773
}
7874
Some(ref name) => {
@@ -87,15 +83,14 @@ fn uncached_llvm_type<'a, 'tcx>(
8783
fn struct_llfields<'a, 'tcx>(
8884
cx: &CodegenCx<'a, 'tcx>,
8985
layout: TyAndLayout<'tcx>,
90-
) -> (Vec<&'a Type>, bool, Option<SmallVec<[u32; 4]>>) {
86+
) -> (Vec<&'a Type>, bool) {
9187
debug!("struct_llfields: {:#?}", layout);
9288
let field_count = layout.fields.count();
9389

9490
let mut packed = false;
9591
let mut offset = Size::ZERO;
9692
let mut prev_effective_align = layout.align.abi;
9793
let mut result: Vec<_> = Vec::with_capacity(1 + field_count * 2);
98-
let mut field_remapping = smallvec![0; field_count];
9994
for i in layout.fields.index_by_increasing_offset() {
10095
let target_offset = layout.fields.offset(i as usize);
10196
let field = layout.field(cx, i);
@@ -120,12 +115,10 @@ fn struct_llfields<'a, 'tcx>(
120115
result.push(cx.type_padding_filler(padding, padding_align));
121116
debug!(" padding before: {:?}", padding);
122117
}
123-
field_remapping[i] = result.len() as u32;
124118
result.push(field.llvm_type(cx));
125119
offset = target_offset + field.size;
126120
prev_effective_align = effective_field_align;
127121
}
128-
let padding_used = result.len() > field_count;
129122
if layout.is_sized() && field_count > 0 {
130123
if offset > layout.size {
131124
bug!("layout: {:#?} stride: {:?} offset: {:?}", layout, layout.size, offset);
@@ -143,8 +136,7 @@ fn struct_llfields<'a, 'tcx>(
143136
} else {
144137
debug!("struct_llfields: offset: {:?} stride: {:?}", offset, layout.size);
145138
}
146-
let field_remapping = padding_used.then_some(field_remapping);
147-
(result, packed, field_remapping)
139+
(result, packed)
148140
}
149141

150142
impl<'a, 'tcx> CodegenCx<'a, 'tcx> {
@@ -224,7 +216,7 @@ impl<'tcx> LayoutLlvmExt<'tcx> for TyAndLayout<'tcx> {
224216
_ => None,
225217
};
226218
if let Some(llty) = cx.type_lowering.borrow().get(&(self.ty, variant_index)) {
227-
return llty.lltype;
219+
return llty;
228220
}
229221

230222
debug!("llvm_type({:#?})", self);
@@ -236,30 +228,22 @@ impl<'tcx> LayoutLlvmExt<'tcx> for TyAndLayout<'tcx> {
236228
let normal_ty = cx.tcx.erase_regions(self.ty);
237229

238230
let mut defer = None;
239-
let mut field_remapping = None;
240231
let llty = if self.ty != normal_ty {
241232
let mut layout = cx.layout_of(normal_ty);
242233
if let Some(v) = variant_index {
243234
layout = layout.for_variant(cx, v);
244235
}
245236
layout.llvm_type(cx)
246237
} else {
247-
uncached_llvm_type(cx, *self, &mut defer, &mut field_remapping)
238+
uncached_llvm_type(cx, *self, &mut defer)
248239
};
249240
debug!("--> mapped {:#?} to llty={:?}", self, llty);
250241

251-
cx.type_lowering
252-
.borrow_mut()
253-
.insert((self.ty, variant_index), TypeLowering { lltype: llty, field_remapping });
242+
cx.type_lowering.borrow_mut().insert((self.ty, variant_index), llty);
254243

255244
if let Some((llty, layout)) = defer {
256-
let (llfields, packed, new_field_remapping) = struct_llfields(cx, layout);
245+
let (llfields, packed) = struct_llfields(cx, layout);
257246
cx.set_struct_body(llty, &llfields, packed);
258-
cx.type_lowering
259-
.borrow_mut()
260-
.get_mut(&(self.ty, variant_index))
261-
.unwrap()
262-
.field_remapping = new_field_remapping;
263247
}
264248
llty
265249
}

0 commit comments

Comments
 (0)