Slightly reduce the amount of fx.module references
This commit is contained in:
parent
f505157f2c
commit
fdd0f8a3b5
@ -49,13 +49,15 @@ pub(crate) fn codegen_fn<'tcx>(
|
|||||||
(0..mir.basic_blocks().len()).map(|_| bcx.create_block()).collect();
|
(0..mir.basic_blocks().len()).map(|_| bcx.create_block()).collect();
|
||||||
|
|
||||||
// Make FunctionCx
|
// Make FunctionCx
|
||||||
let pointer_type = module.target_config().pointer_type();
|
let target_config = module.target_config();
|
||||||
|
let pointer_type = target_config.pointer_type();
|
||||||
let clif_comments = crate::pretty_clif::CommentWriter::new(tcx, instance);
|
let clif_comments = crate::pretty_clif::CommentWriter::new(tcx, instance);
|
||||||
|
|
||||||
let mut fx = FunctionCx {
|
let mut fx = FunctionCx {
|
||||||
cx,
|
cx,
|
||||||
module,
|
module,
|
||||||
tcx,
|
tcx,
|
||||||
|
target_config,
|
||||||
pointer_type,
|
pointer_type,
|
||||||
constants_cx: ConstantCx::new(),
|
constants_cx: ConstantCx::new(),
|
||||||
|
|
||||||
@ -676,7 +678,7 @@ fn codegen_stmt<'tcx>(
|
|||||||
// FIXME use emit_small_memset where possible
|
// FIXME use emit_small_memset where possible
|
||||||
let addr = lval.to_ptr().get_addr(fx);
|
let addr = lval.to_ptr().get_addr(fx);
|
||||||
let val = operand.load_scalar(fx);
|
let val = operand.load_scalar(fx);
|
||||||
fx.bcx.call_memset(fx.module.target_config(), addr, val, times);
|
fx.bcx.call_memset(fx.target_config, addr, val, times);
|
||||||
} else {
|
} else {
|
||||||
let loop_block = fx.bcx.create_block();
|
let loop_block = fx.bcx.create_block();
|
||||||
let loop_block2 = fx.bcx.create_block();
|
let loop_block2 = fx.bcx.create_block();
|
||||||
@ -797,7 +799,7 @@ fn codegen_stmt<'tcx>(
|
|||||||
let elem_size: u64 = pointee.size.bytes();
|
let elem_size: u64 = pointee.size.bytes();
|
||||||
let bytes =
|
let bytes =
|
||||||
if elem_size != 1 { fx.bcx.ins().imul_imm(count, elem_size as i64) } else { count };
|
if elem_size != 1 { fx.bcx.ins().imul_imm(count, elem_size as i64) } else { count };
|
||||||
fx.bcx.call_memcpy(fx.module.target_config(), dst, src, bytes);
|
fx.bcx.call_memcpy(fx.target_config, dst, src, bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use cranelift_codegen::isa::TargetFrontendConfig;
|
||||||
use rustc_index::vec::IndexVec;
|
use rustc_index::vec::IndexVec;
|
||||||
use rustc_middle::ty::layout::{
|
use rustc_middle::ty::layout::{
|
||||||
FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOfHelpers,
|
FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOfHelpers,
|
||||||
@ -235,6 +236,7 @@ pub(crate) struct FunctionCx<'m, 'clif, 'tcx: 'm> {
|
|||||||
pub(crate) cx: &'clif mut crate::CodegenCx<'tcx>,
|
pub(crate) cx: &'clif mut crate::CodegenCx<'tcx>,
|
||||||
pub(crate) module: &'m mut dyn Module,
|
pub(crate) module: &'m mut dyn Module,
|
||||||
pub(crate) tcx: TyCtxt<'tcx>,
|
pub(crate) tcx: TyCtxt<'tcx>,
|
||||||
|
pub(crate) target_config: TargetFrontendConfig, // Cached from module
|
||||||
pub(crate) pointer_type: Type, // Cached from module
|
pub(crate) pointer_type: Type, // Cached from module
|
||||||
pub(crate) constants_cx: ConstantCx,
|
pub(crate) constants_cx: ConstantCx,
|
||||||
|
|
||||||
|
@ -503,10 +503,10 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
|
|||||||
|
|
||||||
if intrinsic == sym::copy_nonoverlapping {
|
if intrinsic == sym::copy_nonoverlapping {
|
||||||
// FIXME emit_small_memcpy
|
// FIXME emit_small_memcpy
|
||||||
fx.bcx.call_memcpy(fx.module.target_config(), dst, src, byte_amount);
|
fx.bcx.call_memcpy(fx.target_config, dst, src, byte_amount);
|
||||||
} else {
|
} else {
|
||||||
// FIXME emit_small_memmove
|
// FIXME emit_small_memmove
|
||||||
fx.bcx.call_memmove(fx.module.target_config(), dst, src, byte_amount);
|
fx.bcx.call_memmove(fx.target_config, dst, src, byte_amount);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// NOTE: the volatile variants have src and dst swapped
|
// NOTE: the volatile variants have src and dst swapped
|
||||||
@ -522,10 +522,10 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
|
|||||||
// FIXME make the copy actually volatile when using emit_small_mem{cpy,move}
|
// FIXME make the copy actually volatile when using emit_small_mem{cpy,move}
|
||||||
if intrinsic == sym::volatile_copy_nonoverlapping_memory {
|
if intrinsic == sym::volatile_copy_nonoverlapping_memory {
|
||||||
// FIXME emit_small_memcpy
|
// FIXME emit_small_memcpy
|
||||||
fx.bcx.call_memcpy(fx.module.target_config(), dst, src, byte_amount);
|
fx.bcx.call_memcpy(fx.target_config, dst, src, byte_amount);
|
||||||
} else {
|
} else {
|
||||||
// FIXME emit_small_memmove
|
// FIXME emit_small_memmove
|
||||||
fx.bcx.call_memmove(fx.module.target_config(), dst, src, byte_amount);
|
fx.bcx.call_memmove(fx.target_config, dst, src, byte_amount);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
size_of_val, <T> (c ptr) {
|
size_of_val, <T> (c ptr) {
|
||||||
@ -673,7 +673,7 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
|
|||||||
let dst_ptr = dst.load_scalar(fx);
|
let dst_ptr = dst.load_scalar(fx);
|
||||||
// FIXME make the memset actually volatile when switching to emit_small_memset
|
// FIXME make the memset actually volatile when switching to emit_small_memset
|
||||||
// FIXME use emit_small_memset
|
// FIXME use emit_small_memset
|
||||||
fx.bcx.call_memset(fx.module.target_config(), dst_ptr, val, count);
|
fx.bcx.call_memset(fx.target_config, dst_ptr, val, count);
|
||||||
};
|
};
|
||||||
ctlz | ctlz_nonzero, <T> (v arg) {
|
ctlz | ctlz_nonzero, <T> (v arg) {
|
||||||
// FIXME trap on `ctlz_nonzero` with zero arg.
|
// FIXME trap on `ctlz_nonzero` with zero arg.
|
||||||
|
@ -601,7 +601,7 @@ impl<'tcx> CPlace<'tcx> {
|
|||||||
let src_align = src_layout.align.abi.bytes() as u8;
|
let src_align = src_layout.align.abi.bytes() as u8;
|
||||||
let dst_align = dst_layout.align.abi.bytes() as u8;
|
let dst_align = dst_layout.align.abi.bytes() as u8;
|
||||||
fx.bcx.emit_small_memory_copy(
|
fx.bcx.emit_small_memory_copy(
|
||||||
fx.module.target_config(),
|
fx.target_config,
|
||||||
to_addr,
|
to_addr,
|
||||||
from_addr,
|
from_addr,
|
||||||
size,
|
size,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user