| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | avoid GOT relocations in unnecessary instances | 2025-12-25 | 6 | -16/+19 | |
| | | | | | | Also change xcon to have a flagset for symbols (whether it's a function, locally defined; later: thread local, etc). | ||||
| * | cleantemps() fixes | 2025-12-24 | 1 | -0/+6 | |
| | | |||||
| * | ir: arena-backed linked list for uselists | 2025-12-24 | 4 | -117/+96 | |
| | | | | | | Is much simpler than the growable buffers, seems to be just as efficient if not a little faster when benchmarked. | ||||
| * | abi0: get rid of manual instruse reordering | 2025-12-24 | 1 | -12/+1 | |
| | | | | | Vestigial, wasn't enough and we're sorting uses in mem2reg now. | ||||
| * | x86_64: fix isel for 7036e19 | 2025-12-24 | 1 | -1/+1 | |
| | | |||||
| * | driver: use execvp | 2025-12-23 | 1 | -7/+6 | |
| | | |||||
| * | x86_64: fix -fpic | 2025-12-23 | 1 | -9/+7 | |
| | | |||||
| * | lower alloca as a separate pass before isel | 2025-12-23 | 9 | -36/+65 | |
| | | |||||
| * | ir: use BIT macro for regset (1<< is wrong for u64) | 2025-12-23 | 2 | -6/+8 | |
| | | |||||
| * | c: add _Generic | 2025-12-22 | 2 | -1/+54 | |
| | | |||||
| * | update todo.txt | 2025-12-22 | 1 | -3/+11 | |
| | | |||||
| * | c: recognize __attribute__ as decltok, improve diagnostic for expected ↵ | 2025-12-22 | 1 | -1/+2 | |
| | | | | | declaration | ||||
| * | preprocessor make some errors just warnings | 2025-12-22 | 1 | -4/+6 | |
| | | |||||
| * | simpl: handle multiplication by negative po2 too | 2025-12-22 | 1 | -5/+9 | |
| | | |||||
| * | arena: make sure to zero initialize some stuff | 2025-12-22 | 1 | -0/+2 | |
| | | |||||
| * | c/c.c: cleanup exprparse a little | 2025-12-22 | 1 | -13/+12 | |
| | | |||||
| * | c: Fix some dumb uses of initialized stuff | 2025-12-22 | 2 | -10/+12 | |
| | | | | | | | Can't figure out what's wrong with the change to struct expr from 9721d6ba40 but it makes valgrind complain and causes miscompilation of the compiler itself.. | ||||
| * | simpl: optimize unsigned & signed division by power of 2 | 2025-12-21 | 3 | -19/+66 | |
| | | |||||
| * | ir: simpl: optimize some constant multiplications | 2025-12-21 | 2 | -18/+61 | |
| | | | | | Reuse irbinop() and irunop() for the constant results cases. | ||||
| * | c: keyword aliases | 2025-12-21 | 4 | -67/+82 | |
| | | | | | | Some linux headers use __signed__ for whatever reason.. this is a general fix for those alternate keyword | ||||
| * | c: allow `return voidfn()` extension | 2025-12-21 | 1 | -4/+30 | |
| | | |||||
| * | lexer: more small optimizations | 2025-12-21 | 1 | -14/+33 | |
| | | |||||
| * | rega: fix 3ff0bfcb | 2025-12-21 | 1 | -4/+1 | |
| | | |||||
| * | lexer: note source of #include when error occurs in #included file | 2025-12-20 | 2 | -1/+8 | |
| | | |||||
| * | isel: fix returning fixarg()'d temp | 2025-12-20 | 1 | -4/+4 | |
| | | |||||
| * | c: small typechecking bugfixes | 2025-12-20 | 1 | -3/+3 | |
| | | |||||
| * | driver: -fsyntax-only | 2025-12-20 | 2 | -8/+12 | |
| | | |||||
| * | rega: fix infinite loop when compiling infinite loop | 2025-12-20 | 2 | -1/+9 | |
| | | |||||
| * | some static assertions for packed type sizes | 2025-12-20 | 3 | -6/+11 | |
| | | |||||
| * | backend: unify pass memory allocation strategies | 2025-12-20 | 10 | -39/+24 | |
| | | | | | | | 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. | ||||
| * | bootstrap.sh options | 2025-12-20 | 1 | -7/+8 | |
| | | |||||
| * | backend: general simplification pass skeleton | 2025-12-20 | 4 | -2/+155 | |
| | | |||||
| * | c: support CRLF newlines | 2025-12-20 | 1 | -3/+11 | |
| | | |||||
| * | c: fix a silly C edge case with function redeclaration storage class | 2025-12-20 | 1 | -14/+21 | |
| | | | | | | | C (or at least clang and gcc) allows declaring `static int f(...);` and defining it later as `int f(...) {...}`, omitting the 'static' in the latter definition. | ||||
| * | copyopt: optimize same-arg phis with multiple preds | 2025-12-20 | 1 | -2/+6 | |
| | | |||||
| * | lexer: fix remnant use of TKEOF for character | 2025-12-20 | 1 | -9/+7 | |
| | | |||||
| * | quit after emitting too many errors | 2025-12-20 | 1 | -0/+5 | |
| | | |||||
| * | optimize lexer a bit more | 2025-12-20 | 4 | -68/+100 | |
| | | |||||
| * | lexer: convert pp-idents to keywords only after preprocessing | 2025-12-20 | 2 | -71/+75 | |
| | | |||||
| * | ir/regalloc: struct alloc -> union alloc | 2025-12-20 | 1 | -16/+15 | |
| | | |||||
| * | c: factor out to tldecl(), improve error recovery, | 2025-12-20 | 1 | -73/+97 | |
| | | |||||
| * | emit: fix errata in flagslivep() | 2025-12-20 | 1 | -1/+1 | |
| | | | | | This little typo inhibited a small optimization. Oops | ||||
| * | test/run.sh: shellcheck | 2025-12-20 | 1 | -11/+10 | |
| | | |||||
| * | x86-64: peephole optimization for 3-address shift -> lea | 2025-12-20 | 2 | -1/+15 | |
| | | |||||
| * | c.h init zero bitset portability | 2025-12-19 | 1 | -1/+1 | |
| | | |||||
| * | driver: -w, update help | 2025-12-19 | 3 | -2/+9 | |
| | | |||||
| * | c: support 0-length arrays as syntax for flexible array members | 2025-12-19 | 1 | -19/+29 | |
| | | | | | | Keeping the expr around in the decllist paves the way for VLA support later on | ||||
| * | ir: move some filluses() to ir.c, rename optmem.c -> mem2reg.c | 2025-12-19 | 5 | -31/+30 | |
| | | |||||
| * | c: fix incr/decr codegen for floats | 2025-12-19 | 1 | -2/+2 | |
| | | |||||
| * | isel: fix wrong instr cls being used in some cases | 2025-12-19 | 1 | -2/+2 | |
| | | | | | Specifically comparisons where operation cls != result cls | ||||