aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir/ir.h
Commit message (Collapse)AuthorAgeFilesLines
* abi: fix aggregate passed by regs 2nd reg offsetlemon2025-12-061-3/+6
| | | | | | | | | It was broken for example `struct { i32 a; f64 b; }` (would try to load/store b from byte offset 4, not 8). Introduce r2off, realize in x86-64 it's always 8; even `struct {i32 a; f32 b;}` gets passed in one (integer) register. But not so in (future) ABIs like RISC-V, I believe there `{i32, f32}` would get passed in 1 integer and 1 float register (r2off = 4).
* add command-line predefined macros (-D, -U)lemon2025-12-061-2/+0
|
* ir.h: tweak mkintrin() definition to work with tinycclemon2025-11-241-1/+1
|
* c: check actual reachability for non-void func may not return valuelemon2025-11-231-0/+1
|
* ir: implement dominator tree computationlemon2025-11-211-0/+2
|
* ir: barebones IR passes checked contractslemon2025-11-211-0/+8
|
* change op names to match 285063eba44lemon2025-11-211-2/+2
|
* rename IR classes to reflect bitsizelemon2025-11-211-7/+7
|
* isel: lower allocas a different way, such that stk address gets materialized ↵lemon2025-11-201-1/+1
| | | | when necesary
* ir: for easier debugging, keep ctype in dats, print as literal when possiblelemon2025-11-201-1/+2
|
* factor type stuff into type.hlemon2025-11-161-0/+14
|
* ir: 'trap' jump; c: __builtin_trap; lex: __has_builtinlemon2025-11-151-1/+2
|
* preeliminary va_list supportlemon2025-11-141-3/+6
|
* implement argument passing in stacklemon2025-11-121-0/+1
|
* fixup! amd64: get rid of xinc/xdec. handle those at emit stagelemon2025-11-091-0/+1
|
* amd64: fix aggregate abi stuff;; ir: fold, peephole optimizing constructorslemon2025-11-051-2/+10
|
* ir bugfixeslemon2025-10-231-0/+1
|
* Organize source files into directorieslemon2025-10-191-0/+280