From 33d4ed72955b5441fe6d8728dbf59a1d4ec6040d Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Thu, 16 Jul 2026 16:56:18 +0100 Subject: [PATCH] Array emition fix --- amd64.c | 9 +++++---- i386.c | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) 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; -- 2.34.1