emit_xtensa_va_arg: use inbounds_ptradd instead of inbounds_gep

This commit is contained in:
Folkert de Vries
2025-05-27 20:14:20 +02:00
parent c583fa6d84
commit b2e9c72e72

View File

@@ -334,8 +334,7 @@ fn emit_xtensa_va_arg<'ll, 'tcx>(
// (*va).va_ndx
let va_reg_offset = 4;
let va_ndx_offset = va_reg_offset + 4;
let offset_ptr =
bx.inbounds_gep(bx.type_i8(), va_list_addr, &[bx.cx.const_usize(va_ndx_offset)]);
let offset_ptr = bx.inbounds_ptradd(va_list_addr, bx.cx.const_usize(va_ndx_offset));
let offset = bx.load(bx.type_i32(), offset_ptr, bx.tcx().data_layout.i32_align.abi);
let offset = round_up_to_alignment(bx, offset, layout.align.abi);
@@ -356,11 +355,10 @@ fn emit_xtensa_va_arg<'ll, 'tcx>(
bx.store(offset_next, offset_ptr, bx.tcx().data_layout.pointer_align.abi);
// (*va).va_reg
let regsave_area_ptr =
bx.inbounds_gep(bx.type_i8(), va_list_addr, &[bx.cx.const_usize(va_reg_offset)]);
let regsave_area_ptr = bx.inbounds_ptradd(va_list_addr, bx.cx.const_usize(va_reg_offset));
let regsave_area =
bx.load(bx.type_ptr(), regsave_area_ptr, bx.tcx().data_layout.pointer_align.abi);
let regsave_value_ptr = bx.inbounds_gep(bx.type_i8(), regsave_area, &[offset]);
let regsave_value_ptr = bx.inbounds_ptradd(regsave_area, offset);
bx.br(end);
bx.switch_to_block(from_stack);
@@ -381,9 +379,9 @@ fn emit_xtensa_va_arg<'ll, 'tcx>(
bx.store(offset_next_corrected, offset_ptr, bx.tcx().data_layout.pointer_align.abi);
// let stack_value_ptr = unsafe { (*va).va_stk.byte_add(offset_corrected) };
let stack_area_ptr = bx.inbounds_gep(bx.type_i8(), va_list_addr, &[bx.cx.const_usize(0)]);
let stack_area_ptr = bx.inbounds_ptradd(va_list_addr, bx.cx.const_usize(0));
let stack_area = bx.load(bx.type_ptr(), stack_area_ptr, bx.tcx().data_layout.pointer_align.abi);
let stack_value_ptr = bx.inbounds_gep(bx.type_i8(), stack_area, &[offset_corrected]);
let stack_value_ptr = bx.inbounds_ptradd(stack_area, offset_corrected);
bx.br(end);
bx.switch_to_block(end);