Cranelift: ensure ISA level needed for SIMD is present when SIMD is enabled. (#3816)

Addresses #3809: when we are asked to create a Cranelift backend with
shared flags that indicate support for SIMD, we should check that the
ISA level needed for our SIMD lowerings is present.
This commit is contained in:
Chris Fallin
2022-02-16 17:29:30 -08:00
committed by GitHub
parent ef17a36852
commit 1c014d129a
55 changed files with 172 additions and 84 deletions

View File

@@ -1053,7 +1053,15 @@ impl<'a> Parser<'a> {
specified_target = true;
// Construct a trait object with the aggregate settings.
targets.push(isa_builder.finish(settings::Flags::new(flag_builder.clone())));
targets.push(
isa_builder
.finish(settings::Flags::new(flag_builder.clone()))
.map_err(|e| ParseError {
location: loc,
message: format!("invalid ISA flags for '{}': {:?}", targ, e),
is_warning: false,
})?,
);
}
if !specified_target {
@@ -1122,7 +1130,18 @@ impl<'a> Parser<'a> {
isaspec::parse_options(words, &mut isa_builder, self.loc)?;
// Construct a trait object with the aggregate settings.
targets.push(isa_builder.finish(settings::Flags::new(flag_builder.clone())));
targets.push(
isa_builder
.finish(settings::Flags::new(flag_builder.clone()))
.map_err(|e| ParseError {
location: loc,
message: format!(
"invalid ISA flags for '{}': {:?}",
target_name, e
),
is_warning: false,
})?,
);
}
_ => break,
}