aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* frontend: __attribute alias lemon13 days1-1/+1
|
* driver: tweak cmdline options handling lemon13 days1-10/+16
|
* backend: don't emit extern inline funcs lemon13 days1-2/+3
|
* driver: cleanup, accept -std=gnu...; reject -flto lemon13 days1-15/+41
|
* c: match field access expr for 8ade2d5e36cf lemon13 days1-1/+1
|
* c: remove unused function lemon13 days1-12/+0
|
* c: error for statement expression outside function lemon13 days1-4/+15
|
* c: eval2xintcon check intness lemon13 days1-8/+9
|
* type: make struct field offset an int lemon14 days1-1/+1
| | | | | Yes, I've ran into code with structures with fields past the 16 bit range.
* driver: allow space after -l, -L lemon14 days1-6/+16
|
* eval/tryreadconst: fix for local decls lemon14 days1-0/+1
|
* driver: -z option lemon14 days1-1/+15
|
* frontend: GNU statement expressions lemon14 days2-33/+58
|
* c.c static eval2ext lemon14 days1-1/+1
|
* frontend: allow folding some non constant expressions as a GNU extension lemon14 days5-20/+82
| | | | And also permit zero size objects
* c: fix some more static initializer edge cases lemon14 days2-7/+19
|
* c: allow compile time eval of left-shifting negative value lemon2026-04-181-1/+1
|
* c: fix complex assignment lemon2026-04-181-3/+1
|
* c: for undeclared function calls, put implicit decl in toplevel lemon2026-04-181-0/+5
| | | | To avoid repeated warnings
* c: fix some compatible type declarations lemon2026-04-184-18/+88
| | | | | | | | | | | 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 lemon2026-04-171-1/+1
|
* support extern inline "definitions" lemon2026-04-173-8/+12
|
* cpp: #include_next lemon2026-04-172-29/+46
|
* c: fix using array as condition value lemon2026-04-171-2/+2
| | | | Decays to pointer
* x86-64 backend: fix some edgecases not emitting GOT relocations lemon2026-04-151-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 lemon2026-04-141-2/+2
|
* revert cbf1018b21e and actual fix lemon2026-04-141-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 lemon2026-04-141-2/+4
|
* c: fix type of `<unsigned> /= <float>` lemon2026-04-141-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 lemon2026-04-141-1/+1
| | | | Hm.
* c: make type of conditional expr with pointers match non void pointer lemon2026-04-141-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 ## . lemon2026-04-143-6/+21
|
* update todo.txt lemon2026-04-141-1/+1
|
* c: implement explicit cast complex -> scalar lemon2026-04-131-3/+7
|
* c: match class, not typetag, for libgcc stubs lemon2026-04-131-1/+1
|
* Update README.mdlsof2026-04-131-1/+1
|
* C99 complex types MVP lemon2026-04-1314-74/+530
| | | | | | | | | 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 lemon2026-04-133-4/+1
|
* frontend: accept zero size arrays and empty aggregates lemon2026-04-134-31/+67
| | | | | | GNU extension. Previously was overloading arraylength==0 to mean unsized array, now they are distinct with the type flag TFUNKNOWN marking unsized arrays & aggregates.
* test/csmith.sh: remove hardcoded memory limit lemon2026-04-121-1/+1
| | | | This was a temporary workaround before d40371b615
* get rid of other warnings lemon2026-04-122-5/+4
|
* ir_simpl: remove unused variable lemon2026-04-121-3/+2
|
* aarch64: align leaf func stacks too lemon2026-04-121-2/+2
|
* aarch64: fix stack frame layout, again lemon2026-04-122-35/+37
| | | | | Turns out hardware enforces SP 16-bit alignment in every SP relative load/store, but QEMU doesn't emulate this.
* test/csmith.sh: add --no-packed-struct lemon2026-04-111-1/+1
| | | | We don't support #pragma pack yet
* frontend: always narrow assignment expression used as value lemon2026-04-111-2/+2
|
* 0.2.5 lemon2026-04-111-2/+2
|
* testing: script for csmith fuzz testing lemon2026-04-111-0/+90
|
* irdump: dont print instr numbers by default lemon2026-04-111-6/+21
|
* backend: fix memory leak from not calling deluses() after replcuses in some ↵ lemon2026-04-114-12/+11
| | | | places