use AllocId instead of Allocation in ConstValue::ByRef
This commit is contained in:
parent
1956fb84f3
commit
d1ea6997e8
@ -200,11 +200,15 @@ pub(crate) fn codegen_const_value<'tcx>(
|
|||||||
CValue::by_val(val, layout)
|
CValue::by_val(val, layout)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ConstValue::ByRef { alloc, offset } => CValue::by_ref(
|
ConstValue::ByRef { alloc_id, offset } => {
|
||||||
pointer_for_allocation(fx, alloc)
|
let alloc = fx.tcx.global_alloc(alloc_id).unwrap_memory();
|
||||||
.offset_i64(fx, i64::try_from(offset.bytes()).unwrap()),
|
// FIXME: avoid creating multiple allocations for the same AllocId?
|
||||||
layout,
|
CValue::by_ref(
|
||||||
),
|
pointer_for_allocation(fx, alloc)
|
||||||
|
.offset_i64(fx, i64::try_from(offset.bytes()).unwrap()),
|
||||||
|
layout,
|
||||||
|
)
|
||||||
|
}
|
||||||
ConstValue::Slice { data, start, end } => {
|
ConstValue::Slice { data, start, end } => {
|
||||||
let ptr = pointer_for_allocation(fx, data)
|
let ptr = pointer_for_allocation(fx, data)
|
||||||
.offset_i64(fx, i64::try_from(start).unwrap())
|
.offset_i64(fx, i64::try_from(start).unwrap())
|
||||||
|
@ -172,7 +172,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
|
|||||||
.expect("simd_shuffle idx not const");
|
.expect("simd_shuffle idx not const");
|
||||||
|
|
||||||
let idx_bytes = match idx_const {
|
let idx_bytes = match idx_const {
|
||||||
ConstValue::ByRef { alloc, offset } => {
|
ConstValue::ByRef { alloc_id, offset } => {
|
||||||
|
let alloc = fx.tcx.global_alloc(alloc_id).unwrap_memory();
|
||||||
let size = Size::from_bytes(
|
let size = Size::from_bytes(
|
||||||
4 * ret_lane_count, /* size_of([u32; ret_lane_count]) */
|
4 * ret_lane_count, /* size_of([u32; ret_lane_count]) */
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user