mirror of https://github.com/rust-lang/rust.git
Remove triple method from FunctionCx
Instead use the default_call_conv field on TargetFrontendConfig to get the default CallConv.
This commit is contained in:
parent
fdd0f8a3b5
commit
a795a0384b
|
@ -18,11 +18,11 @@ pub(crate) use self::returning::codegen_return;
|
||||||
|
|
||||||
fn clif_sig_from_fn_abi<'tcx>(
|
fn clif_sig_from_fn_abi<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
triple: &target_lexicon::Triple,
|
default_call_conv: CallConv,
|
||||||
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
|
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
|
||||||
) -> Signature {
|
) -> Signature {
|
||||||
let call_conv = match fn_abi.conv {
|
let call_conv = match fn_abi.conv {
|
||||||
Conv::Rust | Conv::C => CallConv::triple_default(triple),
|
Conv::Rust | Conv::C => default_call_conv,
|
||||||
Conv::X86_64SysV => CallConv::SystemV,
|
Conv::X86_64SysV => CallConv::SystemV,
|
||||||
Conv::X86_64Win64 => CallConv::WindowsFastcall,
|
Conv::X86_64Win64 => CallConv::WindowsFastcall,
|
||||||
Conv::ArmAapcs
|
Conv::ArmAapcs
|
||||||
|
@ -55,7 +55,7 @@ pub(crate) fn get_function_sig<'tcx>(
|
||||||
assert!(!inst.substs.needs_infer());
|
assert!(!inst.substs.needs_infer());
|
||||||
clif_sig_from_fn_abi(
|
clif_sig_from_fn_abi(
|
||||||
tcx,
|
tcx,
|
||||||
triple,
|
CallConv::triple_default(triple),
|
||||||
&RevealAllLayoutCx(tcx).fn_abi_of_instance(inst, ty::List::empty()),
|
&RevealAllLayoutCx(tcx).fn_abi_of_instance(inst, ty::List::empty()),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ impl<'tcx> FunctionCx<'_, '_, 'tcx> {
|
||||||
returns: Vec<AbiParam>,
|
returns: Vec<AbiParam>,
|
||||||
args: &[Value],
|
args: &[Value],
|
||||||
) -> &[Value] {
|
) -> &[Value] {
|
||||||
let sig = Signature { params, returns, call_conv: CallConv::triple_default(self.triple()) };
|
let sig = Signature { params, returns, call_conv: self.target_config.default_call_conv };
|
||||||
let func_id = self.module.declare_function(name, Linkage::Import, &sig).unwrap();
|
let func_id = self.module.declare_function(name, Linkage::Import, &sig).unwrap();
|
||||||
let func_ref = self.module.declare_func_in_func(func_id, &mut self.bcx.func);
|
let func_ref = self.module.declare_func_in_func(func_id, &mut self.bcx.func);
|
||||||
let call_inst = self.bcx.ins().call(func_ref, args);
|
let call_inst = self.bcx.ins().call(func_ref, args);
|
||||||
|
@ -420,7 +420,7 @@ pub(crate) fn codegen_terminator_call<'tcx>(
|
||||||
}
|
}
|
||||||
|
|
||||||
let (ptr, method) = crate::vtable::get_ptr_and_method_ref(fx, args[0].value, idx);
|
let (ptr, method) = crate::vtable::get_ptr_and_method_ref(fx, args[0].value, idx);
|
||||||
let sig = clif_sig_from_fn_abi(fx.tcx, fx.triple(), &fn_abi);
|
let sig = clif_sig_from_fn_abi(fx.tcx, fx.target_config.default_call_conv, &fn_abi);
|
||||||
let sig = fx.bcx.import_signature(sig);
|
let sig = fx.bcx.import_signature(sig);
|
||||||
|
|
||||||
(CallTarget::Indirect(sig, method), Some(ptr))
|
(CallTarget::Indirect(sig, method), Some(ptr))
|
||||||
|
@ -440,7 +440,7 @@ pub(crate) fn codegen_terminator_call<'tcx>(
|
||||||
}
|
}
|
||||||
|
|
||||||
let func = codegen_operand(fx, func).load_scalar(fx);
|
let func = codegen_operand(fx, func).load_scalar(fx);
|
||||||
let sig = clif_sig_from_fn_abi(fx.tcx, fx.triple(), &fn_abi);
|
let sig = clif_sig_from_fn_abi(fx.tcx, fx.target_config.default_call_conv, &fn_abi);
|
||||||
let sig = fx.bcx.import_signature(sig);
|
let sig = fx.bcx.import_signature(sig);
|
||||||
|
|
||||||
(CallTarget::Indirect(sig, func), None)
|
(CallTarget::Indirect(sig, func), None)
|
||||||
|
@ -531,7 +531,7 @@ pub(crate) fn codegen_drop<'tcx>(
|
||||||
let fn_abi =
|
let fn_abi =
|
||||||
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());
|
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());
|
||||||
|
|
||||||
let sig = clif_sig_from_fn_abi(fx.tcx, fx.triple(), &fn_abi);
|
let sig = clif_sig_from_fn_abi(fx.tcx, fx.target_config.default_call_conv, &fn_abi);
|
||||||
let sig = fx.bcx.import_signature(sig);
|
let sig = fx.bcx.import_signature(sig);
|
||||||
fx.bcx.ins().call_indirect(sig, drop_fn, &[ptr]);
|
fx.bcx.ins().call_indirect(sig, drop_fn, &[ptr]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -359,10 +359,6 @@ impl<'tcx> FunctionCx<'_, '_, 'tcx> {
|
||||||
crate::constant::codegen_const_value(self, const_loc, self.tcx.caller_location_ty())
|
crate::constant::codegen_const_value(self, const_loc, self.tcx.caller_location_ty())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn triple(&self) -> &target_lexicon::Triple {
|
|
||||||
self.module.isa().triple()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn anonymous_str(&mut self, msg: &str) -> Value {
|
pub(crate) fn anonymous_str(&mut self, msg: &str) -> Value {
|
||||||
let mut data_ctx = DataContext::new();
|
let mut data_ctx = DataContext::new();
|
||||||
data_ctx.define(msg.as_bytes().to_vec().into_boxed_slice());
|
data_ctx.define(msg.as_bytes().to_vec().into_boxed_slice());
|
||||||
|
|
|
@ -1067,7 +1067,7 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
|
||||||
kw.Try, (v f, v data, v _catch_fn) {
|
kw.Try, (v f, v data, v _catch_fn) {
|
||||||
// FIXME once unwinding is supported, change this to actually catch panics
|
// FIXME once unwinding is supported, change this to actually catch panics
|
||||||
let f_sig = fx.bcx.func.import_signature(Signature {
|
let f_sig = fx.bcx.func.import_signature(Signature {
|
||||||
call_conv: CallConv::triple_default(fx.triple()),
|
call_conv: fx.target_config.default_call_conv,
|
||||||
params: vec![AbiParam::new(fx.bcx.func.dfg.value_type(data))],
|
params: vec![AbiParam::new(fx.bcx.func.dfg.value_type(data))],
|
||||||
returns: vec![],
|
returns: vec![],
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,7 +9,7 @@ fn codegen_print(fx: &mut FunctionCx<'_, '_, '_>, msg: &str) {
|
||||||
"puts",
|
"puts",
|
||||||
Linkage::Import,
|
Linkage::Import,
|
||||||
&Signature {
|
&Signature {
|
||||||
call_conv: CallConv::triple_default(fx.triple()),
|
call_conv: fx.target_config.default_call_conv,
|
||||||
params: vec![AbiParam::new(fx.pointer_type)],
|
params: vec![AbiParam::new(fx.pointer_type)],
|
||||||
returns: vec![AbiParam::new(types::I32)],
|
returns: vec![AbiParam::new(types::I32)],
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue