From 1780bdacc6be8d7f1fc487882ee1b3b1d318dd9d Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 22 Nov 2025 14:08:55 +0100 Subject: c: fix static eval for address of some array refs --- c/c.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'c/c.c') diff --git a/c/c.c b/c/c.c index 1f466bb..534fba6 100644 --- a/c/c.c +++ b/c/c.c @@ -1255,7 +1255,9 @@ expr2reloc(union ref *psym, vlong *paddend, const struct expr *ex) { if (ex->t == EADDROF && globsym(psym, ex->sub)) { *paddend = 0; - } else if (ex->t == EADDROF && (ex->sub->t == EGETF && globsym(psym, ex->sub->sub))) { + } else if (ex->t == EADDROF && ex->sub->t == EGETF && globsym(psym, ex->sub->sub)) { + *paddend = ex->sub->fld.off; + } else if (ex->t == EGETF && ex->ty.t == TYARRAY && globsym(psym, ex->sub)) { *paddend = ex->sub->fld.off; } else if (globsym(psym, ex) && in_range(ex->ty.t, TYARRAY, TYFUNC)) { *paddend = 0; -- cgit v1.2.3