| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | c: handle more static eval edgecases for int -> ptr | 2025-12-13 | 1 | -1/+1 | |
| | | | | | | 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 | |
| | | |||||
| * | fix position independent loads of function symbols. | 2025-12-13 | 1 | -3/+3 | |
| | | | | | | | | | 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. | ||||
| * | c: switch stmt diagnostics | 2025-12-12 | 1 | -8/+49 | |
| | | | | | For duplicate cases, case value overflow | ||||
| * | rename arraylength macro -> countof | 2025-12-11 | 1 | -23/+23 | |
| | | |||||
| * | c: accept C99 `[static N]` style array decls, changes to fn quals | 2025-12-11 | 1 | -24/+45 | |
| | | | | | | | 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 | 1 | -11/+18 | |
| | | |||||
| * | c: use a look-up table for isdecltok() | 2025-12-11 | 1 | -14/+18 | |
| | | |||||
| * | 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 | 1 | -107/+113 | |
| | | |||||
| * | c: expr2reloc() change sig to return addend | 2025-12-11 | 1 | -15/+12 | |
| | | |||||
| * | c: fix static relocation for &sym[offset] | 2025-12-10 | 1 | -7/+6 | |
| | | |||||
| * | c: fix compound assignment type conversions when types don't match | 2025-12-10 | 1 | -2/+3 | |
| | | |||||
| * | c: fix some static initialziers | 2025-12-08 | 1 | -1/+3 | |
| | | |||||
| * | c: fix more declaration parsing bugs | 2025-12-08 | 1 | -7/+17 | |
| | | |||||
| * | c: allow redeclaration with K&R and non K&R prototypes | 2025-12-03 | 1 | -2/+10 | |
| | | |||||
| * | c: make tentative definitions work | 2025-12-02 | 1 | -17/+34 | |
| | | |||||
| * | 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 | |
| | | |||||
| * | c: fix some decl bugs and diagnostics | 2025-11-30 | 1 | -18/+34 | |
| | | |||||
| * | c/type: make implicit const T* -> T* conversion warning, not error | 2025-11-26 | 1 | -1/+8 | |
| | | |||||
| * | c: more static initializer fixes | 2025-11-26 | 1 | -7/+7 | |
| | | |||||
| * | c: fix elided-braces initializers for nested unions | 2025-11-26 | 1 | -5/+16 | |
| | | | | | | | | | For example in ```c struct {int a; union { int b,c; }; int d; } X = {1,2,3}; ``` Fields `a`,`b`,`d` must get initialized to 1,2,3. Not `c` | ||||
| * | c: fix condexprvalue | 2025-11-24 | 1 | -54/+42 | |
| | | | | | | The original implementation was broken when presented with nested short-circuiting logical operators. | ||||
| * | c: remove unused function | 2025-11-24 | 1 | -8/+0 | |
| | | |||||
| * | c: create dummy unreachable block after trap | 2025-11-24 | 1 | -5/+1 | |
| | | | | | | | Reverts 9abe27f6712. This simplies expr codegen, otherwise would manually have to check `fn->curblk != NULL` repeatedly. Later passes will easily delete those unreachable blocks | ||||
| * | ir: implement cvtu64f. and other bug fixes | 2025-11-23 | 1 | -1/+4 | |
| | | | | | | compiler is bootstrapping?! however, stage1 and stage2+ executables aren't bit-identical.. small differences in the codegen.. need to look into that | ||||
| * | c: check actual reachability for non-void func may not return value | 2025-11-23 | 1 | -2/+6 | |
| | | |||||
| * | c: implement compound initializer in static context | 2025-11-23 | 1 | -2/+18 | |
| | | |||||
| * | c: fix runtime implicit-length array initializer | 2025-11-23 | 1 | -2/+3 | |
| | | |||||
| * | implement float varargs, and some other fixes | 2025-11-23 | 1 | -0/+3 | |
| | | |||||
| * | c: fix precedence of conditional expression rhs | 2025-11-22 | 1 | -2/+2 | |
| | | |||||
| * | c: make the warning for '()' function declarations less strict | 2025-11-22 | 1 | -1/+1 | |
| | | |||||
| * | c: fix static eval for address of some array refs | 2025-11-22 | 1 | -1/+3 | |
| | | |||||
| * | c: add decl.sym; avoid calling mkhiddensym repeatedly | 2025-11-22 | 1 | -22/+16 | |
| | | |||||
| * | c: move warning for extension keyword til after preprocessor | 2025-11-22 | 1 | -2/+9 | |
| | | |||||
| * | c: cast should narrow for narrow ints | 2025-11-22 | 1 | -2/+3 | |
| | | |||||
| * | amd64/emit: fix REX-requiring 8-bit GPR encoding checking wrong reg | 2025-11-22 | 1 | -0/+2 | |
| | | |||||
| * | remove umul | 2025-11-21 | 1 | -2/+2 | |
| | | |||||
| * | change op names to match 285063eba44 | 2025-11-21 | 1 | -20/+20 | |
| | | |||||
| * | rename IR classes to reflect bitsize | 2025-11-21 | 1 | -16/+16 | |
| | | |||||
| * | c: fix conditional expr not converting operands to final type | 2025-11-21 | 1 | -9/+13 | |
| | | |||||
| * | isel: lower allocas a different way, such that stk address gets materialized ↵ | 2025-11-20 | 1 | -1/+1 | |
| | | | | | when necesary | ||||
| * | ir: for easier debugging, keep ctype in dats, print as literal when possible | 2025-11-20 | 1 | -1/+1 | |
| | | |||||
| * | c: implement ++/-- for bitfields | 2025-11-19 | 1 | -7/+21 | |
| | | |||||
| * | c: remove vestigial ins variable | 2025-11-19 | 1 | -93/+88 | |
| | | |||||
| * | debug output to stdout | 2025-11-19 | 1 | -2/+2 | |
| | | |||||
| * | c: due to __builtin_trap (in the future also things like noreturn function ↵ | 2025-11-15 | 1 | -1/+5 | |
| | | | | | calls), compileexpr() can terminate current block. add checks for that in callexpr. more are probably needed.. | ||||
| * | c: disallow void arguments | 2025-11-15 | 1 | -1/+3 | |
| | | |||||