| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | fix some more cases of signed integer overflow | 2026-03-08 | 1 | -1/+1 | |
| | | |||||
| * | x86_64/isel: cleanup and fix edge cases | 2026-03-08 | 1 | -79/+57 | |
| | | |||||
| * | add bswap16/32/64 | 2026-03-02 | 1 | -0/+8 | |
| | | | | | | - frontend: __builtin_bswapX intrinsics - backend: ObswapX instructions | ||||
| * | ir: make address ref hash table resizable | 2026-02-28 | 1 | -2/+2 | |
| | | | | | Would hit the limit on very large functions (thanks csmith). | ||||
| * | backend: fix edgecases where imm32 immediate overflows | 2026-02-28 | 1 | -3/+9 | |
| | | |||||
| * | fix various warnings | 2026-02-24 | 1 | -1/+0 | |
| | | |||||
| * | x86_64/isel: fix regression with cmp instrs edge case | 2026-02-24 | 1 | -1/+1 | |
| | | |||||
| * | driver: recognize shared libraries; & backend: misc fixes for PIC isel edgecases | 2026-02-22 | 1 | -4/+6 | |
| | | |||||
| * | IR: just use an array for extended constants | 2026-02-19 | 1 | -4/+4 | |
| | | | | | | The extra work of using a hashtable to intern them is probably unnecessary. | ||||
| * | ir: regalloc & x86-64 isel bugfixes | 2026-02-18 | 1 | -4/+18 | |
| | | |||||
| * | x86_64/isel: fix edgecase of fixarg from seljmp derefing nullpointer | 2026-01-09 | 1 | -1/+1 | |
| | | |||||
| * | backend: separate instrs for integer/float store | 2025-12-31 | 1 | -2/+2 | |
| | | |||||
| * | x86_64: optimize away some redundant zero extensions | 2025-12-29 | 1 | -1/+9 | |
| | | |||||
| * | x86_64/isel: aimm should take vlong | 2025-12-29 | 1 | -1/+1 | |
| | | |||||
| * | backend: start implementing aarch64 | 2025-12-28 | 1 | -14/+2 | |
| | | |||||
| * | avoid GOT relocations in unnecessary instances | 2025-12-25 | 1 | -1/+1 | |
| | | | | | | Also change xcon to have a flagset for symbols (whether it's a function, locally defined; later: thread local, etc). | ||||
| * | x86_64: fix isel for 7036e19 | 2025-12-24 | 1 | -1/+1 | |
| | | |||||
| * | lower alloca as a separate pass before isel | 2025-12-23 | 1 | -27/+10 | |
| | | |||||
| * | isel: fix returning fixarg()'d temp | 2025-12-20 | 1 | -4/+4 | |
| | | |||||
| * | backend: unify pass memory allocation strategies | 2025-12-20 | 1 | -2/+1 | |
| | | | | | | | It was all over the place for temporary data structures used by individual passes. Now there is an arena specifically for that, which is nicer. | ||||
| * | x86-64: peephole optimization for 3-address shift -> lea | 2025-12-20 | 1 | -0/+1 | |
| | | |||||
| * | isel: fix wrong instr cls being used in some cases | 2025-12-19 | 1 | -2/+2 | |
| | | | | | Specifically comparisons where operation cls != result cls | ||||
| * | x86_64: for vararg calls, write to EAX in isel | 2025-12-18 | 1 | -4/+5 | |
| | | | | | Also, in regalloc ensure fixed intervals are sorted | ||||
| * | fix position independent loads of function symbols. | 2025-12-13 | 1 | -1/+1 | |
| | | | | | | | | | For `extern int x[1];`, can use PCREL32 for &x. But for `extern int x(int)`, must use GOTREL, when not being called directly (that's PLT). Therefore the type of an external symbol (actually just whether it denotes a function) matters when deciding what kind of relocation to emit, so keep that information. | ||||
| * | s/amd64/x86_64/ | 2025-12-12 | 1 | -0/+660 | |