Skip to content

Commit f7d745f

Browse files
committed
tag/niche terminology cleanup
1 parent 91fb72a commit f7d745f

File tree

10 files changed

+167
-169
lines changed

10 files changed

+167
-169
lines changed

src/librustc_codegen_llvm/debuginfo/metadata.rs

+50-55
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use self::EnumDiscriminantInfo::*;
1+
use self::EnumTagInfo::*;
22
use self::MemberDescriptionFactory::*;
33
use self::RecursiveTypeDescription::*;
44

@@ -40,7 +40,7 @@ use rustc_middle::{bug, span_bug};
4040
use rustc_session::config::{self, DebugInfo};
4141
use rustc_span::symbol::{Interner, Symbol};
4242
use rustc_span::{self, SourceFile, SourceFileHash, Span};
43-
use rustc_target::abi::{Abi, Align, DiscriminantKind, HasDataLayout, Integer, LayoutOf};
43+
use rustc_target::abi::{Abi, Align, HasDataLayout, Integer, LayoutOf, TagEncoding};
4444
use rustc_target::abi::{Int, Pointer, F32, F64};
4545
use rustc_target::abi::{Primitive, Size, VariantIdx, Variants};
4646

@@ -1335,7 +1335,7 @@ fn generator_layout_and_saved_local_names(
13351335
struct EnumMemberDescriptionFactory<'ll, 'tcx> {
13361336
enum_type: Ty<'tcx>,
13371337
layout: TyAndLayout<'tcx>,
1338-
discriminant_type_metadata: Option<&'ll DIType>,
1338+
tag_type_metadata: Option<&'ll DIType>,
13391339
containing_scope: &'ll DIScope,
13401340
span: Span,
13411341
}
@@ -1385,7 +1385,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
13851385
cx,
13861386
self.layout,
13871387
variant_info,
1388-
NoDiscriminant,
1388+
NoTag,
13891389
self_metadata,
13901390
self.span,
13911391
);
@@ -1409,19 +1409,19 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14091409
}]
14101410
}
14111411
Variants::Multiple {
1412-
discr_kind: DiscriminantKind::Tag,
1413-
discr_index,
1412+
tag_encoding: TagEncoding::Direct,
1413+
tag_field,
14141414
ref variants,
14151415
..
14161416
} => {
1417-
let discriminant_info = if fallback {
1418-
RegularDiscriminant {
1419-
discr_field: Field::from(discr_index),
1420-
discr_type_metadata: self.discriminant_type_metadata.unwrap(),
1417+
let tag_info = if fallback {
1418+
RegularTag {
1419+
tag_field: Field::from(tag_field),
1420+
tag_type_metadata: self.tag_type_metadata.unwrap(),
14211421
}
14221422
} else {
14231423
// This doesn't matter in this case.
1424-
NoDiscriminant
1424+
NoTag
14251425
};
14261426
variants
14271427
.iter_enumerated()
@@ -1432,7 +1432,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14321432
cx,
14331433
variant,
14341434
variant_info,
1435-
discriminant_info,
1435+
tag_info,
14361436
self_metadata,
14371437
self.span,
14381438
);
@@ -1467,11 +1467,11 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14671467
.collect()
14681468
}
14691469
Variants::Multiple {
1470-
discr_kind:
1471-
DiscriminantKind::Niche { ref niche_variants, niche_start, dataful_variant },
1472-
ref discr,
1470+
tag_encoding:
1471+
TagEncoding::Niche { ref niche_variants, niche_start, dataful_variant },
1472+
ref tag,
14731473
ref variants,
1474-
discr_index,
1474+
tag_field,
14751475
} => {
14761476
if fallback {
14771477
let variant = self.layout.for_variant(cx, dataful_variant);
@@ -1480,7 +1480,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14801480
cx,
14811481
variant,
14821482
variant_info_for(dataful_variant),
1483-
OptimizedDiscriminant,
1483+
OptimizedTag,
14841484
self.containing_scope,
14851485
self.span,
14861486
);
@@ -1524,8 +1524,8 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15241524
cx,
15251525
&mut name,
15261526
self.layout,
1527-
self.layout.fields.offset(discr_index),
1528-
self.layout.field(cx, discr_index).size,
1527+
self.layout.fields.offset(tag_field),
1528+
self.layout.field(cx, tag_field).size,
15291529
);
15301530
variant_info_for(*niche_variants.start()).map_struct_name(|variant_name| {
15311531
name.push_str(variant_name);
@@ -1552,7 +1552,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15521552
cx,
15531553
variant,
15541554
variant_info,
1555-
OptimizedDiscriminant,
1555+
OptimizedTag,
15561556
self_metadata,
15571557
self.span,
15581558
);
@@ -1573,7 +1573,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15731573
let value = (i.as_u32() as u128)
15741574
.wrapping_sub(niche_variants.start().as_u32() as u128)
15751575
.wrapping_add(niche_start);
1576-
let value = truncate(value, discr.value.size(cx));
1576+
let value = truncate(value, tag.value.size(cx));
15771577
// NOTE(eddyb) do *NOT* remove this assert, until
15781578
// we pass the full 128-bit value to LLVM, otherwise
15791579
// truncation will be silent and remain undetected.
@@ -1603,7 +1603,7 @@ struct VariantMemberDescriptionFactory<'ll, 'tcx> {
16031603
/// Cloned from the `layout::Struct` describing the variant.
16041604
offsets: Vec<Size>,
16051605
args: Vec<(String, Ty<'tcx>)>,
1606-
discriminant_type_metadata: Option<&'ll DIType>,
1606+
tag_type_metadata: Option<&'ll DIType>,
16071607
span: Span,
16081608
}
16091609

@@ -1617,7 +1617,7 @@ impl VariantMemberDescriptionFactory<'ll, 'tcx> {
16171617
MemberDescription {
16181618
name: name.to_string(),
16191619
type_metadata: if use_enum_fallback(cx) {
1620-
match self.discriminant_type_metadata {
1620+
match self.tag_type_metadata {
16211621
// Discriminant is always the first field of our variant
16221622
// when using the enum fallback.
16231623
Some(metadata) if i == 0 => metadata,
@@ -1638,10 +1638,10 @@ impl VariantMemberDescriptionFactory<'ll, 'tcx> {
16381638
}
16391639

16401640
#[derive(Copy, Clone)]
1641-
enum EnumDiscriminantInfo<'ll> {
1642-
RegularDiscriminant { discr_field: Field, discr_type_metadata: &'ll DIType },
1643-
OptimizedDiscriminant,
1644-
NoDiscriminant,
1641+
enum EnumTagInfo<'ll> {
1642+
RegularTag { tag_field: Field, tag_type_metadata: &'ll DIType },
1643+
OptimizedTag,
1644+
NoTag,
16451645
}
16461646

16471647
#[derive(Copy, Clone)]
@@ -1706,7 +1706,7 @@ fn describe_enum_variant(
17061706
cx: &CodegenCx<'ll, 'tcx>,
17071707
layout: layout::TyAndLayout<'tcx>,
17081708
variant: VariantInfo<'_, 'tcx>,
1709-
discriminant_info: EnumDiscriminantInfo<'ll>,
1709+
discriminant_info: EnumTagInfo<'ll>,
17101710
containing_scope: &'ll DIScope,
17111711
span: Span,
17121712
) -> (&'ll DICompositeType, MemberDescriptionFactory<'ll, 'tcx>) {
@@ -1722,12 +1722,12 @@ fn describe_enum_variant(
17221722
let (offsets, args) = if use_enum_fallback(cx) {
17231723
// If this is not a univariant enum, there is also the discriminant field.
17241724
let (discr_offset, discr_arg) = match discriminant_info {
1725-
RegularDiscriminant { discr_field, .. } => {
1725+
RegularTag { tag_field, .. } => {
17261726
// We have the layout of an enum variant, we need the layout of the outer enum
17271727
let enum_layout = cx.layout_of(layout.ty);
1728-
let offset = enum_layout.fields.offset(discr_field.as_usize());
1728+
let offset = enum_layout.fields.offset(tag_field.as_usize());
17291729
let args =
1730-
("RUST$ENUM$DISR".to_owned(), enum_layout.field(cx, discr_field.as_usize()).ty);
1730+
("RUST$ENUM$DISR".to_owned(), enum_layout.field(cx, tag_field.as_usize()).ty);
17311731
(Some(offset), Some(args))
17321732
}
17331733
_ => (None, None),
@@ -1757,8 +1757,8 @@ fn describe_enum_variant(
17571757
let member_description_factory = VariantMDF(VariantMemberDescriptionFactory {
17581758
offsets,
17591759
args,
1760-
discriminant_type_metadata: match discriminant_info {
1761-
RegularDiscriminant { discr_type_metadata, .. } => Some(discr_type_metadata),
1760+
tag_type_metadata: match discriminant_info {
1761+
RegularTag { tag_type_metadata, .. } => Some(tag_type_metadata),
17621762
_ => None,
17631763
},
17641764
span,
@@ -1880,18 +1880,18 @@ fn prepare_enum_metadata(
18801880

18811881
if let (
18821882
&Abi::Scalar(_),
1883-
&Variants::Multiple { discr_kind: DiscriminantKind::Tag, ref discr, .. },
1883+
&Variants::Multiple { tag_encoding: TagEncoding::Direct, ref tag, .. },
18841884
) = (&layout.abi, &layout.variants)
18851885
{
1886-
return FinalMetadata(discriminant_type_metadata(discr.value));
1886+
return FinalMetadata(discriminant_type_metadata(tag.value));
18871887
}
18881888

18891889
if use_enum_fallback(cx) {
18901890
let discriminant_type_metadata = match layout.variants {
18911891
Variants::Single { .. }
1892-
| Variants::Multiple { discr_kind: DiscriminantKind::Niche { .. }, .. } => None,
1893-
Variants::Multiple { discr_kind: DiscriminantKind::Tag, ref discr, .. } => {
1894-
Some(discriminant_type_metadata(discr.value))
1892+
| Variants::Multiple { tag_encoding: TagEncoding::Niche { .. }, .. } => None,
1893+
Variants::Multiple { tag_encoding: TagEncoding::Direct, ref tag, .. } => {
1894+
Some(discriminant_type_metadata(tag.value))
18951895
}
18961896
};
18971897

@@ -1927,7 +1927,7 @@ fn prepare_enum_metadata(
19271927
EnumMDF(EnumMemberDescriptionFactory {
19281928
enum_type,
19291929
layout,
1930-
discriminant_type_metadata,
1930+
tag_type_metadata: discriminant_type_metadata,
19311931
containing_scope,
19321932
span,
19331933
}),
@@ -1943,24 +1943,21 @@ fn prepare_enum_metadata(
19431943
Variants::Single { .. } => None,
19441944

19451945
Variants::Multiple {
1946-
discr_kind: DiscriminantKind::Niche { .. },
1947-
ref discr,
1948-
discr_index,
1949-
..
1946+
tag_encoding: TagEncoding::Niche { .. }, ref tag, tag_field, ..
19501947
} => {
19511948
// Find the integer type of the correct size.
1952-
let size = discr.value.size(cx);
1953-
let align = discr.value.align(cx);
1949+
let size = tag.value.size(cx);
1950+
let align = tag.value.align(cx);
19541951

1955-
let discr_type = match discr.value {
1952+
let tag_type = match tag.value {
19561953
Int(t, _) => t,
19571954
F32 => Integer::I32,
19581955
F64 => Integer::I64,
19591956
Pointer => cx.data_layout().ptr_sized_integer(),
19601957
}
19611958
.to_ty(cx.tcx, false);
19621959

1963-
let discr_metadata = basic_type_metadata(cx, discr_type);
1960+
let tag_metadata = basic_type_metadata(cx, tag_type);
19641961
unsafe {
19651962
Some(llvm::LLVMRustDIBuilderCreateMemberType(
19661963
DIB(cx),
@@ -1971,17 +1968,15 @@ fn prepare_enum_metadata(
19711968
UNKNOWN_LINE_NUMBER,
19721969
size.bits(),
19731970
align.abi.bits() as u32,
1974-
layout.fields.offset(discr_index).bits(),
1971+
layout.fields.offset(tag_field).bits(),
19751972
DIFlags::FlagArtificial,
1976-
discr_metadata,
1973+
tag_metadata,
19771974
))
19781975
}
19791976
}
19801977

1981-
Variants::Multiple {
1982-
discr_kind: DiscriminantKind::Tag, ref discr, discr_index, ..
1983-
} => {
1984-
let discr_type = discr.value.to_ty(cx.tcx);
1978+
Variants::Multiple { tag_encoding: TagEncoding::Direct, ref tag, tag_field, .. } => {
1979+
let discr_type = tag.value.to_ty(cx.tcx);
19851980
let (size, align) = cx.size_and_align_of(discr_type);
19861981

19871982
let discr_metadata = basic_type_metadata(cx, discr_type);
@@ -1995,7 +1990,7 @@ fn prepare_enum_metadata(
19951990
UNKNOWN_LINE_NUMBER,
19961991
size.bits(),
19971992
align.bits() as u32,
1998-
layout.fields.offset(discr_index).bits(),
1993+
layout.fields.offset(tag_field).bits(),
19991994
DIFlags::FlagArtificial,
20001995
discr_metadata,
20011996
))
@@ -2081,7 +2076,7 @@ fn prepare_enum_metadata(
20812076
EnumMDF(EnumMemberDescriptionFactory {
20822077
enum_type,
20832078
layout,
2084-
discriminant_type_metadata: None,
2079+
tag_type_metadata: None,
20852080
containing_scope,
20862081
span,
20872082
}),

0 commit comments

Comments
 (0)