| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | c: relax constexpr constraints, fix alignof | 2026-03-09 | 1 | -0/+13 | |
| | | | | | | | | | | | | | - 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. | ||||
| * | ir: fix inlining getting stuck on complex recursive call sequences | 2026-03-08 | 1 | -0/+13 | |
| | | | | | | 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 cases | 2026-03-08 | 1 | -0/+19 | |
| | | |||||
| * | c: do not try to eval conditional expression's not taken branch | 2026-03-05 | 1 | -0/+2 | |
| | | |||||
| * | add bswap16/32/64 | 2026-03-02 | 1 | -0/+6 | |
| | | | | | | - frontend: __builtin_bswapX intrinsics - backend: ObswapX instructions | ||||
| * | cpp: fix token spacing edge case when empty macros are involved | 2026-03-01 | 1 | -2/+3 | |
| | | |||||
| * | cpp: fix token spacing (#2) (hopefully) | 2026-03-01 | 1 | -0/+24 | |
| | | |||||
| * | cpp: allow comments between function-like macro name and arguments | 2026-02-26 | 1 | -1/+2 | |
| | | |||||
| * | add metalang99 testsuite (preprocessor stress testing) | 2026-02-23 | 119 | -2/+16971 | |
| | | |||||
| * | cpp: add __COUNTER__ macro | 2026-02-23 | 1 | -0/+10 | |
| | | |||||
| * | add sqlite submodule and test runner | 2026-02-22 | 1 | -0/+12 | |
| | | |||||
| * | c: fix using string literal as conditional expression conditional | 2026-02-22 | 1 | -0/+0 | |
| | | |||||
| * | test: fix c-testsuite.sh to build search index if not present | 2026-02-22 | 1 | -0/+1 | |
| | | |||||
| * | preprocessor: fix an edge case with erroneously recursive macro expansion | 2026-02-22 | 1 | -0/+12 | |
| | | |||||
| * | ir: basic inlining pass implementation | 2026-02-18 | 1 | -0/+22 | |
| | | |||||
| * | cpp: add __VA_OPT__ and comma ## __VA_ARGS__ pasting | 2026-02-06 | 1 | -2/+2 | |
| | | |||||
| * | cpp: fix pasting ident+keyword | 2026-01-09 | 1 | -0/+16 | |
| | | |||||
| * | cpp: fix multiline comment in skipped preprocessor directive | 2026-01-09 | 2 | -2/+3 | |
| | | |||||
| * | rega: fix infinite loop when compiling infinite loop | 2025-12-20 | 1 | -0/+5 | |
| | | |||||
| * | test/run.sh: shellcheck | 2025-12-20 | 1 | -11/+10 | |
| | | |||||
| * | cpp: GNU extension for named variadic arguments | 2025-12-18 | 1 | -0/+4 | |
| | | |||||
| * | test/c-testsuite.sh | 2025-12-15 | 3 | -6/+5 | |
| | | |||||
| * | kill fred | 2025-12-13 | 2 | -2/+1 | |
| | | |||||
| * | add c-testsuite | 2025-12-13 | 912 | -0/+9205 | |
| | | |||||
| * | c: handle more static eval edgecases for int -> ptr | 2025-12-13 | 1 | -0/+9 | |
| | | | | | | sqlite3 was falling back to `((void*)&((char*)0)[X])` for INT_TO_PTR, which this handles now. | ||||
| * | Add -O optimization flag | 2025-12-13 | 1 | -0/+1 | |
| | | |||||
| * | fix position independent loads of function symbols. | 2025-12-13 | 3 | -10/+30 | |
| | | | | | | | | | For `extern int x[1];`, can use PCREL32 for &x. But for `extern int x(int)`, must use GOTREL, when not being called directly (that's PLT). Therefore the type of an external symbol (actually just whether it denotes a function) matters when deciding what kind of relocation to emit, so keep that information. | ||||
| * | test/14 | 2025-12-13 | 1 | -0/+12 | |
| | | |||||
| * | c: accept C99 `[static N]` style array decls, changes to fn quals | 2025-12-11 | 1 | -0/+5 | |
| | | | | | | | Function parameters qualifiers don't matter outside of function definition. `int (const int)` should be compatible with `int(int)` etc. So no need to store them in the typedata. | ||||
| * | _Alignof and stuff | 2025-12-11 | 1 | -0/+22 | |
| | | |||||
| * | update lua/.gitignore | 2025-12-10 | 1 | -0/+2 | |
| | | |||||
| * | c: fix compound assignment type conversions when types don't match | 2025-12-10 | 2 | -0/+0 | |
| | | |||||
| * | Add lua 5.4.0 test suite | 2025-12-07 | 120 | -1/+59828 | |
| | | |||||
| * | test/12-flt: add some weird float cmp edgecases | 2025-12-07 | 1 | -2/+9 | |
| | | |||||
| * | add command-line predefined macros (-D, -U) | 2025-12-06 | 2 | -3/+6 | |
| | | |||||
| * | test 12-flt | 2025-12-05 | 3 | -4/+36 | |
| | | |||||
| * | test/11-abi | 2025-12-02 | 1 | -0/+37 | |
| | | |||||
| * | ir: implement cvtu64f. and other bug fixes | 2025-11-23 | 1 | -2/+2 | |
| | | | | | | compiler is bootstrapping?! however, stage1 and stage2+ executables aren't bit-identical.. small differences in the codegen.. need to look into that | ||||
| * | implement cvtfXu64 by lowering it in builder | 2025-11-23 | 1 | -2/+2 | |
| | | | | | this should probably be in a separate pass? | ||||
| * | c: __builtin_va_copy | 2025-11-23 | 1 | -0/+17 | |
| | | |||||
| * | implement float varargs, and some other fixes | 2025-11-23 | 1 | -0/+22 | |
| | | |||||
| * | tests: add Nora Sandler's 'Write a C Compiler' test suite | 2025-11-22 | 2 | -0/+4 | |
| | | |||||
| * | rename test/varargs | 2025-11-19 | 1 | -0/+0 | |
| | | |||||
| * | make clean test/build | 2025-11-16 | 1 | -1/+1 | |
| | | |||||
| * | basic automated testing | 2025-11-16 | 13 | -45/+162 | |
| | | |||||
| * | isel: don't incorrectly clamp constant lhs of shift operation | 2025-11-15 | 1 | -1/+1 | |
| | | |||||
| * | preeliminary va_list support | 2025-11-14 | 1 | -0/+17 | |
| | | |||||
| * | regalloc: misc | 2025-11-02 | 1 | -0/+11 | |
| | | |||||
| * | c: avoid generating relocations in .rodata (putting such objects in .data ↵ | 2025-10-25 | 1 | -0/+2 | |
| | | | | | instead for now) | ||||
| * | amd64: float conversion insntrs | 2025-10-18 | 1 | -0/+25 | |
| | | |||||