| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | c: disallow mismatched nested extern decl, & more diagnostics | 2025-12-11 | 1 | -17/+24 | ||
| | | ||||||
| * | c: support for noreturn, and decl parsing cleanup | 2025-12-11 | 5 | -110/+119 | ||
| | | ||||||
| * | driver: add -Werror | 2025-12-11 | 3 | -1/+6 | ||
| | | ||||||
| * | fatal() make noreturn | 2025-12-11 | 1 | -2/+8 | ||
| | | ||||||
| * | make fatal() _Noreturn | 2025-12-11 | 2 | -2/+2 | ||
| | | ||||||
| * | lex/expr(): cleanup | 2025-12-11 | 1 | -29/+29 | ||
| | | ||||||
| * | c: expr2reloc() change sig to return addend | 2025-12-11 | 1 | -15/+12 | ||
| | | ||||||
| * | ir: bump MAXINSTR | 2025-12-10 | 1 | -1/+1 | ||
| | | ||||||
| * | embedfilesdir: don't need that much padding | 2025-12-10 | 1 | -1/+1 | ||
| | | ||||||
| * | lexer: properly add padding for cpppredefs | 2025-12-10 | 1 | -2/+2 | ||
| | | ||||||
| * | c: fix static relocation for &sym[offset] | 2025-12-10 | 1 | -7/+6 | ||
| | | ||||||
| * | parallel move; implement reg<->stack swp | 2025-12-10 | 2 | -5/+21 | ||
| | | ||||||
| * | update lua/.gitignore | 2025-12-10 | 1 | -0/+2 | ||
| | | ||||||
| * | regalloc: optimize a little edge case better | 2025-12-10 | 1 | -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 | 2025-12-10 | 3 | -2/+3 | ||
| | | ||||||
| * | misc fixes | 2025-12-10 | 3 | -5/+4 | ||
| | | ||||||
| * | elf: initialize str hashtable to a nicer size | 2025-12-09 | 1 | -0/+1 | ||
| | | ||||||
| * | mem: fix pmap_init and change hashmap load factors to 75% | 2025-12-09 | 2 | -5/+4 | ||
| | | ||||||
| * | lex: make some hashtables resizable | 2025-12-09 | 2 | -36/+73 | ||
| | | | | | Was hiting the fixed limits trying to preprocess sqlite3amalgamation | |||||
| * | rega: change assert for spilled callee. it's ok if nspill==1 | 2025-12-09 | 1 | -1/+1 | ||
| | | ||||||
| * | c: fix some static initialziers | 2025-12-08 | 1 | -1/+3 | ||
| | | ||||||
| * | eval: &*x address constants | 2025-12-08 | 1 | -0/+4 | ||
| | | ||||||
| * | c: fix more declaration parsing bugs | 2025-12-08 | 1 | -7/+17 | ||
| | | ||||||
| * | driver: update help | 2025-12-08 | 1 | -14/+32 | ||
| | | ||||||
| * | driver: use fexecve for -run | 2025-12-08 | 1 | -17/+18 | ||
| | | ||||||
| * | Add lua 5.4.0 test suite | 2025-12-07 | 121 | -2/+59828 | ||
| | | ||||||
| * | test/12-flt: add some weird float cmp edgecases | 2025-12-07 | 1 | -2/+9 | ||
| | | ||||||
| * | io: just use sprintf for printing doubles | 2025-12-07 | 1 | -28/+6 | ||
| | | ||||||
| * | amd64: fix wrong condition code being used for float gth | 2025-12-07 | 1 | -1/+1 | ||
| | | | | | ughh | |||||
| * | amd64: use XORPS for floating point negation | 2025-12-07 | 2 | -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 | 2025-12-06 | 3 | -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) | 2025-12-06 | 10 | -20/+107 | ||
| | | ||||||
| * | test 12-flt | 2025-12-05 | 3 | -4/+36 | ||
| | | ||||||
| * | amd64: fix pseudo-push/pop float reg | 2025-12-05 | 1 | -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 | 2025-12-05 | 1 | -0/+1 | ||
| | | ||||||
| * | amd64: handle unoredered float cmps | 2025-12-05 | 1 | -2/+30 | ||
| | | ||||||
| * | ir: float fold div/0 | 2025-12-05 | 1 | -4/+3 | ||
| | | ||||||
| * | io: print nans as NaN | 2025-12-05 | 1 | -0/+5 | ||
| | | ||||||
| * | eval: fix float cmps | 2025-12-05 | 1 | -0/+2 | ||
| | | ||||||
| * | update todo.txt | 2025-12-04 | 1 | -1/+2 | ||
| | | ||||||
| * | driver: more commandline option placeholders, .a file support | 2025-12-04 | 1 | -3/+9 | ||
| | | ||||||
| * | regalloc: kill dead defs of physical regs | 2025-12-04 | 1 | -8/+16 | ||
| | | ||||||
| * | isel: fix immediate of flipped sub | 2025-12-04 | 1 | -0/+1 | ||
| | | ||||||
| * | cpp: implement preprocessor expressions short circuiting behaviour | 2025-12-03 | 1 | -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 | 2025-12-03 | 1 | -2/+10 | ||
| | | ||||||
| * | preprocessor: add #ifndef...#endif include guard optimization | 2025-12-02 | 4 | -16/+38 | ||
| | | ||||||
| * | test/11-abi | 2025-12-02 | 2 | -6/+46 | ||
| | | ||||||
| * | c: make tentative definitions work | 2025-12-02 | 5 | -18/+57 | ||
| | | ||||||
| * | c: narrowing ints of different signedness... | 2025-12-01 | 1 | -1/+1 | ||
| | | ||||||
| * | c: edgecase for redeclaration of implicit sized array | 2025-12-01 | 1 | -1/+1 | ||
| | | ||||||