From 53aed3fadf1f7ad66dea9a8a0b46bf42eda921be Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 31 Aug 2026 16:56:40 +0200 Subject: feat: add memory loads via ^reg --- src/sema/sema.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/sema') diff --git a/src/sema/sema.c b/src/sema/sema.c index ad2b12a..fb53bbf 100644 --- a/src/sema/sema.c +++ b/src/sema/sema.c @@ -227,6 +227,19 @@ static void check_expr(struct RefCheck* check, struct Expr* expr) check_expr(check, expr->binary.left); check_expr(check, expr->binary.right); break; + case EXPR_DEREF: + { + struct Expr* address = expr->deref.address; + if (address->kind == EXPR_PRIMARY + && (is_register(check, address->primary.token) || is_param(check, address->primary.token))) + break; + + if (address->kind == EXPR_PRIMARY) + ref_error(check, address->primary.token, "dereference address must be a register"); + else + check_expr(check, address); + break; + } case EXPR_MEMBER: { struct Expr* object = expr->member.object; -- cgit v1.3