From 128682624e3944250e297de77d9201aeb99a7a4a Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 19 Nov 2024 17:10:37 +0900 Subject: [PATCH] [qfcc] Process array sub-expressions --- tools/qfcc/source/expr_process.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/qfcc/source/expr_process.c b/tools/qfcc/source/expr_process.c index 53ed4cc05..b7f1b423f 100644 --- a/tools/qfcc/source/expr_process.c +++ b/tools/qfcc/source/expr_process.c @@ -156,6 +156,22 @@ proc_field (const expr_t *expr) return e; } +static const expr_t * +proc_array (const expr_t *expr) +{ + auto base = expr_process (expr->array.base); + auto index = expr_process (expr->array.index); + if (is_error (base)) { + return base; + } + if (is_error (index)) { + return index; + } + auto e = new_array_expr (base, index); + e->array.type = dereference_type (get_type (base)); + return e; +} + static const expr_t * proc_label (const expr_t *expr) { @@ -411,6 +427,7 @@ expr_process (const expr_t *expr) [ex_return] = proc_return, [ex_cond] = proc_cond, [ex_field] = proc_field, + [ex_array] = proc_array, [ex_decl] = proc_decl, [ex_loop] = proc_loop, [ex_select] = proc_select,