From eb13dace9d86f9b1a023246bbed34994263e7e8f Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 25 Jul 2023 16:59:51 +0000 Subject: [PATCH 1/5] Remove shared_defs args from all per-isa definitions They don't and shouldn't define any isa-independent things --- cranelift/codegen/meta/src/isa/arm64.rs | 8 +++----- cranelift/codegen/meta/src/isa/mod.rs | 11 +++++------ cranelift/codegen/meta/src/isa/riscv64.rs | 8 +++----- cranelift/codegen/meta/src/isa/s390x.rs | 8 +++----- cranelift/codegen/meta/src/isa/x86.rs | 4 +--- cranelift/codegen/meta/src/lib.rs | 13 ++++--------- 6 files changed, 19 insertions(+), 33 deletions(-) diff --git a/cranelift/codegen/meta/src/isa/arm64.rs b/cranelift/codegen/meta/src/isa/arm64.rs index 9e1aac536422..74d9abdad5b0 100644 --- a/cranelift/codegen/meta/src/isa/arm64.rs +++ b/cranelift/codegen/meta/src/isa/arm64.rs @@ -1,9 +1,7 @@ use crate::cdsl::isa::TargetIsa; use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; -use crate::shared::Definitions as SharedDefinitions; - -fn define_settings(_shared: &SettingGroup) -> SettingGroup { +fn define_settings() -> SettingGroup { let mut setting = SettingGroupBuilder::new("arm64"); setting.add_bool( @@ -54,8 +52,8 @@ fn define_settings(_shared: &SettingGroup) -> SettingGroup { setting.build() } -pub(crate) fn define(shared_defs: &mut SharedDefinitions) -> TargetIsa { - let settings = define_settings(&shared_defs.settings); +pub(crate) fn define() -> TargetIsa { + let settings = define_settings(); TargetIsa::new("arm64", settings) } diff --git a/cranelift/codegen/meta/src/isa/mod.rs b/cranelift/codegen/meta/src/isa/mod.rs index 4d77f9268ddf..ecda9b83d054 100644 --- a/cranelift/codegen/meta/src/isa/mod.rs +++ b/cranelift/codegen/meta/src/isa/mod.rs @@ -1,6 +1,5 @@ //! Define supported ISAs; includes ISA-specific instructions, encodings, registers, settings, etc. use crate::cdsl::isa::TargetIsa; -use crate::shared::Definitions as SharedDefinitions; use std::fmt; mod arm64; @@ -55,13 +54,13 @@ impl fmt::Display for Isa { } } -pub(crate) fn define(isas: &[Isa], shared_defs: &mut SharedDefinitions) -> Vec { +pub(crate) fn define(isas: &[Isa]) -> Vec { isas.iter() .map(|isa| match isa { - Isa::X86 => x86::define(shared_defs), - Isa::Arm64 => arm64::define(shared_defs), - Isa::S390x => s390x::define(shared_defs), - Isa::Riscv64 => riscv64::define(shared_defs), + Isa::X86 => x86::define(), + Isa::Arm64 => arm64::define(), + Isa::S390x => s390x::define(), + Isa::Riscv64 => riscv64::define(), }) .collect() } diff --git a/cranelift/codegen/meta/src/isa/riscv64.rs b/cranelift/codegen/meta/src/isa/riscv64.rs index bf825bb2baf5..a15b2e4f1bd7 100644 --- a/cranelift/codegen/meta/src/isa/riscv64.rs +++ b/cranelift/codegen/meta/src/isa/riscv64.rs @@ -1,8 +1,6 @@ use crate::cdsl::isa::TargetIsa; use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; -use crate::shared::Definitions as SharedDefinitions; - macro_rules! define_zvl_ext { (DEF: $settings:expr, $size:expr) => {{ let name = concat!("has_zvl", $size, "b"); @@ -27,7 +25,7 @@ macro_rules! define_zvl_ext { }}; } -fn define_settings(_shared: &SettingGroup) -> SettingGroup { +fn define_settings() -> SettingGroup { let mut setting = SettingGroupBuilder::new("riscv64"); let _has_m = setting.add_bool("has_m", "has extension M?", "", false); @@ -102,7 +100,7 @@ fn define_settings(_shared: &SettingGroup) -> SettingGroup { setting.build() } -pub(crate) fn define(shared_defs: &mut SharedDefinitions) -> TargetIsa { - let settings = define_settings(&shared_defs.settings); +pub(crate) fn define() -> TargetIsa { + let settings = define_settings(); TargetIsa::new("riscv64", settings) } diff --git a/cranelift/codegen/meta/src/isa/s390x.rs b/cranelift/codegen/meta/src/isa/s390x.rs index 1e36e462c6a7..cf32cf65d4cc 100644 --- a/cranelift/codegen/meta/src/isa/s390x.rs +++ b/cranelift/codegen/meta/src/isa/s390x.rs @@ -1,9 +1,7 @@ use crate::cdsl::isa::TargetIsa; use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; -use crate::shared::Definitions as SharedDefinitions; - -fn define_settings(_shared: &SettingGroup) -> SettingGroup { +fn define_settings() -> SettingGroup { let mut settings = SettingGroupBuilder::new("s390x"); // The baseline architecture for cranelift is z14 (arch12), @@ -40,8 +38,8 @@ fn define_settings(_shared: &SettingGroup) -> SettingGroup { settings.build() } -pub(crate) fn define(shared_defs: &mut SharedDefinitions) -> TargetIsa { - let settings = define_settings(&shared_defs.settings); +pub(crate) fn define() -> TargetIsa { + let settings = define_settings(); TargetIsa::new("s390x", settings) } diff --git a/cranelift/codegen/meta/src/isa/x86.rs b/cranelift/codegen/meta/src/isa/x86.rs index 2b9b610748c2..a75b6e31c908 100644 --- a/cranelift/codegen/meta/src/isa/x86.rs +++ b/cranelift/codegen/meta/src/isa/x86.rs @@ -1,9 +1,7 @@ use crate::cdsl::isa::TargetIsa; use crate::cdsl::settings::{PredicateNode, SettingGroup, SettingGroupBuilder}; -use crate::shared::Definitions as SharedDefinitions; - -pub(crate) fn define(_shared_defs: &mut SharedDefinitions) -> TargetIsa { +pub(crate) fn define() -> TargetIsa { let settings = define_settings(); TargetIsa::new("x86", settings) diff --git a/cranelift/codegen/meta/src/lib.rs b/cranelift/codegen/meta/src/lib.rs index 738ead0e93b7..cee71b0f4de8 100644 --- a/cranelift/codegen/meta/src/lib.rs +++ b/cranelift/codegen/meta/src/lib.rs @@ -23,9 +23,8 @@ pub fn isa_from_arch(arch: &str) -> Result { /// Generates all the Rust source files used in Cranelift from the meta-language. pub fn generate(isas: &[isa::Isa], out_dir: &str, isle_dir: &str) -> Result<(), error::Error> { - // Create all the definitions: - // - common definitions. - let mut shared_defs = shared::define(); + // Common definitions. + let shared_defs = shared::define(); gen_settings::generate( &shared_defs.settings, @@ -35,13 +34,8 @@ pub fn generate(isas: &[isa::Isa], out_dir: &str, isle_dir: &str) -> Result<(), )?; gen_types::generate("types.rs", out_dir)?; - // - per ISA definitions. - let target_isas = isa::define(isas, &mut shared_defs); - - // At this point, all definitions are done. let all_formats = shared_defs.verify_instruction_formats(); - // Generate all the code. gen_inst::generate( all_formats, &shared_defs.all_instructions, @@ -53,7 +47,8 @@ pub fn generate(isas: &[isa::Isa], out_dir: &str, isle_dir: &str) -> Result<(), isle_dir, )?; - for isa in target_isas { + // Per ISA definitions. + for isa in isa::define(isas) { gen_settings::generate( &isa.settings, gen_settings::ParentGroup::Shared, From 87cff525c5aa06c4837586c7c83af7640cf937e1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:02:43 +0000 Subject: [PATCH 2/5] Inline all define_settings functions --- cranelift/codegen/meta/src/isa/arm64.rs | 26 +++++++++-------------- cranelift/codegen/meta/src/isa/riscv64.rs | 11 +++------- cranelift/codegen/meta/src/isa/s390x.rs | 12 +++-------- cranelift/codegen/meta/src/isa/x86.rs | 10 ++------- 4 files changed, 18 insertions(+), 41 deletions(-) diff --git a/cranelift/codegen/meta/src/isa/arm64.rs b/cranelift/codegen/meta/src/isa/arm64.rs index 74d9abdad5b0..34d82b8a5520 100644 --- a/cranelift/codegen/meta/src/isa/arm64.rs +++ b/cranelift/codegen/meta/src/isa/arm64.rs @@ -1,16 +1,16 @@ use crate::cdsl::isa::TargetIsa; -use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; +use crate::cdsl::settings::SettingGroupBuilder; -fn define_settings() -> SettingGroup { - let mut setting = SettingGroupBuilder::new("arm64"); +pub(crate) fn define() -> TargetIsa { + let mut settings = SettingGroupBuilder::new("arm64"); - setting.add_bool( + settings.add_bool( "has_lse", "Has Large System Extensions (FEAT_LSE) support.", "", false, ); - setting.add_bool( + settings.add_bool( "has_pauth", "Has Pointer authentication (FEAT_PAuth) support; enables the use of \ non-HINT instructions, but does not have an effect on code generation \ @@ -18,14 +18,14 @@ fn define_settings() -> SettingGroup { "", false, ); - setting.add_bool( + settings.add_bool( "sign_return_address_all", "If function return address signing is enabled, then apply it to all \ functions; does not have an effect on code generation by itself.", "", false, ); - setting.add_bool( + settings.add_bool( "sign_return_address", "Use pointer authentication instructions to sign function return \ addresses; HINT-space instructions using the A key are generated \ @@ -34,7 +34,7 @@ fn define_settings() -> SettingGroup { "", false, ); - setting.add_bool( + settings.add_bool( "sign_return_address_with_bkey", "Use the B key with pointer authentication instructions instead of \ the default A key; does not have an effect on code generation by \ @@ -42,18 +42,12 @@ fn define_settings() -> SettingGroup { "", false, ); - setting.add_bool( + settings.add_bool( "use_bti", "Use Branch Target Identification (FEAT_BTI) instructions.", "", false, ); - setting.build() -} - -pub(crate) fn define() -> TargetIsa { - let settings = define_settings(); - - TargetIsa::new("arm64", settings) + TargetIsa::new("arm64", settings.build()) } diff --git a/cranelift/codegen/meta/src/isa/riscv64.rs b/cranelift/codegen/meta/src/isa/riscv64.rs index a15b2e4f1bd7..f080aaef3737 100644 --- a/cranelift/codegen/meta/src/isa/riscv64.rs +++ b/cranelift/codegen/meta/src/isa/riscv64.rs @@ -1,5 +1,5 @@ use crate::cdsl::isa::TargetIsa; -use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; +use crate::cdsl::settings::SettingGroupBuilder; macro_rules! define_zvl_ext { (DEF: $settings:expr, $size:expr) => {{ @@ -25,7 +25,7 @@ macro_rules! define_zvl_ext { }}; } -fn define_settings() -> SettingGroup { +pub(crate) fn define() -> TargetIsa { let mut setting = SettingGroupBuilder::new("riscv64"); let _has_m = setting.add_bool("has_m", "has extension M?", "", false); @@ -97,10 +97,5 @@ fn define_settings() -> SettingGroup { let (_, zvl32768b) = define_zvl_ext!(setting, 32768, zvl16384b); let (_, _zvl65536b) = define_zvl_ext!(setting, 65536, zvl32768b); - setting.build() -} - -pub(crate) fn define() -> TargetIsa { - let settings = define_settings(); - TargetIsa::new("riscv64", settings) + TargetIsa::new("riscv64", setting.build()) } diff --git a/cranelift/codegen/meta/src/isa/s390x.rs b/cranelift/codegen/meta/src/isa/s390x.rs index cf32cf65d4cc..7a404d3d33fe 100644 --- a/cranelift/codegen/meta/src/isa/s390x.rs +++ b/cranelift/codegen/meta/src/isa/s390x.rs @@ -1,7 +1,7 @@ use crate::cdsl::isa::TargetIsa; -use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder}; +use crate::cdsl::settings::SettingGroupBuilder; -fn define_settings() -> SettingGroup { +pub(crate) fn define() -> TargetIsa { let mut settings = SettingGroupBuilder::new("s390x"); // The baseline architecture for cranelift is z14 (arch12), @@ -35,11 +35,5 @@ fn define_settings() -> SettingGroup { preset!(has_mie2 && has_vxrs_ext2), ); - settings.build() -} - -pub(crate) fn define() -> TargetIsa { - let settings = define_settings(); - - TargetIsa::new("s390x", settings) + TargetIsa::new("s390x", settings.build()) } diff --git a/cranelift/codegen/meta/src/isa/x86.rs b/cranelift/codegen/meta/src/isa/x86.rs index a75b6e31c908..b6b0fb632967 100644 --- a/cranelift/codegen/meta/src/isa/x86.rs +++ b/cranelift/codegen/meta/src/isa/x86.rs @@ -1,13 +1,7 @@ use crate::cdsl::isa::TargetIsa; -use crate::cdsl::settings::{PredicateNode, SettingGroup, SettingGroupBuilder}; +use crate::cdsl::settings::{PredicateNode, SettingGroupBuilder}; pub(crate) fn define() -> TargetIsa { - let settings = define_settings(); - - TargetIsa::new("x86", settings) -} - -fn define_settings() -> SettingGroup { let mut settings = SettingGroupBuilder::new("x86"); // CPUID.01H:ECX @@ -403,5 +397,5 @@ fn define_settings() -> SettingGroup { preset!(x86_64_v3 && has_avx512dq && has_avx512vl), ); - settings.build() + TargetIsa::new("x86", settings.build()) } From 5859bbbcef6bc4b7335c257080301ee6f4524d36 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:14:28 +0000 Subject: [PATCH 3/5] Merge verify_instruction_formats into shared::define() It isn't modified in between anyway now. --- cranelift/codegen/meta/src/gen_inst.rs | 19 +++--- cranelift/codegen/meta/src/lib.rs | 4 +- cranelift/codegen/meta/src/shared/mod.rs | 81 ++++++++++++------------ 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/cranelift/codegen/meta/src/gen_inst.rs b/cranelift/codegen/meta/src/gen_inst.rs index 532892248477..329bff65fc6f 100644 --- a/cranelift/codegen/meta/src/gen_inst.rs +++ b/cranelift/codegen/meta/src/gen_inst.rs @@ -1,5 +1,6 @@ //! Generate instruction data (including opcodes, formats, builders, etc.). use std::fmt; +use std::rc::Rc; use cranelift_codegen_shared::constant_hash; @@ -17,7 +18,7 @@ use crate::unique_table::{UniqueSeqTable, UniqueTable}; const TYPESET_LIMIT: usize = 0xff; /// Generate an instruction format enumeration. -fn gen_formats(formats: &[&InstructionFormat], fmt: &mut Formatter) { +fn gen_formats(formats: &[Rc], fmt: &mut Formatter) { fmt.doc_comment( r#" An instruction format @@ -65,7 +66,7 @@ fn gen_formats(formats: &[&InstructionFormat], fmt: &mut Formatter) { /// Every variant must contain an `opcode` field. The size of `InstructionData` should be kept at /// 16 bytes on 64-bit architectures. If more space is needed to represent an instruction, use a /// `ValueList` to store the additional information out of line. -fn gen_instruction_data(formats: &[&InstructionFormat], fmt: &mut Formatter) { +fn gen_instruction_data(formats: &[Rc], fmt: &mut Formatter) { fmt.line("#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]"); fmt.line(r#"#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]"#); fmt.line("#[allow(missing_docs)]"); @@ -104,7 +105,7 @@ fn gen_instruction_data(formats: &[&InstructionFormat], fmt: &mut Formatter) { fmt.line("}"); } -fn gen_arguments_method(formats: &[&InstructionFormat], fmt: &mut Formatter, is_mut: bool) { +fn gen_arguments_method(formats: &[Rc], fmt: &mut Formatter, is_mut: bool) { let (method, mut_, rslice, as_slice) = if is_mut { ( "arguments_mut", @@ -172,7 +173,7 @@ fn gen_arguments_method(formats: &[&InstructionFormat], fmt: &mut Formatter, is_ /// - `pub fn arguments_mut(&mut self, &pool) -> &mut [Value]` /// - `pub fn eq(&self, &other: Self, &pool) -> bool` /// - `pub fn hash(&self, state: &mut H, &pool)` -fn gen_instruction_data_impl(formats: &[&InstructionFormat], fmt: &mut Formatter) { +fn gen_instruction_data_impl(formats: &[Rc], fmt: &mut Formatter) { fmt.line("impl InstructionData {"); fmt.indent(|fmt| { fmt.doc_comment("Get the opcode of this instruction."); @@ -1221,7 +1222,7 @@ enum IsleTarget { } fn gen_common_isle( - formats: &[&InstructionFormat], + formats: &[Rc], instructions: &AllInstructions, fmt: &mut Formatter, isle_target: IsleTarget, @@ -1669,7 +1670,7 @@ fn gen_common_isle( } fn gen_opt_isle( - formats: &[&InstructionFormat], + formats: &[Rc], instructions: &AllInstructions, fmt: &mut Formatter, ) { @@ -1677,7 +1678,7 @@ fn gen_opt_isle( } fn gen_lower_isle( - formats: &[&InstructionFormat], + formats: &[Rc], instructions: &AllInstructions, fmt: &mut Formatter, ) { @@ -1707,7 +1708,7 @@ fn gen_isle_enum(name: &str, mut variants: Vec<&str>, fmt: &mut Formatter) { /// Generate a Builder trait with methods for all instructions. fn gen_builder( instructions: &AllInstructions, - formats: &[&InstructionFormat], + formats: &[Rc], fmt: &mut Formatter, ) { fmt.doc_comment( @@ -1744,7 +1745,7 @@ fn gen_builder( } pub(crate) fn generate( - formats: Vec<&InstructionFormat>, + formats: &[Rc], all_inst: &AllInstructions, opcode_filename: &str, inst_builder_filename: &str, diff --git a/cranelift/codegen/meta/src/lib.rs b/cranelift/codegen/meta/src/lib.rs index cee71b0f4de8..689d3508b06c 100644 --- a/cranelift/codegen/meta/src/lib.rs +++ b/cranelift/codegen/meta/src/lib.rs @@ -34,10 +34,8 @@ pub fn generate(isas: &[isa::Isa], out_dir: &str, isle_dir: &str) -> Result<(), )?; gen_types::generate("types.rs", out_dir)?; - let all_formats = shared_defs.verify_instruction_formats(); - gen_inst::generate( - all_formats, + &shared_defs.all_formats, &shared_defs.all_instructions, "opcodes.rs", "inst_builder.rs", diff --git a/cranelift/codegen/meta/src/shared/mod.rs b/cranelift/codegen/meta/src/shared/mod.rs index cc23063b94b4..4c1f7763071d 100644 --- a/cranelift/codegen/meta/src/shared/mod.rs +++ b/cranelift/codegen/meta/src/shared/mod.rs @@ -22,6 +22,7 @@ use std::rc::Rc; pub(crate) struct Definitions { pub settings: SettingGroup, pub all_instructions: AllInstructions, + pub all_formats: Vec>, } pub(crate) fn define() -> Definitions { @@ -31,57 +32,57 @@ pub(crate) fn define() -> Definitions { let entities = EntityRefs::new(); let formats = Formats::new(&immediates, &entities); instructions::define(&mut all_instructions, &formats, &immediates, &entities); + let all_formats = verify_instruction_formats(&all_instructions); Definitions { settings: settings::define(), all_instructions, + all_formats, } } -impl Definitions { - /// Verifies certain properties of formats. - /// - /// - Formats must be uniquely named: if two formats have the same name, they must refer to the - /// same data. Otherwise, two format variants in the codegen crate would have the same name. - /// - Formats must be structurally different from each other. Otherwise, this would lead to - /// code duplicate in the codegen crate. - /// - /// Returns a list of all the instruction formats effectively used. - pub fn verify_instruction_formats(&self) -> Vec<&InstructionFormat> { - let mut format_names: HashMap<&'static str, &Rc> = HashMap::new(); +/// Verifies certain properties of formats. +/// +/// - Formats must be uniquely named: if two formats have the same name, they must refer to the +/// same data. Otherwise, two format variants in the codegen crate would have the same name. +/// - Formats must be structurally different from each other. Otherwise, this would lead to +/// code duplicate in the codegen crate. +/// +/// Returns a list of all the instruction formats effectively used. +fn verify_instruction_formats(all_instructions: &AllInstructions) -> Vec> { + let mut format_names: HashMap<&'static str, &Rc> = HashMap::new(); - // A structure is: number of input value operands / whether there's varargs or not / names - // of immediate fields. - let mut format_structures: HashMap = HashMap::new(); + // A structure is: number of input value operands / whether there's varargs or not / names + // of immediate fields. + let mut format_structures: HashMap> = HashMap::new(); - for inst in self.all_instructions.iter() { - // Check name. - if let Some(existing_format) = format_names.get(&inst.format.name) { - assert!( - Rc::ptr_eq(existing_format, &inst.format), - "formats must uniquely named; there's a\ + for inst in all_instructions { + // Check name. + if let Some(existing_format) = format_names.get(&inst.format.name) { + assert!( + Rc::ptr_eq(existing_format, &inst.format), + "formats must uniquely named; there's a\ conflict on the name '{}', please make sure it is used only once.", - existing_format.name - ); - } else { - format_names.insert(inst.format.name, &inst.format); - } - - // Check structure. - let key = inst.format.structure(); - if let Some(existing_format) = format_structures.get(&key) { - assert_eq!( - existing_format.name, inst.format.name, - "duplicate instruction formats {} and {}; please remove one.", - existing_format.name, inst.format.name - ); - } else { - format_structures.insert(key, &inst.format); - } + existing_format.name + ); + } else { + format_names.insert(inst.format.name, &inst.format); } - let mut result = Vec::from_iter(format_structures.into_values()); - result.sort_by_key(|format| format.name); - result + // Check structure. + let key = inst.format.structure(); + if let Some(existing_format) = format_structures.get(&key) { + assert_eq!( + existing_format.name, inst.format.name, + "duplicate instruction formats {} and {}; please remove one.", + existing_format.name, inst.format.name + ); + } else { + format_structures.insert(key, inst.format.clone()); + } } + + let mut result = Vec::from_iter(format_structures.into_values()); + result.sort_by_key(|format| format.name); + result } From b300741b0062d3e1ab9ca9c181fca434e23d6f8b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:50:46 +0000 Subject: [PATCH 4/5] Enable document private items for cranelift-codegen-meta The mentioned cargo bug has been fixed --- cranelift/codegen/meta/Cargo.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cranelift/codegen/meta/Cargo.toml b/cranelift/codegen/meta/Cargo.toml index 9c6b1bbf9f3e..75303fa4d211 100644 --- a/cranelift/codegen/meta/Cargo.toml +++ b/cranelift/codegen/meta/Cargo.toml @@ -8,9 +8,8 @@ repository = "https://github.com/bytecodealliance/wasmtime" readme = "README.md" edition.workspace = true -# FIXME(rust-lang/cargo#9300): uncomment once that lands -# [package.metadata.docs.rs] -# rustdoc-args = [ "--document-private-items" ] +[package.metadata.docs.rs] +rustdoc-args = [ "--document-private-items" ] [dependencies] cranelift-codegen-shared = { path = "../shared", version = "0.99.0" } From e39b8b89039e88ca4b5292143e04a52eca09685c Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:56:58 +0000 Subject: [PATCH 5/5] Remove unused testing_hooks cargo feature It has been unused ever since we removed the old backend framework. --- cranelift/codegen/Cargo.toml | 4 ---- cranelift/filetests/Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cranelift/codegen/Cargo.toml b/cranelift/codegen/Cargo.toml index 20c6302c47d0..a0a78ba867c4 100644 --- a/cranelift/codegen/Cargo.toml +++ b/cranelift/codegen/Cargo.toml @@ -61,10 +61,6 @@ core = [] # context, and the `disassemble` method on `MachBufferFinalized`. disas = ["anyhow", "capstone"] -# This enables some additional functions useful for writing tests, but which -# can significantly increase the size of the library. -testing_hooks = [] - # Enables detailed logging which can be somewhat expensive. trace-log = [] diff --git a/cranelift/filetests/Cargo.toml b/cranelift/filetests/Cargo.toml index 04b4a57ed088..a5e1bd764984 100644 --- a/cranelift/filetests/Cargo.toml +++ b/cranelift/filetests/Cargo.toml @@ -10,7 +10,7 @@ publish = false edition.workspace = true [dependencies] -cranelift-codegen = { workspace = true, features = ["testing_hooks", "disas"] } +cranelift-codegen = { workspace = true, features = ["disas"] } cranelift-frontend = { workspace = true } cranelift-interpreter = { workspace = true } cranelift-native = { workspace = true }