| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | embed <limits.h> attempt #2HEADtrunk | 6 days | 2 | -9/+39 | |
| | | |||||
| * | C11 max_align_t | 6 days | 1 | -0/+3 | |
| | | |||||
| * | trest | 6 days | 1 | -0/+34 | |
| | | |||||
| * | revert 94aefdc760b1a7f77f (limits.h) | 6 days | 1 | -34/+0 | |
| | | | | | | POSIX applications rely on it defining POSIX-specific constants, so this can't work.. Hmm. | ||||
| * | 0.2.7 | 7 days | 1 | -2/+2 | |
| | | |||||
| * | typo | 11 days | 1 | -1/+1 | |
| | | |||||
| * | frontend: embed <limits.h>, fix asm names | 11 days | 3 | -14/+49 | |
| | | |||||
| * | frontend: __attribute alias | 12 days | 1 | -1/+1 | |
| | | |||||
| * | driver: tweak cmdline options handling | 12 days | 1 | -10/+16 | |
| | | |||||
| * | backend: don't emit extern inline funcs | 12 days | 1 | -2/+3 | |
| | | |||||
| * | driver: cleanup, accept -std=gnu...; reject -flto | 12 days | 1 | -15/+41 | |
| | | |||||
| * | c: match field access expr for 8ade2d5e36cf | 12 days | 1 | -1/+1 | |
| | | |||||
| * | c: remove unused function | 12 days | 1 | -12/+0 | |
| | | |||||
| * | c: error for statement expression outside function | 12 days | 1 | -4/+15 | |
| | | |||||
| * | c: eval2xintcon check intness | 12 days | 1 | -8/+9 | |
| | | |||||
| * | type: make struct field offset an int | 13 days | 1 | -1/+1 | |
| | | | | | | Yes, I've ran into code with structures with fields past the 16 bit range. | ||||
| * | driver: allow space after -l, -L | 13 days | 1 | -6/+16 | |
| | | |||||
| * | eval/tryreadconst: fix for local decls | 13 days | 1 | -0/+1 | |
| | | |||||
| * | driver: -z option | 13 days | 1 | -1/+15 | |
| | | |||||
| * | frontend: GNU statement expressions | 13 days | 2 | -33/+58 | |
| | | |||||
| * | c.c static eval2ext | 13 days | 1 | -1/+1 | |
| | | |||||
| * | frontend: allow folding some non constant expressions as a GNU extension | 13 days | 4 | -20/+75 | |
| | | | | | And also permit zero size objects | ||||
| * | c: fix some more static initializer edge cases | 13 days | 1 | -7/+13 | |
| | | |||||
| * | c: allow compile time eval of left-shifting negative value | 13 days | 1 | -1/+1 | |
| | | |||||
| * | c: fix complex assignment | 13 days | 1 | -3/+1 | |
| | | |||||
| * | c: for undeclared function calls, put implicit decl in toplevel | 13 days | 1 | -0/+5 | |
| | | | | | To avoid repeated warnings | ||||
| * | c: fix some compatible type declarations | 13 days | 3 | -18/+75 | |
| | | | | | | | | | | | | When K&R prototypes are present, definition of compatible types and composite types becomes recursive. For example `int f(int (*)())` should be compatible with `int f(int (*)(int))` etc | ||||
| * | cpp: increment conditionals nesting limit | 14 days | 1 | -1/+1 | |
| | | |||||
| * | support extern inline "definitions" | 14 days | 3 | -8/+12 | |
| | | |||||
| * | cpp: #include_next | 14 days | 2 | -29/+46 | |
| | | |||||
| * | c: fix using array as condition value | 2026-04-17 | 1 | -2/+2 | |
| | | | | | Decays to pointer | ||||
| * | x86-64 backend: fix some edgecases not emitting GOT relocations | 2026-04-15 | 1 | -5/+13 | |
| | | | | | | Logic for this was duplicated. Updated in c4d9087746 but only in one of the places, so broke on some PIC code. | ||||
| * | 0.2.6 | 2026-04-14 | 1 | -2/+2 | |
| | | |||||
| * | revert cbf1018b21e and actual fix | 2026-04-14 | 1 | -3/+10 | |
| | | | | | | Actually that check was OK. The issue was in isnullpo(), not detecting the folded `(void*)0` | ||||
| * | c: allow nested aggregate with flexible array member | 2026-04-14 | 1 | -2/+4 | |
| | | |||||
| * | c: fix type of `<unsigned> /= <float>` | 2026-04-14 | 1 | -2/+5 | |
| | | | | | | | Would wrongly generate `udiv` and fail later in the backend. Should add a IR sanity checks pass to catch e.g. unsigned operations being used with floating point classes. | ||||
| * | backend: allow zero-size stack allocations | 2026-04-14 | 1 | -1/+1 | |
| | | | | | Hm. | ||||
| * | c: make type of conditional expr with pointers match non void pointer | 2026-04-14 | 1 | -1/+1 | |
| | | | | | | | | | | | | | | | | | Here's what the C standard[1] says about the conditional operator: ``` if one operand is a null pointer constant, the result has the type of the other operand; otherwise, one operand is a pointer to void or a qualified version of void, in which case the result type is a pointer to an appropriately qualified version of void. `` But actually, some codebases rely on things like 'x ? &foo.memb : NULL' to have the type of `&foo.memb`, and not `void *`... [1]: ISO/IEC 9899:TC3 ยง6.5.15 | ||||
| * | cpp: concat 123 ## . | 2026-04-14 | 2 | -4/+19 | |
| | | |||||
| * | c: implement explicit cast complex -> scalar | 2026-04-13 | 1 | -3/+7 | |
| | | |||||
| * | c: match class, not typetag, for libgcc stubs | 2026-04-13 | 1 | -1/+1 | |
| | | |||||
| * | C99 complex types MVP | 2026-04-13 | 11 | -68/+436 | |
| | | | | | | | | | | Missing: static eval of complex values, Silly inefficient implementation of equality comparisons between them The whole thing is pretty inefficient without proper aggregate mem2reg anyway | ||||
| * | ir: remove unused field MCTarg.bpr | 2026-04-13 | 3 | -4/+1 | |
| | | |||||
| * | frontend: accept zero size arrays and empty aggregates | 2026-04-13 | 3 | -31/+39 | |
| | | | | | | | GNU extension. Previously was overloading arraylength==0 to mean unsized array, now they are distinct with the type flag TFUNKNOWN marking unsized arrays & aggregates. | ||||
| * | get rid of other warnings | 2026-04-12 | 2 | -5/+4 | |
| | | |||||
| * | ir_simpl: remove unused variable | 2026-04-12 | 1 | -3/+2 | |
| | | |||||
| * | aarch64: align leaf func stacks too | 2026-04-12 | 1 | -2/+2 | |
| | | |||||
| * | aarch64: fix stack frame layout, again | 2026-04-12 | 2 | -35/+37 | |
| | | | | | | Turns out hardware enforces SP 16-bit alignment in every SP relative load/store, but QEMU doesn't emulate this. | ||||
| * | frontend: always narrow assignment expression used as value | 2026-04-11 | 1 | -2/+2 | |
| | | |||||
| * | 0.2.5 | 2026-04-11 | 1 | -2/+2 | |
| | | |||||