Get out of bootstrapping pickle.
This commit is contained in:
parent
984f9db946
commit
1060513ddc
2 changed files with 25 additions and 8 deletions
|
@ -105,20 +105,34 @@ impl TargetDataLayout {
|
||||||
let mut dl = TargetDataLayout::default();
|
let mut dl = TargetDataLayout::default();
|
||||||
let mut i128_align_src = 64;
|
let mut i128_align_src = 64;
|
||||||
for spec in target.data_layout.split('-') {
|
for spec in target.data_layout.split('-') {
|
||||||
match spec.split(':').collect::<Vec<_>>()[..] {
|
let spec_parts = spec.split(':').collect::<Vec<_>>();
|
||||||
|
|
||||||
|
match &*spec_parts {
|
||||||
["e"] => dl.endian = Endian::Little,
|
["e"] => dl.endian = Endian::Little,
|
||||||
["E"] => dl.endian = Endian::Big,
|
["E"] => dl.endian = Endian::Big,
|
||||||
[p] if p.starts_with("P") => {
|
[p] if p.starts_with("P") => {
|
||||||
dl.instruction_address_space = parse_address_space(&p[1..], "P")?
|
dl.instruction_address_space = parse_address_space(&p[1..], "P")?
|
||||||
}
|
}
|
||||||
["a", ref a..] => dl.aggregate_align = align(a, "a")?,
|
// FIXME: Ping cfg(bootstrap) -- Use `ref a @ ..` with new bootstrap compiler.
|
||||||
["f32", ref a..] => dl.f32_align = align(a, "f32")?,
|
["a", ..] => {
|
||||||
["f64", ref a..] => dl.f64_align = align(a, "f64")?,
|
let a = &spec_parts[1..]; // FIXME inline into pattern.
|
||||||
[p @ "p", s, ref a..] | [p @ "p0", s, ref a..] => {
|
dl.aggregate_align = align(a, "a")?
|
||||||
|
}
|
||||||
|
["f32", ..] => {
|
||||||
|
let a = &spec_parts[1..]; // FIXME inline into pattern.
|
||||||
|
dl.f32_align = align(a, "f32")?
|
||||||
|
}
|
||||||
|
["f64", ..] => {
|
||||||
|
let a = &spec_parts[1..]; // FIXME inline into pattern.
|
||||||
|
dl.f64_align = align(a, "f64")?
|
||||||
|
}
|
||||||
|
[p @ "p", s, ..] | [p @ "p0", s, ..] => {
|
||||||
|
let a = &spec_parts[2..]; // FIXME inline into pattern.
|
||||||
dl.pointer_size = size(s, p)?;
|
dl.pointer_size = size(s, p)?;
|
||||||
dl.pointer_align = align(a, p)?;
|
dl.pointer_align = align(a, p)?;
|
||||||
}
|
}
|
||||||
[s, ref a..] if s.starts_with("i") => {
|
[s, ..] if s.starts_with("i") => {
|
||||||
|
let a = &spec_parts[1..]; // FIXME inline into pattern.
|
||||||
let bits = match s[1..].parse::<u64>() {
|
let bits = match s[1..].parse::<u64>() {
|
||||||
Ok(bits) => bits,
|
Ok(bits) => bits,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
|
@ -142,7 +156,8 @@ impl TargetDataLayout {
|
||||||
dl.i128_align = a;
|
dl.i128_align = a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[s, ref a..] if s.starts_with("v") => {
|
[s, ..] if s.starts_with("v") => {
|
||||||
|
let a = &spec_parts[1..]; // FIXME inline into pattern.
|
||||||
let v_size = size(&s[1..], "v")?;
|
let v_size = size(&s[1..], "v")?;
|
||||||
let a = align(a, s)?;
|
let a = align(a, s)?;
|
||||||
if let Some(v) = dl.vector_align.iter_mut().find(|v| v.0 == v_size) {
|
if let Some(v) = dl.vector_align.iter_mut().find(|v| v.0 == v_size) {
|
||||||
|
|
|
@ -1818,7 +1818,9 @@ fn bad_variant_count<'tcx>(tcx: TyCtxt<'tcx>, adt: &'tcx ty::AdtDef, sp: Span, d
|
||||||
);
|
);
|
||||||
let mut err = struct_span_err!(tcx.sess, sp, E0731, "transparent enum {}", msg);
|
let mut err = struct_span_err!(tcx.sess, sp, E0731, "transparent enum {}", msg);
|
||||||
err.span_label(sp, &msg);
|
err.span_label(sp, &msg);
|
||||||
if let &[ref start.., ref end] = &variant_spans[..] {
|
if let &[.., ref end] = &variant_spans[..] {
|
||||||
|
// FIXME: Ping cfg(bootstrap) -- Use `ref start @ ..` with new bootstrap compiler.
|
||||||
|
let start = &variant_spans[..variant_spans.len() - 1];
|
||||||
for variant_span in start {
|
for variant_span in start {
|
||||||
err.span_label(*variant_span, "");
|
err.span_label(*variant_span, "");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue