fuzzgen: Generate compiler flags (#5020)

* fuzzgen: Test compiler flags

* cranelift: Generate `all()` function for all enum flags

This allows a user to iterate all flags that exist.

* fuzzgen: Minimize regalloc_checker compiles

* fuzzgen: Limit the amount of test case inputs

* fuzzgen: Add egraphs flag

It's finally here! 🥳

* cranelift: Add fuzzing comment to settings

* fuzzgen: Add riscv64

* fuzzgen:  Unconditionally enable some flags
This commit is contained in:
Afonso Bordado
2022-10-21 00:40:50 +01:00
committed by GitHub
parent 0959f90755
commit 51d8734235
5 changed files with 138 additions and 29 deletions

View File

@@ -98,6 +98,26 @@ fn gen_iterator(group: &SettingGroup, fmt: &mut Formatter) {
fmtln!(fmt, "}");
}
/// Generates a `all()` function with all options for this enum
fn gen_enum_all(name: &str, values: &[&'static str], fmt: &mut Formatter) {
fmtln!(
fmt,
"/// Returns a slice with all possible [{}] values.",
name
);
fmtln!(fmt, "pub fn all() -> &'static [{}] {{", name);
fmt.indent(|fmt| {
fmtln!(fmt, "&[");
fmt.indent(|fmt| {
for v in values.iter() {
fmtln!(fmt, "Self::{},", camel_case(v));
}
});
fmtln!(fmt, "]");
});
fmtln!(fmt, "}");
}
/// Emit Display and FromStr implementations for enum settings.
fn gen_to_and_from_str(name: &str, values: &[&'static str], fmt: &mut Formatter) {
fmtln!(fmt, "impl fmt::Display for {} {{", name);
@@ -158,6 +178,12 @@ fn gen_enum_types(group: &SettingGroup, fmt: &mut Formatter) {
});
fmtln!(fmt, "}");
fmtln!(fmt, "impl {} {{", name);
fmt.indent(|fmt| {
gen_enum_all(&name, values, fmt);
});
fmtln!(fmt, "}");
gen_to_and_from_str(&name, values, fmt);
}
}