aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ir.h
Commit message (Collapse)AuthorAgeFilesLines
* mem2reg rewrite lemon2026-03-241-0/+1
| | | | | | | Do it in 2 passes: 1. gather variables, 2. step thru RPO transforming loads/stores to each variable. More elegant solution to f9e3a52eaa. More efficient since all variable usages are visited in CFG order, which matters due to block sealing.
* IR: emit inline function standalone bodies lazily lemon2026-03-231-1/+4
| | | | | | | If a function is stashed for inlining and inlined in all of its callsites or unused, it never ends up in the object file. If any symbol reference to it is emitted, then it must be de-inlined (rematerialized), and this is done near the end before emitting the actual object file.
* IR: mark free'd instructions as such lemon2026-03-231-1/+1
| | | | | That way they are not copied when inlining. Also rename ninstr -> ninstrtab. opnarg -> opnoper
* style: change uvlong -> u64int, vlong -> s64int lemon2026-03-221-6/+6
| | | | | Is much nicer. I don't know whether I want to do it for the other int types too. char and uchar are fine as bytes. u/short -> u/s16int, maybe.
* IR: add 3rd operand to Instr lemon2026-03-221-5/+10
| | | | | The motivation is for aarch64 msub/madd instrs, for isel to produce. But it should be useful for other things too.
* Use #pragma once lemon2026-03-181-0/+2
|
* Refactor: use typedefs and CamelCase for aggregate types lemon2026-03-181-128/+131
| | | | Looks nicer
* REFACTOR: finish renaming lemon2026-03-171-4/+4
|
* REFACTOR: move sources to src/ lemon2026-03-171-0/+353