aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* c: disallow mismatched nested extern decl, & more diagnostics lemon2025-12-111-17/+24
|
* c: support for noreturn, and decl parsing cleanup lemon2025-12-115-110/+119
|
* driver: add -Werror lemon2025-12-113-1/+6
|
* fatal() make noreturn lemon2025-12-111-2/+8
|
* make fatal() _Noreturn lemon2025-12-112-2/+2
|
* lex/expr(): cleanup lemon2025-12-111-29/+29
|
* c: expr2reloc() change sig to return addend lemon2025-12-111-15/+12
|
* ir: bump MAXINSTR lemon2025-12-101-1/+1
|
* embedfilesdir: don't need that much padding lemon2025-12-101-1/+1
|
* lexer: properly add padding for cpppredefs lemon2025-12-101-2/+2
|
* c: fix static relocation for &sym[offset] lemon2025-12-101-7/+6
|
* parallel move; implement reg<->stack swp lemon2025-12-102-5/+21
|
* update lua/.gitignore lemon2025-12-101-0/+2
|
* regalloc: optimize a little edge case better lemon2025-12-101-4/+6
| | | | | | | | | | | | With two-address instructions one needs to make sure the dst doesn't get allocated to the same reg as the right-hand operand: %r = mul %x, %y ; %y cannot be %r Except, if the operands are the same %r = mul %x, %x ; if %x is dead after this instr, it's fine to allocate %r to the same reg
* c: fix compound assignment type conversions when types don't match lemon2025-12-103-2/+3
|
* misc fixes lemon2025-12-103-5/+4
|
* elf: initialize str hashtable to a nicer size lemon2025-12-091-0/+1
|
* mem: fix pmap_init and change hashmap load factors to 75% lemon2025-12-092-5/+4
|
* lex: make some hashtables resizable lemon2025-12-092-36/+73
| | | | Was hiting the fixed limits trying to preprocess sqlite3amalgamation
* rega: change assert for spilled callee. it's ok if nspill==1 lemon2025-12-091-1/+1
|
* c: fix some static initialziers lemon2025-12-081-1/+3
|
* eval: &*x address constants lemon2025-12-081-0/+4
|
* c: fix more declaration parsing bugs lemon2025-12-081-7/+17
|
* driver: update help lemon2025-12-081-14/+32
|
* driver: use fexecve for -run lemon2025-12-081-17/+18
|
* Add lua 5.4.0 test suite lemon2025-12-07121-2/+59828
|
* test/12-flt: add some weird float cmp edgecases lemon2025-12-071-2/+9
|
* io: just use sprintf for printing doubles lemon2025-12-071-28/+6
|
* amd64: fix wrong condition code being used for float gth lemon2025-12-071-1/+1
| | | | ughh
* amd64: use XORPS for floating point negation lemon2025-12-072-3/+7
| | | | | | | | | | Previously `neg x` was being turned into `sub 0, x`. But this gives the wrong result for zero/negative zero (-0.0 == -0.0 but 0.0 - 0.0 == 0.0), so it wasn't IEEE compliant or correct. Do what every other compiler does instead and flip the sign bit with an exclusive or. Should implement someway of deduplicating small data constants like the ones used here though.
* abi: fix aggregate passed by regs 2nd reg offset lemon2025-12-063-27/+35
| | | | | | | | | It was broken for example `struct { i32 a; f64 b; }` (would try to load/store b from byte offset 4, not 8). Introduce r2off, realize in x86-64 it's always 8; even `struct {i32 a; f32 b;}` gets passed in one (integer) register. But not so in (future) ABIs like RISC-V, I believe there `{i32, f32}` would get passed in 1 integer and 1 float register (r2off = 4).
* add command-line predefined macros (-D, -U) lemon2025-12-0610-20/+107
|
* test 12-flt lemon2025-12-053-4/+36
|
* amd64: fix pseudo-push/pop float reg lemon2025-12-051-2/+2
| | | | | | With add/sub flags can be trashed which can result in miscompilations, use lea. This shouldn't even exist, need to get rid of xsave/xrestore, but for now fix this kludge
* isel: fix flipped sub not being inplace lemon2025-12-051-0/+1
|
* amd64: handle unoredered float cmps lemon2025-12-051-2/+30
|
* ir: float fold div/0 lemon2025-12-051-4/+3
|
* io: print nans as NaN lemon2025-12-051-0/+5
|
* eval: fix float cmps lemon2025-12-051-0/+2
|
* update todo.txt lemon2025-12-041-1/+2
|
* driver: more commandline option placeholders, .a file support lemon2025-12-041-3/+9
|
* regalloc: kill dead defs of physical regs lemon2025-12-041-8/+16
|
* isel: fix immediate of flipped sub lemon2025-12-041-0/+1
|
* cpp: implement preprocessor expressions short circuiting behaviour lemon2025-12-031-17/+23
| | | | This only affects whether an error is given for something like `0 && 0/0` (it shouldn't)
* c: allow redeclaration with K&R and non K&R prototypes lemon2025-12-031-2/+10
|
* preprocessor: add #ifndef...#endif include guard optimization lemon2025-12-024-16/+38
|
* test/11-abi lemon2025-12-022-6/+46
|
* c: make tentative definitions work lemon2025-12-025-18/+57
|
* c: narrowing ints of different signedness... lemon2025-12-011-1/+1
|
* c: edgecase for redeclaration of implicit sized array lemon2025-12-011-1/+1
|