aboutsummaryrefslogtreecommitdiffhomepage
path: root/c/c.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-02-25 17:57:39 +0100
committerlemon <lsof@mailbox.org>2026-02-25 17:57:39 +0100
commit6c3f1593e953393f4b9329a0c47c5af0a587c8c9 (patch)
tree58449aba9d86ecc9e6259c4f8a8c4b5c7f71dfdd /c/c.c
parent70fa08eb98a7304b3dbcba49417219d2a6fbd2b9 (diff)
c: allow casting of symbol address to intptr_t in static initializers
Diffstat (limited to 'c/c.c')
-rw-r--r--c/c.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/c/c.c b/c/c.c
index 019fb15..2c78937 100644
--- a/c/c.c
+++ b/c/c.c
@@ -1418,7 +1418,8 @@ expr2reloc(union ref *psym, const struct expr *ex)
{
if (ex->t == EADDROF && globsym(psym, ex->sub)) {
return 0;
- } else if (isptrcvt(ex->ty) && globsym(psym, ex)) {
+ } else if ((isptrcvt(ex->ty) || (isint(ex->ty) && typesize(ex->ty) == targ_primsizes[TYPTR]))
+ && globsym(psym, ex)) {
return 0;
} else if (ex->t == EADDROF && ex->sub->t == EGETF && globsym(psym, ex->sub->sub)) {
return ex->sub->fld.off;