diff --git a/cranelift/codegen/src/isa/s390x/lower/isle.rs b/cranelift/codegen/src/isa/s390x/lower/isle.rs index 2c263b7dca..4e495a06e3 100644 --- a/cranelift/codegen/src/isa/s390x/lower/isle.rs +++ b/cranelift/codegen/src/isa/s390x/lower/isle.rs @@ -123,13 +123,13 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> builder.take() } - fn defs_init(&mut self, abi: &Sig) -> CallRetList { + fn defs_init(&mut self, abi: Sig) -> CallRetList { // Allocate writable registers for all retval regs, except for StructRet args. let mut defs = smallvec![]; - for i in 0..self.lower_ctx.sigs().num_rets(*abi) { + for i in 0..self.lower_ctx.sigs().num_rets(abi) { if let &ABIArg::Slots { ref slots, purpose, .. - } = &self.lower_ctx.sigs().get_ret(*abi, i) + } = &self.lower_ctx.sigs().get_ret(abi, i) { if purpose == ArgumentPurpose::StructReturn { continue; @@ -165,20 +165,20 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> self.lower_ctx.sigs().abi_sig_for_sig_ref(sig_ref) } - fn abi_first_ret(&mut self, sig_ref: SigRef, abi: &Sig) -> usize { + fn abi_first_ret(&mut self, sig_ref: SigRef, abi: Sig) -> usize { // Return the index of the first actual return value, excluding // any StructReturn that might have been added to Sig. let sig = &self.lower_ctx.dfg().signatures[sig_ref]; - self.lower_ctx.sigs().num_rets(*abi) - sig.returns.len() + self.lower_ctx.sigs().num_rets(abi) - sig.returns.len() } - fn abi_lane_order(&mut self, abi: &Sig) -> LaneOrder { - lane_order_for_call_conv(self.lower_ctx.sigs()[*abi].call_conv()) + fn abi_lane_order(&mut self, abi: Sig) -> LaneOrder { + lane_order_for_call_conv(self.lower_ctx.sigs()[abi].call_conv()) } - fn abi_accumulate_outgoing_args_size(&mut self, abi: &Sig) -> Unit { - let off = self.lower_ctx.sigs()[*abi].sized_stack_arg_space() - + self.lower_ctx.sigs()[*abi].sized_stack_ret_space(); + fn abi_accumulate_outgoing_args_size(&mut self, abi: Sig) -> Unit { + let off = self.lower_ctx.sigs()[abi].sized_stack_arg_space() + + self.lower_ctx.sigs()[abi].sized_stack_ret_space(); self.lower_ctx .abi_mut() .accumulate_outgoing_args_size(off as u32); @@ -186,16 +186,13 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> fn abi_call_info( &mut self, - abi: &Sig, + abi: Sig, name: ExternalName, uses: &CallArgList, defs: &CallRetList, opcode: &Opcode, ) -> BoxCallInfo { - let clobbers = self - .lower_ctx - .sigs() - .call_clobbers::(*abi); + let clobbers = self.lower_ctx.sigs().call_clobbers::(abi); Box::new(CallInfo { dest: name.clone(), uses: uses.clone(), @@ -203,23 +200,20 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> clobbers, opcode: *opcode, caller_callconv: self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()), - callee_callconv: self.lower_ctx.sigs()[*abi].call_conv(), + callee_callconv: self.lower_ctx.sigs()[abi].call_conv(), tls_symbol: None, }) } fn abi_call_ind_info( &mut self, - abi: &Sig, + abi: Sig, target: Reg, uses: &CallArgList, defs: &CallRetList, opcode: &Opcode, ) -> BoxCallIndInfo { - let clobbers = self - .lower_ctx - .sigs() - .call_clobbers::(*abi); + let clobbers = self.lower_ctx.sigs().call_clobbers::(abi); Box::new(CallIndInfo { rn: target, uses: uses.clone(), @@ -227,7 +221,7 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> clobbers, opcode: *opcode, caller_callconv: self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()), - callee_callconv: self.lower_ctx.sigs()[*abi].call_conv(), + callee_callconv: self.lower_ctx.sigs()[abi].call_conv(), }) } diff --git a/cranelift/codegen/src/machinst/abi.rs b/cranelift/codegen/src/machinst/abi.rs index 487d42d784..530bfbb4a5 100644 --- a/cranelift/codegen/src/machinst/abi.rs +++ b/cranelift/codegen/src/machinst/abi.rs @@ -1018,11 +1018,11 @@ pub struct Callee { fn get_special_purpose_param_register( f: &ir::Function, sigs: &SigSet, - sig: &Sig, + sig: Sig, purpose: ir::ArgumentPurpose, ) -> Option { let idx = f.signature.special_param_index(purpose)?; - match &sigs.args(*sig)[idx] { + match &sigs.args(sig)[idx] { &ABIArg::Slots { ref slots, .. } => match &slots[0] { &ABIArgSlot::Reg { reg, .. } => Some(reg.into()), _ => None, @@ -1100,11 +1100,11 @@ impl Callee { // argument or as a global value which often calculates the stack limit // from the arguments. let stack_limit = - get_special_purpose_param_register(f, sigs, &sig, ir::ArgumentPurpose::StackLimit) + get_special_purpose_param_register(f, sigs, sig, ir::ArgumentPurpose::StackLimit) .map(|reg| (reg, smallvec![])) .or_else(|| { f.stack_limit - .map(|gv| gen_stack_limit::(f, sigs, &sig, gv)) + .map(|gv| gen_stack_limit::(f, sigs, sig, gv)) }); // Determine whether a probestack call is required for large enough @@ -1225,7 +1225,7 @@ impl Callee { fn gen_stack_limit( f: &ir::Function, sigs: &SigSet, - sig: &Sig, + sig: Sig, gv: ir::GlobalValue, ) -> (Reg, SmallInstVec) { let mut insts = smallvec![]; @@ -1236,7 +1236,7 @@ fn gen_stack_limit( fn generate_gv( f: &ir::Function, sigs: &SigSet, - sig: &Sig, + sig: Sig, gv: ir::GlobalValue, insts: &mut SmallInstVec, ) -> Reg { diff --git a/cranelift/codegen/src/machinst/isle.rs b/cranelift/codegen/src/machinst/isle.rs index f46cde696f..b151445472 100644 --- a/cranelift/codegen/src/machinst/isle.rs +++ b/cranelift/codegen/src/machinst/isle.rs @@ -400,40 +400,40 @@ macro_rules! isle_lower_prelude_methods { regs.regs()[idx] } - fn abi_num_args(&mut self, abi: &Sig) -> usize { - self.lower_ctx.sigs().num_args(*abi) + fn abi_num_args(&mut self, abi: Sig) -> usize { + self.lower_ctx.sigs().num_args(abi) } - fn abi_get_arg(&mut self, abi: &Sig, idx: usize) -> ABIArg { - self.lower_ctx.sigs().get_arg(*abi, idx) + fn abi_get_arg(&mut self, abi: Sig, idx: usize) -> ABIArg { + self.lower_ctx.sigs().get_arg(abi, idx) } - fn abi_num_rets(&mut self, abi: &Sig) -> usize { - self.lower_ctx.sigs().num_rets(*abi) + fn abi_num_rets(&mut self, abi: Sig) -> usize { + self.lower_ctx.sigs().num_rets(abi) } - fn abi_get_ret(&mut self, abi: &Sig, idx: usize) -> ABIArg { - self.lower_ctx.sigs().get_ret(*abi, idx) + fn abi_get_ret(&mut self, abi: Sig, idx: usize) -> ABIArg { + self.lower_ctx.sigs().get_ret(abi, idx) } - fn abi_ret_arg(&mut self, abi: &Sig) -> Option { - self.lower_ctx.sigs().get_ret_arg(*abi) + fn abi_ret_arg(&mut self, abi: Sig) -> Option { + self.lower_ctx.sigs().get_ret_arg(abi) } - fn abi_no_ret_arg(&mut self, abi: &Sig) -> Option<()> { - if let Some(_) = self.lower_ctx.sigs().get_ret_arg(*abi) { + fn abi_no_ret_arg(&mut self, abi: Sig) -> Option<()> { + if let Some(_) = self.lower_ctx.sigs().get_ret_arg(abi) { None } else { Some(()) } } - fn abi_sized_stack_arg_space(&mut self, abi: &Sig) -> i64 { - self.lower_ctx.sigs()[*abi].sized_stack_arg_space() + fn abi_sized_stack_arg_space(&mut self, abi: Sig) -> i64 { + self.lower_ctx.sigs()[abi].sized_stack_arg_space() } - fn abi_sized_stack_ret_space(&mut self, abi: &Sig) -> i64 { - self.lower_ctx.sigs()[*abi].sized_stack_ret_space() + fn abi_sized_stack_ret_space(&mut self, abi: Sig) -> i64 { + self.lower_ctx.sigs()[abi].sized_stack_ret_space() } fn abi_arg_only_slot(&mut self, arg: &ABIArg) -> Option { diff --git a/cranelift/codegen/src/prelude_lower.isle b/cranelift/codegen/src/prelude_lower.isle index 49e56f19b0..f9d968c759 100644 --- a/cranelift/codegen/src/prelude_lower.isle +++ b/cranelift/codegen/src/prelude_lower.isle @@ -597,7 +597,7 @@ ;;;; Helpers for generating calls ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Type to hold information about a function call signature. -(type Sig extern (enum)) +(type Sig (primitive Sig)) ;; Information how to pass one argument or return value. (type ABIArg extern (enum))