diff --git a/cranelift/codegen/meta/src/cdsl/recipes.rs b/cranelift/codegen/meta/src/cdsl/recipes.rs index 84510cf0d1..8157e08864 100644 --- a/cranelift/codegen/meta/src/cdsl/recipes.rs +++ b/cranelift/codegen/meta/src/cdsl/recipes.rs @@ -102,7 +102,7 @@ impl Into for Stack { /// The `branch_range` argument must be provided for recipes that can encode /// branch instructions. It is an `(origin, bits)` tuple describing the exact /// range that can be encoded in a branch instruction. -#[derive(Clone, Hash)] +#[derive(Clone)] pub struct EncodingRecipe { /// Short mnemonic name for this recipe. pub name: String, diff --git a/cranelift/codegen/meta/src/isa/x86/encodings.rs b/cranelift/codegen/meta/src/isa/x86/encodings.rs index 5a049eeaab..7ddde02bec 100644 --- a/cranelift/codegen/meta/src/isa/x86/encodings.rs +++ b/cranelift/codegen/meta/src/isa/x86/encodings.rs @@ -21,7 +21,7 @@ pub struct PerCpuModeEncodings { pub enc32: Vec, pub enc64: Vec, pub recipes: Recipes, - recipes_inverse: HashMap, + recipes_by_name: HashMap, pub inst_pred_reg: InstructionPredicateRegistry, } @@ -31,15 +31,15 @@ impl PerCpuModeEncodings { enc32: Vec::new(), enc64: Vec::new(), recipes: Recipes::new(), - recipes_inverse: HashMap::new(), + recipes_by_name: HashMap::new(), inst_pred_reg: InstructionPredicateRegistry::new(), } } fn add_recipe(&mut self, recipe: EncodingRecipe) -> EncodingRecipeNumber { - if let Some(found_index) = self.recipes_inverse.get(&recipe) { + if let Some(found_index) = self.recipes_by_name.get(&recipe.name) { assert!( - self.recipes[*found_index].name == recipe.name, + self.recipes[*found_index] == recipe, format!( "trying to insert different recipes with a same name ({})", recipe.name @@ -47,8 +47,9 @@ impl PerCpuModeEncodings { ); *found_index } else { - let index = self.recipes.push(recipe.clone()); - self.recipes_inverse.insert(recipe, index); + let recipe_name = recipe.name.clone(); + let index = self.recipes.push(recipe); + self.recipes_by_name.insert(recipe_name, index); index } }