aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* lexer: convert pp-idents to keywords only after preprocessing lemon2025-12-202-71/+75
|
* ir/regalloc: struct alloc -> union alloc lemon2025-12-201-16/+15
|
* c: factor out to tldecl(), improve error recovery, lemon2025-12-201-73/+97
|
* emit: fix errata in flagslivep() lemon2025-12-201-1/+1
| | | | This little typo inhibited a small optimization. Oops
* test/run.sh: shellcheck lemon2025-12-201-11/+10
|
* x86-64: peephole optimization for 3-address shift -> lea lemon2025-12-202-1/+15
|
* c.h init zero bitset portability lemon2025-12-191-1/+1
|
* driver: -w, update help lemon2025-12-193-2/+9
|
* c: support 0-length arrays as syntax for flexible array members lemon2025-12-191-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 lemon2025-12-195-31/+30
|
* c: fix incr/decr codegen for floats lemon2025-12-191-2/+2
|
* isel: fix wrong instr cls being used in some cases lemon2025-12-191-2/+2
| | | | Specifically comparisons where operation cls != result cls
* c: hack to support __FUNCTION__ GNU extension lemon2025-12-191-4/+10
|
* cpp: GNU extension for named variadic arguments lemon2025-12-182-4/+11
|
* cpp: better error recovery for #define syntax error lemon2025-12-181-6/+7
|
* x86-64 abi: fix wrong class being used in float vararg lemon2025-12-181-1/+1
|
* ir: move cls2load to interface lemon2025-12-183-7/+7
| | | | | There's plenty of code duplication like this around I'm looking to reduce.
* x86-64/emit: remove some superfluous rex.W prefixes lemon2025-12-181-2/+2
|
* regalloc+emit: get rid of xsave/xrestore hack lemon2025-12-184-58/+64
| | | | | | | Was used for situation where we needed to spill more than 1 temporary and have to use a register that is already used. Instead of push/pop, we can just allocate and set aside specific stack slots for this purpose. Also, reworked linearscan() interval sets to separate FPR/GPR intervals.
* rega: implement stack<->stack swap for parallel moves lemon2025-12-181-29/+34
|
* x86_64: for vararg calls, write to EAX in isel lemon2025-12-183-22/+30
| | | | Also, in regalloc ensure fixed intervals are sorted
* c: fix uninitiliazed field in decltypes lemon2025-12-171-0/+1
|
* nicer defaults and facilities for cross-compilation lemon2025-12-177-32/+195
|
* emit: don't put the exit block always at the end of the function lemon2025-12-171-1/+6
|