| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | io: diagnostics print source code underline correctly with hard tabs | 2025-11-26 | 1 | -8/+26 | |
| | | |||||
| * | c: more static initializer fixes | 2025-11-26 | 2 | -7/+9 | |
| | | |||||
| * | 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` | ||||
| * | use bstdout for -E | 2025-11-26 | 2 | -7/+7 | |
| | | |||||
| * | amd64/emit: I64 consts and fp push/pop | 2025-11-24 | 1 | -7/+22 | |
| | | |||||
| * | fix regression w/ store instr + memory immediate | 2025-11-24 | 1 | -11/+13 | |
| | | |||||
| * | pp: fix token pasting (hopefully) | 2025-11-24 | 1 | -27/+15 | |
| | | |||||
| * | bootstrapping 🎉 | 2025-11-24 | 3 | -2/+24 | |
| | | |||||
| * | ir: simplify some occurrences of single-argument phis | 2025-11-24 | 2 | -8/+17 | |
| | | |||||
| * | 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 | 2 | -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 | 2025-11-24 | 1 | -3/+5 | |
| | | |||||
| * | ir.h: tweak mkintrin() definition to work with tinycc | 2025-11-24 | 1 | -1/+1 | |
| | | |||||
| * | ir: implement cvtu64f. and other bug fixes | 2025-11-23 | 5 | -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 | 2025-11-23 | 2 | -11/+48 | |
| | | | | | this should probably be in a separate pass? | ||||
| * | c: check actual reachability for non-void func may not return value | 2025-11-23 | 3 | -2/+28 | |
| | | |||||
| * | c: implement compound initializer in static context | 2025-11-23 | 2 | -3/+18 | |
| | | |||||
| * | update todo.txt | 2025-11-23 | 1 | -1/+0 | |
| | | |||||
| * | lex: TEMP hack: #define __x86_64__ or some system headers break subtly | 2025-11-23 | 1 | -0/+1 | |
| | | |||||
| * | amd64/emit: fix (partially) float comparisonsd | 2025-11-23 | 1 | -6/+10 | |
| | | |||||
| * | amd64: va_arg for small aggregates | 2025-11-23 | 1 | -2/+8 | |
| | | |||||
| * | amd64/emit: this rbpoff approach is kinda broken.. | 2025-11-23 | 1 | -1/+1 | |
| | | |||||
| * | c: fix runtime implicit-length array initializer | 2025-11-23 | 1 | -2/+3 | |
| | | |||||
| * | c: __builtin_va_copy | 2025-11-23 | 3 | -9/+39 | |
| | | |||||
| * | implement float varargs, and some other fixes | 2025-11-23 | 7 | -53/+93 | |
| | | |||||
| * | cpp: fix bugs with recursive macro expansion (hopefully) | 2025-11-23 | 3 | -29/+25 | |
| | | |||||
| * | main: fix memory leak | 2025-11-23 | 1 | -0/+1 | |
| | | |||||
| * | cpp: fix ## bug | 2025-11-23 | 2 | -2/+1 | |
| | | |||||
| * | amd64/isel: indirect call arg must be memaddr | 2025-11-22 | 1 | -2/+7 | |
| | | |||||
| * | make sure indirect function call pointer does not end up in clobber reg | 2025-11-22 | 2 | -2/+7 | |
| | | |||||
| * | 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 | |
| | | |||||
| * | ir: freeblk: clear preds | 2025-11-22 | 1 | -0/+2 | |
| | | |||||
| * | tests: add Nora Sandler's 'Write a C Compiler' test suite | 2025-11-22 | 2 | -0/+4 | |
| | | |||||
| * | ir/ir.c: fix assert in mkcallarg | 2025-11-22 | 1 | -1/+1 | |
| | | |||||
| * | update todo.txt | 2025-11-22 | 1 | -1/+6 | |
| | | |||||
| * | c: fix static eval for address of some array refs | 2025-11-22 | 2 | -2/+7 | |
| | | |||||
| * | c: add decl.sym; avoid calling mkhiddensym repeatedly | 2025-11-22 | 2 | -22/+17 | |
| | | |||||
| * | ir/dump: initialize out buffer statically | 2025-11-22 | 1 | -3/+1 | |
| | | |||||
| * | sysv: nested scalar classification of struct shouldn't return KPTR, used to ↵ | 2025-11-22 | 1 | -1/+1 | |
| | | | | | indicate aggregate in the stack | ||||
| * | regalloc: merge overlapping fixed intervals better | 2025-11-22 | 1 | -1/+12 | |
| | | |||||
| * | c: move warning for extension keyword til after preprocessor | 2025-11-22 | 3 | -4/+12 | |
| | | |||||
| * | lex: #include ".." should also look in working directory | 2025-11-22 | 1 | -19/+17 | |
| | | |||||
| * | lex: move token data from tmp to glob arena when used in a macro body | 2025-11-22 | 1 | -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 | 2025-11-22 | 1 | -2/+3 | |
| | | |||||
| * | amd64/emit: fix REX-requiring 8-bit GPR encoding checking wrong reg | 2025-11-22 | 2 | -2/+4 | |
| | | |||||
| * | irdump: print alloca # bytes | 2025-11-21 | 1 | -0/+3 | |
| | | |||||
| * | ir: implement dominator tree computation | 2025-11-21 | 3 | -0/+40 | |
| | | |||||
| * | ir: barebones IR passes checked contracts | 2025-11-21 | 8 | -2/+28 | |
| | | |||||