aboutsummaryrefslogtreecommitdiffhomepage
path: root/c
Commit message (Collapse)AuthorAgeFilesLines
* c: make tentative definitions work lemon2025-12-021-17/+34
|
* c: narrowing ints of different signedness... lemon2025-12-011-1/+1
|
* c: edgecase for redeclaration of implicit sized array lemon2025-12-011-1/+1
|
* c: fix some decl bugs and diagnostics lemon2025-11-301-18/+34
|
* lex: remove some hacks and optimize preprocessor lemon2025-11-281-39/+34
|
* c/type: make implicit const T* -> T* conversion warning, not error lemon2025-11-261-1/+8
|
* c: more static initializer fixes lemon2025-11-262-7/+9
|
* c: fix elided-braces initializers for nested unions lemon2025-11-261-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`
* pp: fix token pasting (hopefully) lemon2025-11-241-27/+15
|
* c: fix condexprvalue lemon2025-11-241-54/+42
| | | | | The original implementation was broken when presented with nested short-circuiting logical operators.
* c: remove unused function lemon2025-11-241-8/+0
|
* c: create dummy unreachable block after trap lemon2025-11-242-5/+2
| | | | | | 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 lemon2025-11-231-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 lemon2025-11-231-2/+6
|
* c: implement compound initializer in static context lemon2025-11-231-2/+18
|
* lex: TEMP hack: #define __x86_64__ or some system headers break subtly lemon2025-11-231-0/+1
|
* c: fix runtime implicit-length array initializer lemon2025-11-231-2/+3
|
* c: __builtin_va_copy lemon2025-11-231-8/+21
|
* implement float varargs, and some other fixes lemon2025-11-231-0/+3
|
* cpp: fix bugs with recursive macro expansion (hopefully) lemon2025-11-232-28/+25
|
* cpp: fix ## bug lemon2025-11-231-1/+1
|
* c: fix precedence of conditional expression rhs lemon2025-11-221-2/+2
|
* c: make the warning for '()' function declarations less strict lemon2025-11-221-1/+1
|
* c: fix static eval for address of some array refs lemon2025-11-222-2/+7
|
* c: add decl.sym; avoid calling mkhiddensym repeatedly lemon2025-11-222-22/+17
|
* c: move warning for extension keyword til after preprocessor lemon2025-11-223-4/+12
|
* lex: #include ".." should also look in working directory lemon2025-11-221-19/+17
|
* lex: move token data from tmp to glob arena when used in a macro body lemon2025-11-221-2/+7
| | | | | | maybe introduce per-macro arenas to tie their lifetimes to that. but most macros have global lifetime (i.e. aren't #undef'd) so there probably wouldn't be much benefit to that
* c: cast should narrow for narrow ints lemon2025-11-221-2/+3
|
* amd64/emit: fix REX-requiring 8-bit GPR encoding checking wrong reg lemon2025-11-221-0/+2
|
* remove umul lemon2025-11-211-2/+2
|
* change op names to match 285063eba44 lemon2025-11-211-20/+20
|
* rename IR classes to reflect bitsize lemon2025-11-211-16/+16
|
* c: fix conditional expr not converting operands to final type lemon2025-11-211-9/+13
|
* cpp: add predefined __antcc__ macro, for debugging lemon2025-11-201-0/+1
|
* isel: lower allocas a different way, such that stk address gets materialized ↵ lemon2025-11-201-1/+1
| | | | when necesary
* ir: for easier debugging, keep ctype in dats, print as literal when possible lemon2025-11-201-1/+1
|
* c: implement ++/-- for bitfields lemon2025-11-191-7/+21
|
* c: remove vestigial ins variable lemon2025-11-191-93/+88
|
* eval: fix enum edge case lemon2025-11-191-2/+2
|
* eval: fix b0c0f2d2d885 for ptr convertible lemon2025-11-191-1/+1
|
* debug output to stdout lemon2025-11-191-2/+2
|
* eval: only isaddrconst for ptrs lemon2025-11-161-1/+1
|
* factor type stuff into type.h lemon2025-11-162-0/+2
|
* c: due to __builtin_trap (in the future also things like noreturn function ↵ lemon2025-11-151-1/+5
| | | | calls), compileexpr() can terminate current block. add checks for that in callexpr. more are probably needed..
* c: disallow void arguments lemon2025-11-151-1/+3
|
* ir: 'trap' jump; c: __builtin_trap; lex: __has_builtin lemon2025-11-153-9/+50
|
* c: forward-declaring function with incomplete type shouldn't error lemon2025-11-151-10/+14
|
* preeliminary va_list support lemon2025-11-144-168/+346
|
* revert b55005e5c08. correct fix was in c.c lemon2025-11-121-1/+0
|