From 266af3fb7ae30502a1ef6658183642ee09152461 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Wed, 21 Sep 2022 21:07:02 -0400 Subject: [PATCH] nested array accesses appear to be working now. next up is records --- cerise/backend/ssa/codegen.c | 1 - cerise/src/ssa.c | 5 ++++- cerise/tests/Module.m | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cerise/backend/ssa/codegen.c b/cerise/backend/ssa/codegen.c index 150da9e..72aa317 100644 --- a/cerise/backend/ssa/codegen.c +++ b/cerise/backend/ssa/codegen.c @@ -74,7 +74,6 @@ void emit_type(Type* type) printf("[%d x ", type->size); emit_type(type->base); printf("]"); - break; case FORM_RECORD: diff --git a/cerise/src/ssa.c b/cerise/src/ssa.c index b9cbec4..e9521de 100644 --- a/cerise/src/ssa.c +++ b/cerise/src/ssa.c @@ -211,7 +211,10 @@ SsaNode* ssa_fieldref(Parser* p, SsaNode* record, char* fname) SsaNode* ssa_index(Parser* p, SsaNode* array, SsaNode* index) { -// array = load(p, array); + if (array->mode == MODE_MEMORY && array->code == '[') + { + array = load(p, array); + } index = load(p, index); SsaNode* node = ssa_node('[', MODE_MEMORY); node->type = array->type->base; diff --git a/cerise/tests/Module.m b/cerise/tests/Module.m index 322000b..b837bd4 100644 --- a/cerise/tests/Module.m +++ b/cerise/tests/Module.m @@ -6,6 +6,10 @@ var vReal : Real vIntArray : array 42 of Int vIntArray2 : array 5 of array 5 of Int +# vRec : record +# a : Int +# b : array 5 of Int +# end procedure TestReturnVoid() begin -- 2.49.0