diff options
| author | 2026-04-19 19:20:21 +0200 | |
|---|---|---|
| committer | 2026-04-19 19:20:21 +0200 | |
| commit | 3d61ace0d9e6e3a73fcbbb285890653f396ed17d (patch) | |
| tree | 2fa54e0c6fe816247b04a9904b36cfe91d40e912 | |
| parent | 15e135e425ec4dfcc3c33322505d7cb96dbeba70 (diff) | |
backend: don't emit extern inline funcs
| -rw-r--r-- | src/ir_inliner.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/ir_inliner.c b/src/ir_inliner.c index ad7c680..670df3c 100644 --- a/src/ir_inliner.c +++ b/src/ir_inliner.c @@ -2,7 +2,7 @@ #include "obj.h" typedef struct SavedFunc { - bool emitted, globl; + bool emitted, globl, inlin; uint ninstrtab, ncontab, ncalltab, nphitab; Instr *instrtab; IRCon *contab; @@ -47,6 +47,7 @@ maybeinlinee(Function *fn) } SavedFunc *sv = allocz(&savearena, sizeof *sv, 0); sv->globl = fn->globl; + sv->inlin = fn->inlin; sv->fnty = fn->fnty, sv->retty = fn->retty; if (fn->abiarg) sv->abiarg = alloccopy(&savearena, fn->abiarg, sizeof *sv->abiarg * fn->nabiarg, 0); @@ -373,7 +374,7 @@ emitxinlfns(bool all) internstr name; pmap_each(&savedfns, name, psv) { sv = *psv; - if (!sv->emitted && (fnisneeded(name) || sv->globl || all)) { + if (!sv->emitted && (fnisneeded(name) || (sv->globl && !sv->inlin) || all)) { sv->emitted = 1; Function fn = rematerialize(&arena, name, sv); fn.passarena = &passarena; |