aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* aarch64 floats lemon2025-12-312-51/+106
|
* backend: separate instrs for integer/float store lemon2025-12-3113-49/+79
|
* aarch64 isel syms with offset lemon2025-12-313-41/+59
|
* c: SYM expr should store decl ref as an index, not pointer lemon2025-12-303-52/+59
| | | | | | | | Because envdecls (now declsbuf) can be resized and invalidate those pointers. I missed this because the default initialization size of that buffer (and the fact that it would mostly only manifest with function-local expressions) made it not really come up in practice. Silly
* aarch64 mul/div lemon2025-12-302-0/+31
|
* more aarch64 work lemon2025-12-294-71/+212
|
* x86_64: optimize away some redundant zero extensions lemon2025-12-291-1/+9
|
* x86_64/isel: aimm should take vlong lemon2025-12-291-1/+1
|
* cpp: nicer handling of predefined macros lemon2025-12-291-40/+29
|
* backend: start implementing aarch64 lemon2025-12-2811-24/+1245
|
* x86_64/emit move things around lemon2025-12-261-12/+11
|
* ir/builder: fix bug optiminzg x+x as x-x -> 0 lemon2025-12-261-2/+3
|
* avoid GOT relocations in unnecessary instances lemon2025-12-256-16/+19
| | | | | Also change xcon to have a flagset for symbols (whether it's a function, locally defined; later: thread local, etc).
* cleantemps() fixes lemon2025-12-241-0/+6
|
* ir: arena-backed linked list for uselists lemon2025-12-244-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 lemon2025-12-241-12/+1
| | | | Vestigial, wasn't enough and we're sorting uses in mem2reg now.
* x86_64: fix isel for 7036e19 lemon2025-12-241-1/+1
|
* driver: use execvp lemon2025-12-231-7/+6
|
* x86_64: fix -fpic lemon2025-12-231-9/+7
|
* lower alloca as a separate pass before isel lemon2025-12-239-36/+65
|
* ir: use BIT macro for regset (1<< is wrong for u64) lemon2025-12-232-6/+8
|
* c: add _Generic lemon2025-12-222-1/+54
|
* update todo.txt lemon2025-12-221-3/+11
|
* c: recognize __attribute__ as decltok, improve diagnostic for expected ↵ lemon2025-12-221-1/+2
| | | | declaration
* preprocessor make some errors just warnings lemon2025-12-221-4/+6
|
* simpl: handle multiplication by negative po2 too lemon2025-12-221-5/+9
|
* arena: make sure to zero initialize some stuff lemon2025-12-221-0/+2
|
* c/c.c: cleanup exprparse a little lemon2025-12-221-13/+12
|
* c: Fix some dumb uses of initialized stuff lemon2025-12-222-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 lemon2025-12-213-19/+66
|
* ir: simpl: optimize some constant multiplications lemon2025-12-212-18/+61
| | | | Reuse irbinop() and irunop() for the constant results cases.
* c: keyword aliases lemon2025-12-214-67/+82
| | | | | Some linux headers use __signed__ for whatever reason.. this is a general fix for those alternate keyword
* c: allow `return voidfn()` extension lemon2025-12-211-4/+30
|
* lexer: more small optimizations lemon2025-12-211-14/+33
|
* rega: fix 3ff0bfcb lemon2025-12-211-4/+1
|
* lexer: note source of #include when error occurs in #included file lemon2025-12-202-1/+8
|
* isel: fix returning fixarg()'d temp lemon2025-12-201-4/+4
|
* c: small typechecking bugfixes lemon2025-12-201-3/+3
|
* driver: -fsyntax-only lemon2025-12-202-8/+12
|
* rega: fix infinite loop when compiling infinite loop lemon2025-12-202-1/+9
|
* some static assertions for packed type sizes lemon2025-12-203-6/+11
|
* backend: unify pass memory allocation strategies lemon2025-12-2010-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 lemon2025-12-201-7/+8
|
* backend: general simplification pass skeleton lemon2025-12-204-2/+155
|
* c: support CRLF newlines lemon2025-12-201-3/+11
|
* c: fix a silly C edge case with function redeclaration storage class lemon2025-12-201-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 lemon2025-12-201-2/+6
|
* lexer: fix remnant use of TKEOF for character lemon2025-12-201-9/+7
|
* quit after emitting too many errors lemon2025-12-201-0/+5
|
* optimize lexer a bit more lemon2025-12-204-68/+100
|