| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | 0.2.2 | 2026-03-21 | 1 | -2/+2 | |
| | | |||||
| * | oops. | 2026-03-21 | 1 | -1/+1 | |
| | | |||||
| * | OSunk -> unknown | 2026-03-21 | 1 | -2/+2 | |
| | | |||||
| * | Tweak configure & driver, fallback to cc | 2026-03-21 | 2 | -15/+29 | |
| | | |||||
| * | configure shellcheck, again | 2026-03-21 | 1 | -5/+5 | |
| | | |||||
| * | configure: sh shell conformance | 2026-03-21 | 1 | -1/+1 | |
| | | |||||
| * | fix again for openbsd | 2026-03-20 | 2 | -4/+4 | |
| | | |||||
| * | c: fix crash with dead code in condexpr | 2026-03-20 | 1 | -1/+2 | |
| | | |||||
| * | driver: only depend on ld for linking (todo) | 2026-03-20 | 5 | -47/+155 | |
| | | |||||
| * | c: better preserve source location in some cases | 2026-03-20 | 2 | -2/+8 | |
| | | |||||
| * | io: make -w suppress notes too | 2026-03-20 | 5 | -16/+17 | |
| | | |||||
| * | c: fix isboollike() for phis | 2026-03-19 | 1 | -2/+3 | |
| | | |||||
| * | 0.2.1 | 2026-03-19 | 1 | -2/+2 | |
| | | |||||
| * | c: fix qualifiers for array declarators | 2026-03-19 | 2 | -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 portability | 2026-03-19 | 3 | -13/+18 | |
| | | |||||
| * | test: add test for __func__ | 2026-03-19 | 1 | -0/+2 | |
| | | |||||
| * | ir: do not always try to put small literals in .text | 2026-03-19 | 2 | -4/+13 | |
| | | | | | | OpenBSD enforces read xor execute (XOM) even in x86-64. Not aware of any other platforms that do this. | ||||
| * | preeliminary support for openBSD | 2026-03-19 | 5 | -16/+46 | |
| | | |||||
| * | regalloc & emit: explicit comparisons over memcmp of small structures | 2026-03-19 | 2 | -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 predefs | 2026-03-19 | 1 | -1/+1 | |
| | | |||||
| * | c: remove unused initialization of decl.align | 2026-03-19 | 1 | -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 initializers | 2026-03-18 | 3 | -10/+31 | |
| | | |||||
| * | regalloc: use in-place mergesort for intervals | 2026-03-18 | 1 | -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 ) | 2026-03-18 | 1 | -1/+1 | |
| | | |||||
| * | 0.2.0 | 2026-03-18 | 1 | -3/+3 | |
| | | | | | Changed directory/source files structure warrants minor version update. | ||||
| * | Use #pragma once | 2026-03-18 | 8 | -17/+12 | |
| | | |||||
| * | c.h: accidentally removed a const | 2026-03-18 | 1 | -1/+1 | |
| | | |||||
| * | README missed filename | 2026-03-18 | 1 | -1/+1 | |
| | | |||||
| * | Refactor: use typedefs and CamelCase for aggregate types | 2026-03-18 | 42 | -2066/+2092 | |
| | | | | | Looks nicer | ||||
| * | Refactor: antcc.h move things around | 2026-03-17 | 1 | -10/+10 | |
| | | |||||
| * | Refactor: move some utils from antcc.h to their own headers | 2026-03-17 | 12 | -117/+136 | |
| | | |||||
| * | REFACTOR: finish renaming | 2026-03-17 | 35 | -142/+154 | |
| | | |||||
| * | REFACTOR: move sources to src/ | 2026-03-17 | 49 | -21/+10 | |
| | | |||||
| * | test/.gitignore | 2026-03-17 | 1 | -0/+1 | |
| | | |||||
| * | switch to whitelist based .gitignore | 2026-03-16 | 1 | -14/+29 | |
| | | |||||
| * | Update README | 2026-03-16 | 1 | -3/+1 | |
| | | |||||
| * | fix Makefile | 2026-03-16 | 1 | -3/+3 | |
| | | |||||
| * | regalloc: improve spilling and cleanup | 2026-03-16 | 4 | -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 cost | 2026-03-16 | 3 | -4/+39 | |
| | | |||||
| * | Makefile: add clean-tool | 2026-03-16 | 1 | -2/+5 | |
| | | |||||
| * | eval: fix errata with ELOGIOR, also rename lhs & rhs | 2026-03-15 | 1 | -78/+77 | |
| | | |||||
| * | c: default enum to unsigned int backing type | 2026-03-15 | 1 | -1/+3 | |
| | | | | | Matches GCC behavior. | ||||
| * | build system: use custom depgen instead of gcc | 2026-03-15 | 4 | -5/+170 | |
| | | |||||
| * | c-testsuite.sh | 2026-03-14 | 1 | -2/+4 | |
| | | |||||
| * | eval & fold: handle division overflow for MIN/-1 | 2026-03-14 | 2 | -2/+9 | |
| | | |||||
| * | cpp: better handling for #include file not found | 2026-03-14 | 1 | -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 -- | 2026-03-14 | 1 | -1/+1 | |
| | | |||||
| * | c: static eval refactoring | 2026-03-14 | 8 | -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 result | 2026-03-11 | 2 | -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 alignof | 2026-03-09 | 3 | -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. | ||||