aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* c.h: accidentally removed a constlemon2026-03-181-1/+1
|
* README missed filenamelemon2026-03-181-1/+1
|
* Refactor: use typedefs and CamelCase for aggregate typeslemon2026-03-1842-2066/+2092
| | | | Looks nicer
* Refactor: antcc.h move things aroundlemon2026-03-171-10/+10
|
* Refactor: move some utils from antcc.h to their own headerslemon2026-03-1712-117/+136
|
* REFACTOR: finish renaminglemon2026-03-1735-142/+154
|
* REFACTOR: move sources to src/lemon2026-03-1749-21/+10
|
* test/.gitignorelemon2026-03-171-0/+1
|
* switch to whitelist based .gitignorelemon2026-03-161-14/+29
|
* Update READMElemon2026-03-161-3/+1
|
* fix Makefilelemon2026-03-161-3/+3
|
* regalloc: improve spilling and cleanuplemon2026-03-164-354/+401
| | | | | | | | Instead of spilling current interval when running out of registers, spill the longest-lived active interval with a lower spill cost than current. Spill costs are estimated based on multiplicative loop depth. Also cleanup regalloc.c somewhat. Update todo.txt too.
* ir: blk loop index for spill costlemon2026-03-163-4/+39
|
* Makefile: add clean-toollemon2026-03-161-2/+5
|
* eval: fix errata with ELOGIOR, also rename lhs & rhslemon2026-03-151-78/+77
|
* c: default enum to unsigned int backing typelemon2026-03-151-1/+3
| | | | Matches GCC behavior.
* build system: use custom depgen instead of gcclemon2026-03-154-5/+170
|
* c-testsuite.shlemon2026-03-141-2/+4
|
* eval & fold: handle division overflow for MIN/-1lemon2026-03-142-2/+9
|
* cpp: better handling for #include file not foundlemon2026-03-141-12/+20
| | | | | | Instead of attempting to keep going (since things will probably break due to missing declarations), just report any other #include errors and abort.
* make clean rm --lemon2026-03-141-1/+1
|
* c: static eval refactoringlemon2026-03-148-279/+426
| | | | | 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 resultlemon2026-03-112-1/+6
| | | | | | | | 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.
* c: relax constexpr constraints, fix alignoflemon2026-03-093-30/+62
| | | | | | | | | | | | - Allow short-circuiting of constant logical expressions where the unevaluated operand is not a constant expression (`1 || 0/0`) - Allow constant integer expressions that evaluate to zero to be used as null pointer constants (GNU extension). + According to the standard, `int *x = 5*0;` should be rejected. But compilers evaluate `5*0 -> 0` and allow it as if a null pointer literal.
* 0.1.10lemon2026-03-081-2/+2
|
* fix some more cases of signed integer overflowlemon2026-03-082-3/+3
|
* x86_64/emit: fix float store zero, unsafe range check for mul immediatelemon2026-03-081-1/+5
|
* ir/fold: fix float conversion overflowslemon2026-03-081-4/+14
|
* ir: fix inlining getting stuck on complex recursive call sequenceslemon2026-03-082-8/+30
| | | | | By maintaining a proper stack of inline expansions and refusing to expand callers already present in the stack.
* x86_64/isel: cleanup and fix edge caseslemon2026-03-082-79/+76
|
* ir: increase per-function stack size limitlemon2026-03-061-1/+1
|
* cpp: #include MACRO, free tkslemon2026-03-061-0/+1
|
* c: recognize another static initializer edge caselemon2026-03-051-3/+2
| | | | | | I think globsym & expr2reloc should be rewritten to be more robust to this kind of thing. Accumulate offsets whilst recursing into the child node that might contain a direct global symbol reference kind of thing.
* cpp: get rid of unnecessary ugly global variable for lexing header namelemon2026-03-051-31/+23
| | | | Make it a parameter.
* cpp: implement #include MACRO_NAMElemon2026-03-051-55/+98
|
* cpp: #include".." shouldn't look in working directorylemon2026-03-051-6/+8
|
* c: do not try to eval conditional expression's not taken branchlemon2026-03-052-2/+2
|
* ccopt.dbg.any -> uintlemon2026-03-041-1/+1
| | | | So it encompasses every bitfield.
* ir/dump: fix dumping data in .textlemon2026-03-041-4/+16
|
* regalloc: fix minor regression with storing of regs into spilled stack slotslemon2026-03-041-1/+1
|
* driver: fix -pthread, -Ulemon2026-03-022-2/+6
|
* add bswap16/32/64lemon2026-03-0210-37/+125
| | | | | - frontend: __builtin_bswapX intrinsics - backend: ObswapX instructions
* cpp: fix token spacing edge case when empty macros are involvedlemon2026-03-012-3/+8
|
* cpp: fix token spacing (#2) (hopefully)lemon2026-03-013-35/+104
|
* 0.1.9lemon2026-02-281-2/+2
|
* ir: make address ref hash table resizablelemon2026-02-287-27/+49
| | | | Would hit the limit on very large functions (thanks csmith).
* Update README.mdlsof2026-02-281-1/+1
|
* c: static intializer bugfix introduced in6c3f1593e9lemon2026-02-281-0/+1
|
* aarch64/isel: handle more instructionslemon2026-02-281-13/+18
|
* backend: fix edgecases where imm32 immediate overflowslemon2026-02-282-3/+10
|