| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | REFACTOR: move sources to src/ | 2026-03-17 | 1 | -652/+0 | |
| | | |||||
| * | c: static eval refactoring | 2026-03-14 | 1 | -8/+13 | |
| | | | | | | Explicit node for static symbol (addresses). Should not break with edge cases like the previous ad-hoc approach. And some other bugfixes | ||||
| * | x86_64/isel: fix edge case with branch on float add result | 2026-03-11 | 1 | -1/+1 | |
| | | | | | | | | | In `if (x + 1)` the implicit `!= 0` can be omitted for integers, because the x86 `add` instruction sets the zero flag accordingly. But for floats it doesn't, so applying that optimization there was wrong. Luckily it was caught by a nullptr dereference later in `emit::Xjcc()` for the (missing) unordered branch target, instead of miscompiling. | ||||
| * | 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 | |