aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* io: diagnostics print source code underline correctly with hard tabs lemon2025-11-261-8/+26
|
* 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`
* use bstdout for -E lemon2025-11-262-7/+7
|
* amd64/emit: I64 consts and fp push/pop lemon2025-11-241-7/+22
|
* fix regression w/ store instr + memory immediate lemon2025-11-241-11/+13
|
* pp: fix token pasting (hopefully) lemon2025-11-241-27/+15
|
* bootstrapping 🎉 lemon2025-11-243-2/+24
|
* ir: simplify some occurrences of single-argument phis lemon2025-11-242-8/+17
|
* 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
* isel: loadstoreaddr don't fuseaddr as much lemon2025-11-241-3/+5
|
* ir.h: tweak mkintrin() definition to work with tinycc lemon2025-11-241-1/+1
|
* ir: implement cvtu64f. and other bug fixes lemon2025-11-235-12/+50
| | | | | compiler is bootstrapping?! however, stage1 and stage2+ executables aren't bit-identical.. small differences in the codegen.. need to look into that
* implement cvtfXu64 by lowering it in builder lemon2025-11-232-11/+48
| | | | this should probably be in a separate pass?
* c: check actual reachability for non-void func may not return value lemon2025-11-233-2/+28
|
* c: implement compound initializer in static context lemon2025-11-232-3/+18
|
* update todo.txt lemon2025-11-231-1/+0
|
* lex: TEMP hack: #define __x86_64__ or some system headers break subtly lemon2025-11-231-0/+1
|
* amd64/emit: fix (partially) float comparisonsd lemon2025-11-231-6/+10
|
* amd64: va_arg for small aggregates lemon2025-11-231-2/+8
|
* amd64/emit: this rbpoff approach is kinda broken.. lemon2025-11-231-1/+1
|
* c: fix runtime implicit-length array initializer lemon2025-11-231-2/+3
|
* c: __builtin_va_copy lemon2025-11-233-9/+39
|
* implement float varargs, and some other fixes lemon2025-11-237-53/+93
|
* cpp: fix bugs with recursive macro expansion (hopefully) lemon2025-11-233-29/+25
|
* main: fix memory leak lemon2025-11-231-0/+1
|
* cpp: fix ## bug lemon2025-11-232-2/+1
|
* amd64/isel: indirect call arg must be memaddr lemon2025-11-221-2/+7
|
* make sure indirect function call pointer does not end up in clobber reg lemon2025-11-222-2/+7
|
* 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
|
* ir: freeblk: clear preds lemon2025-11-221-0/+2
|
* tests: add Nora Sandler's 'Write a C Compiler' test suite lemon2025-11-222-0/+4
|
* ir/ir.c: fix assert in mkcallarg lemon2025-11-221-1/+1
|
* update todo.txt lemon2025-11-221-1/+6
|
* 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
|
* ir/dump: initialize out buffer statically lemon2025-11-221-3/+1
|
* sysv: nested scalar classification of struct shouldn't return KPTR, used to ↵ lemon2025-11-221-1/+1
| | | | indicate aggregate in the stack
* regalloc: merge overlapping fixed intervals better lemon2025-11-221-1/+12
|
* 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-222-2/+4
|
* irdump: print alloca # bytes lemon2025-11-211-0/+3
|
* ir: implement dominator tree computation lemon2025-11-213-0/+40
|
* ir: barebones IR passes checked contracts lemon2025-11-218-2/+28
|