diff options
| author | 2026-03-17 13:22:00 +0100 | |
|---|---|---|
| committer | 2026-03-17 13:22:00 +0100 | |
| commit | a8d6f8bf30c07edb775e56889f568ca20240bedf (patch) | |
| tree | b5a452b2675b2400f15013617291fe6061180bbf /ir/stack.c | |
| parent | 24f14b7ad1af08d872971d72ce089a529911f657 (diff) | |
REFACTOR: move sources to src/
Diffstat (limited to 'ir/stack.c')
| -rw-r--r-- | ir/stack.c | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/ir/stack.c b/ir/stack.c deleted file mode 100644 index 40a7b1d..0000000 --- a/ir/stack.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "ir.h" - -void -lowerstack(struct function *fn) -{ - fn->stksiz = 0; - FREQUIRE(FNUSE); - - struct block *blk = fn->entry; - do { - for (int i = 0; i < blk->ins.n; ++i) { - int t = blk->ins.p[i]; - struct instr *ins = &instrtab[t]; - if (oisalloca(ins->op)) { - uint alignlog2 = ins->op - Oalloca1; - assert(ins->l.i > 0); - uint siz = ins->l.i << alignlog2; - fn->stksiz += siz; - fn->stksiz = alignup(fn->stksiz, 1 << alignlog2); - if (fn->stksiz > (1<<20)-1) error(NULL, "'%s' stack frame too big", fn->name); - *ins = mkinstr(Onop,0,); - replcuses(mkref(RTMP, t), mkref(RSTACK, fn->stksiz)); - } - } - } while ((blk = blk->lnext) != fn->entry); - - if (ccopt.dbg.s) { - bfmt(ccopt.dbgout, "<< After stack >>\n"); - irdump(fn); - } -} - -/* vim:set ts=3 sw=3 expandtab: */ |