aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* OSunk -> unknownlemon2026-03-211-2/+2
|
* Tweak configure & driver, fallback to cclemon2026-03-212-15/+29
|
* configure shellcheck, againlemon2026-03-211-5/+5
|
* configure: sh shell conformancelemon2026-03-211-1/+1
|
* fix again for openbsdlemon2026-03-202-4/+4
|
* c: fix crash with dead code in condexprlemon2026-03-201-1/+2
|
* driver: only depend on ld for linking (todo)lemon2026-03-205-47/+155
|
* c: better preserve source location in some caseslemon2026-03-202-2/+8
|
* io: make -w suppress notes toolemon2026-03-205-16/+17
|
* c: fix isboollike() for phislemon2026-03-191-2/+3
|
* 0.2.1lemon2026-03-191-2/+2
|
* c: fix qualifiers for array declaratorslemon2026-03-192-7/+16
| | | | | | `const int x[]` was being treated as `const int x[const]`, which is wrong, and matters when `x` is a function parameter that really decays to a pointer (`int const *const x`)
* Shell script changes for portabilitylemon2026-03-193-13/+18
|
* test: add test for __func__lemon2026-03-191-0/+2
|
* ir: do not always try to put small literals in .textlemon2026-03-192-4/+13
| | | | | OpenBSD enforces read xor execute (XOM) even in x86-64. Not aware of any other platforms that do this.
* preeliminary support for openBSDlemon2026-03-195-16/+46
|
* regalloc & emit: explicit comparisons over memcmp of small structureslemon2026-03-192-3/+19
| | | | | The one in x86-64_emit was not portable due to relying on zero initialization of inactive union fields/padding.
* cpp: fix nullptr deref for unknown target predefslemon2026-03-191-1/+1
|
* c: remove unused initialization of decl.alignlemon2026-03-191-3/+3
| | | | | The intent is for _Alignas declarations but those aren't implemented yet. And initializing that field in declarator() can mess with .sym.
* c: fix edge cases with zero sized bitfields and static initializerslemon2026-03-183-10/+31
|
* regalloc: use in-place mergesort for intervalslemon2026-03-181-60/+60
| | | | | | Instead of constructing an array and doing quicksort. i love .02% speedup microoptimizations
* cpp: do not warn for "#define X(){}" with no space after the )lemon2026-03-181-1/+1
|
* 0.2.0lemon2026-03-181-3/+3
| | | | Changed directory/source files structure warrants minor version update.
* Use #pragma oncelemon2026-03-188-17/+12
|
* 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
|