Rename two parsing closures.

To match `parse_address_space` and `parse_bits` above.
This commit is contained in:
Nicholas Nethercote 2023-09-29 19:54:40 +10:00
parent 86ecfdd605
commit ddb742225a

View File

@ -244,10 +244,11 @@ impl TargetDataLayout {
}; };
// Parse a size string. // Parse a size string.
let size = |s: &'a str, cause: &'a str| parse_bits(s, "size", cause).map(Size::from_bits); let parse_size =
|s: &'a str, cause: &'a str| parse_bits(s, "size", cause).map(Size::from_bits);
// Parse an alignment string. // Parse an alignment string.
let align = |s: &[&'a str], cause: &'a str| { let parse_align = |s: &[&'a str], cause: &'a str| {
if s.is_empty() { if s.is_empty() {
return Err(TargetDataLayoutErrors::MissingAlignment { cause }); return Err(TargetDataLayoutErrors::MissingAlignment { cause });
} }
@ -271,22 +272,22 @@ impl TargetDataLayout {
[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")?, ["a", ref a @ ..] => dl.aggregate_align = parse_align(a, "a")?,
["f32", ref a @ ..] => dl.f32_align = align(a, "f32")?, ["f32", ref a @ ..] => dl.f32_align = parse_align(a, "f32")?,
["f64", ref a @ ..] => dl.f64_align = align(a, "f64")?, ["f64", ref a @ ..] => dl.f64_align = parse_align(a, "f64")?,
// FIXME(erikdesjardins): we should be parsing nonzero address spaces // FIXME(erikdesjardins): we should be parsing nonzero address spaces
// this will require replacing TargetDataLayout::{pointer_size,pointer_align} // this will require replacing TargetDataLayout::{pointer_size,pointer_align}
// with e.g. `fn pointer_size_in(AddressSpace)` // with e.g. `fn pointer_size_in(AddressSpace)`
[p @ "p", s, ref a @ ..] | [p @ "p0", s, ref a @ ..] => { [p @ "p", s, ref a @ ..] | [p @ "p0", s, ref a @ ..] => {
dl.pointer_size = size(s, p)?; dl.pointer_size = parse_size(s, p)?;
dl.pointer_align = align(a, p)?; dl.pointer_align = parse_align(a, p)?;
} }
[s, ref a @ ..] if s.starts_with('i') => { [s, ref a @ ..] if s.starts_with('i') => {
let Ok(bits) = s[1..].parse::<u64>() else { let Ok(bits) = s[1..].parse::<u64>() else {
size(&s[1..], "i")?; // For the user error. parse_size(&s[1..], "i")?; // For the user error.
continue; continue;
}; };
let a = align(a, s)?; let a = parse_align(a, s)?;
match bits { match bits {
1 => dl.i1_align = a, 1 => dl.i1_align = a,
8 => dl.i8_align = a, 8 => dl.i8_align = a,
@ -303,8 +304,8 @@ impl TargetDataLayout {
} }
} }
[s, ref a @ ..] if s.starts_with('v') => { [s, ref a @ ..] if s.starts_with('v') => {
let v_size = size(&s[1..], "v")?; let v_size = parse_size(&s[1..], "v")?;
let a = align(a, s)?; let a = parse_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) {
v.1 = a; v.1 = a;
continue; continue;