Skip to content

Commit 266ca93

Browse files
committed
Rustup to rustc 1.46.0-nightly (2d8bd9b74 2020-06-19)
1 parent 3086e44 commit 266ca93

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

rust-toolchain

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
nightly-2020-06-16
1+
nightly-2020-06-20

src/base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -340,11 +340,11 @@ fn codegen_fn_content(fx: &mut FunctionCx<'_, '_, impl Backend>) {
340340
bug!("shouldn't exist at trans {:?}", bb_data.terminator());
341341
}
342342
TerminatorKind::Drop {
343-
location,
343+
place,
344344
target,
345345
unwind: _,
346346
} => {
347-
let drop_place = trans_place(fx, *location);
347+
let drop_place = trans_place(fx, *place);
348348
crate::abi::codegen_drop(fx, bb_data.terminator().source_info.span, drop_place);
349349

350350
let target_block = fx.get_block(*target);

src/discriminant.rs

+25-25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Adapted from https://github.com/rust-lang/rust/blob/d760df5aea483aae041c9a241e7acacf48f75035/src/librustc_codegen_ssa/mir/place.rs
22
3-
use rustc_target::abi::{DiscriminantKind, Int, Variants};
3+
use rustc_target::abi::{TagEncoding, Int, Variants};
44

55
use crate::prelude::*;
66

@@ -18,12 +18,12 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
1818
assert_eq!(index, variant_index);
1919
}
2020
Variants::Multiple {
21-
discr: _,
22-
discr_index,
23-
discr_kind: DiscriminantKind::Tag,
21+
tag: _,
22+
tag_field,
23+
tag_encoding: TagEncoding::Direct,
2424
variants: _,
2525
} => {
26-
let ptr = place.place_field(fx, mir::Field::new(discr_index));
26+
let ptr = place.place_field(fx, mir::Field::new(tag_field));
2727
let to = layout
2828
.ty
2929
.discriminant_for_variant(fx.tcx, variant_index)
@@ -33,18 +33,18 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
3333
ptr.write_cvalue(fx, discr);
3434
}
3535
Variants::Multiple {
36-
discr: _,
37-
discr_index,
38-
discr_kind:
39-
DiscriminantKind::Niche {
36+
tag: _,
37+
tag_field,
38+
tag_encoding:
39+
TagEncoding::Niche {
4040
dataful_variant,
4141
ref niche_variants,
4242
niche_start,
4343
},
4444
variants: _,
4545
} => {
4646
if variant_index != dataful_variant {
47-
let niche = place.place_field(fx, mir::Field::new(discr_index));
47+
let niche = place.place_field(fx, mir::Field::new(tag_field));
4848
let niche_value = variant_index.as_u32() - niche_variants.start().as_u32();
4949
let niche_value = u128::from(niche_value).wrapping_add(niche_start);
5050
let niche_llval = CValue::const_val(fx, niche.layout(), niche_value);
@@ -69,7 +69,7 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
6969
);
7070
}
7171

72-
let (discr_scalar, discr_index, discr_kind) = match &layout.variants {
72+
let (tag_scalar, tag_field, tag_encoding) = match &layout.variants {
7373
Variants::Single { index } => {
7474
let discr_val = layout
7575
.ty
@@ -78,30 +78,30 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
7878
return CValue::const_val(fx, dest_layout, discr_val);
7979
}
8080
Variants::Multiple {
81-
discr,
82-
discr_index,
83-
discr_kind,
81+
tag,
82+
tag_field,
83+
tag_encoding,
8484
variants: _,
85-
} => (discr, *discr_index, discr_kind),
85+
} => (tag, *tag_field, tag_encoding),
8686
};
8787

8888
let cast_to = fx.clif_type(dest_layout.ty).unwrap();
8989

9090
// Read the tag/niche-encoded discriminant from memory.
91-
let encoded_discr = value.value_field(fx, mir::Field::new(discr_index));
92-
let encoded_discr = encoded_discr.load_scalar(fx);
91+
let tag = value.value_field(fx, mir::Field::new(tag_field));
92+
let tag = tag.load_scalar(fx);
9393

9494
// Decode the discriminant (specifically if it's niche-encoded).
95-
match *discr_kind {
96-
DiscriminantKind::Tag => {
97-
let signed = match discr_scalar.value {
95+
match *tag_encoding {
96+
TagEncoding::Direct => {
97+
let signed = match tag_scalar.value {
9898
Int(_, signed) => signed,
9999
_ => false,
100100
};
101-
let val = clif_intcast(fx, encoded_discr, cast_to, signed);
102-
return CValue::by_val(val, dest_layout);
101+
let val = clif_intcast(fx, tag, cast_to, signed);
102+
CValue::by_val(val, dest_layout)
103103
}
104-
DiscriminantKind::Niche {
104+
TagEncoding::Niche {
105105
dataful_variant,
106106
ref niche_variants,
107107
niche_start,
@@ -119,12 +119,12 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
119119
// that might not fit in the same type, on top of needing an extra
120120
// comparison (see also the comment on `let niche_discr`).
121121
let relative_discr = if niche_start == 0 {
122-
encoded_discr
122+
tag
123123
} else {
124124
// FIXME handle niche_start > i64::MAX
125125
fx.bcx
126126
.ins()
127-
.iadd_imm(encoded_discr, -i64::try_from(niche_start).unwrap())
127+
.iadd_imm(tag, -i64::try_from(niche_start).unwrap())
128128
};
129129
let relative_max = niche_variants.end().as_u32() - niche_variants.start().as_u32();
130130
let is_niche = {

0 commit comments

Comments
 (0)