| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | add c-testsuite | 2025-12-13 | 912 | -0/+9205 | |
| | | |||||
| * | c: handle more static eval edgecases for int -> ptr | 2025-12-13 | 3 | -5/+29 | |
| | | | | | | sqlite3 was falling back to `((void*)&((char*)0)[X])` for INT_TO_PTR, which this handles now. | ||||
| * | c: case/default labels only create new blocks when necessary | 2025-12-13 | 1 | -7/+11 | |
| | | |||||
| * | regalloc: fixbug with phi move of stack <- stack | 2025-12-13 | 2 | -6/+5 | |
| | | |||||
| * | Add -O optimization flag | 2025-12-13 | 4 | -2/+15 | |
| | | |||||
| * | fix position independent loads of function symbols. | 2025-12-13 | 9 | -26/+48 | |
| | | | | | | | | | 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 | |
| | | |||||
| * | x86-64/emit errata | 2025-12-12 | 1 | -7/+4 | |
| | | |||||
| * | x86_64: fix erroneous encoding of index reg in no-pie situations | 2025-12-12 | 1 | -11/+1 | |
| | | |||||
| * | s/amd64/x86_64/ | 2025-12-12 | 10 | -20/+20 | |
| | | |||||
| * | emit: turn ADD -imm into SUB imm | 2025-12-12 | 1 | -1/+5 | |
| | | |||||
| * | isel: fix bug where sub turned into add, but inplace didn't reflect | 2025-12-12 | 1 | -2/+2 | |
| | | |||||
| * | c: switch stmt diagnostics | 2025-12-12 | 1 | -8/+49 | |
| | | | | | For duplicate cases, case value overflow | ||||
| * | amd64/emit: change instr desc table a little | 2025-12-12 | 1 | -157/+158 | |
| | | |||||
| * | lex: use pmap for macro lookup | 2025-12-12 | 4 | -134/+100 | |
| | | | | | To reduce hashmap code repetition. Also add pmap_del for this purpose | ||||
| * | rename arraylength macro -> countof | 2025-12-11 | 15 | -106/+106 | |
| | | |||||
| * | default to C11 | 2025-12-11 | 1 | -1/+1 | |
| | | |||||
| * | c: accept C99 `[static N]` style array decls, changes to fn quals | 2025-12-11 | 5 | -61/+56 | |
| | | | | | | | 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 | 5 | -13/+53 | |
| | | |||||
| * | c: use a look-up table for isdecltok() | 2025-12-11 | 1 | -14/+18 | |
| | | |||||
| * | -trigraphs option | 2025-12-11 | 2 | -3/+5 | |
| | | |||||
| * | c: optimize environment decl lookup | 2025-12-11 | 1 | -6/+26 | |
| | | | | | | Use a hashmap for the toplevel, optimizing for the common use case where the file-scope has many more declarations than local scopes do | ||||
| * | 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 | |
| | | |||||