From: Robert Pengelly Date: Thu, 16 Jul 2026 15:56:18 +0000 (+0100) Subject: Array emition fix X-Git-Url: https://git.candlhat.org/?a=commitdiff_plain;h=33d4ed72955b5441fe6d8728dbf59a1d4ec6040d;p=scc.git Array emition fix --- diff --git a/amd64.c b/amd64.c index 1463381..4a3b6f2 100644 --- a/amd64.c +++ b/amd64.c @@ -14100,9 +14100,11 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) { } else { - emit_load_deref_reg_now (reg, subscript_elem_size); + emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned); + emit_push_reg_now (reg); emit_load_assignment_rhs_expression_to_reg ("rdx"); + emit_pop_reg_now (reg); emit_assignment_binary_op (assign_op, 0); @@ -14172,9 +14174,8 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) { postfix_member_pointer_depth--; } - if (postfix_member_pointer_depth != 0 - || postfix_member_size <= (DATA_PTR & 0x1f)) { - emit_load_deref_reg_now (reg, subscript_elem_size); + if (postfix_member_pointer_depth != 0 || postfix_member_size <= (DATA_PTR & 0x1f)) { + emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned); } continue; diff --git a/i386.c b/i386.c index 723d02b..da676e9 100644 --- a/i386.c +++ b/i386.c @@ -13080,9 +13080,11 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) { } else { - emit_load_deref_reg_now (reg, subscript_elem_size); + emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned); + emit_push_reg_now (reg); emit_load_assignment_rhs_expression_to_reg ("edx"); + emit_pop_reg_now (reg); emit_assignment_binary_op (assign_op, 0); @@ -13152,9 +13154,8 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) { postfix_member_pointer_depth--; } - if (postfix_member_pointer_depth != 0 - || postfix_member_size <= (DATA_PTR & 0x1f)) { - emit_load_deref_reg_now (reg, subscript_elem_size); + if (postfix_member_pointer_depth != 0 || postfix_member_size <= (DATA_PTR & 0x1f)) { + emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned); } continue;