| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | c: default enum to unsigned int backing type | 2026-03-15 | 1 | -1/+3 | |
| | | | | | Matches GCC behavior. | ||||
| * | eval & fold: handle division overflow for MIN/-1 | 2026-03-14 | 1 | -0/+3 | |
| | | |||||
| * | cpp: better handling for #include file not found | 2026-03-14 | 1 | -12/+20 | |
| | | | | | | | Instead of attempting to keep going (since things will probably break due to missing declarations), just report any other #include errors and abort. | ||||
| * | c: static eval refactoring | 2026-03-14 | 3 | -262/+384 | |
| | | | | | | Explicit node for static symbol (addresses). Should not break with edge cases like the previous ad-hoc approach. And some other bugfixes | ||||
| * | c: relax constexpr constraints, fix alignof | 2026-03-09 | 2 | -30/+49 | |
| | | | | | | | | | | | | | - Allow short-circuiting of constant logical expressions where the unevaluated operand is not a constant expression (`1 || 0/0`) - Allow constant integer expressions that evaluate to zero to be used as null pointer constants (GNU extension). + According to the standard, `int *x = 5*0;` should be rejected. But compilers evaluate `5*0 -> 0` and allow it as if a null pointer literal. | ||||
| * | cpp: #include MACRO, free tks | 2026-03-06 | 1 | -0/+1 | |
| | | |||||
| * | c: recognize another static initializer edge case | 2026-03-05 | 1 | -3/+2 | |
| | | | | | | | I think globsym & expr2reloc should be rewritten to be more robust to this kind of thing. Accumulate offsets whilst recursing into the child node that might contain a direct global symbol reference kind of thing. | ||||
| * | cpp: get rid of unnecessary ugly global variable for lexing header name | 2026-03-05 | 1 | -31/+23 | |
| | | | | | Make it a parameter. | ||||
| * | cpp: implement #include MACRO_NAME | 2026-03-05 | 1 | -55/+98 | |
| | | |||||
| * | cpp: #include".." shouldn't look in working directory | 2026-03-05 | 1 | -6/+8 | |
| | | |||||
| * | c: do not try to eval conditional expression's not taken branch | 2026-03-05 | 1 | -2/+0 | |
| | | |||||
| * | driver: fix -pthread, -U | 2026-03-02 | 1 | -1/+5 | |
| | | |||||
| * | add bswap16/32/64 | 2026-03-02 | 3 | -32/+77 | |
| | | | | | | - frontend: __builtin_bswapX intrinsics - backend: ObswapX instructions | ||||
| * | cpp: fix token spacing edge case when empty macros are involved | 2026-03-01 | 1 | -1/+5 | |
| | | |||||
| * | cpp: fix token spacing (#2) (hopefully) | 2026-03-01 | 2 | -35/+80 | |
| | | |||||
| * | c: static intializer bugfix introduced in6c3f1593e9 | 2026-02-28 | 1 | -0/+1 | |
| | | |||||
| * | cpp: allow comments between function-like macro name and arguments | 2026-02-26 | 1 | -8/+27 | |
| | | |||||
| * | c: allow casting of symbol address to intptr_t in static initializers | 2026-02-25 | 2 | -2/+4 | |
| | | |||||
| * | preprocessor: use shared static buffers for replacement lists | 2026-02-25 | 1 | -150/+178 | |
| | | | | | | | | One for macro definitions' bodies, another one for function-like macros with substituted arguments in the macro expansion stack. Cuts down on a lot of individual allocations. #undef'd macros' replacement lists are "leaked" but that is very minor | ||||
| * | fix various warnings | 2026-02-24 | 1 | -1/+1 | |
| | | |||||
| * | diagnostics: also print #include provenance for warnings | 2026-02-24 | 2 | -3/+4 | |
| | | |||||
| * | C23 true and false keywords | 2026-02-24 | 1 | -3/+5 | |
| | | |||||
| * | cpp: fix __has_builtin | 2026-02-23 | 1 | -2/+8 | |
| | | |||||
| * | cpp: add __COUNTER__ macro | 2026-02-23 | 1 | -131/+172 | |
| | | |||||
| * | c: fix using string literal as conditional expression conditional | 2026-02-22 | 1 | -12/+28 | |
| | | |||||
| * | preprocessor: fix an edge case with erroneously recursive macro expansion | 2026-02-22 | 1 | -26/+42 | |
| | | |||||
| * | cpp: better diagnostics | 2026-02-21 | 1 | -13/+40 | |
| | | |||||
| * | c: fix default argument promotion for function types | 2026-02-21 | 1 | -0/+1 | |
| | | |||||
| * | ir: basic inlining pass implementation | 2026-02-18 | 1 | -1/+2 | |
| | | |||||
| * | cpp: add __VA_OPT__ and comma ## __VA_ARGS__ pasting | 2026-02-06 | 1 | -5/+40 | |
| | | |||||
| * | c: support at least parsing C99 _Complex types | 2026-01-25 | 2 | -5/+16 | |
| | | |||||
| * | c: GNU __attribute__ stubs | 2026-01-25 | 3 | -10/+71 | |
| | | |||||
| * | driver: -iquote, -isystem, etc | 2026-01-12 | 1 | -15/+27 | |
| | | | | | With GCC-like search order | ||||
| * | cpp: prioritize internal headers over system headers | 2026-01-10 | 1 | -6/+6 | |
| | | |||||
| * | Add version tracking. Starting at 0.1.0 | 2026-01-09 | 1 | -4/+14 | |
| | | |||||
| * | c: fix use after free | 2026-01-09 | 1 | -1/+2 | |
| | | | | | | A silly one, declsbuf.p can be realloc'd in the call to putdecl, but in this statement that pointer could be fetched before the call. | ||||
| * | cpp: fix pasting ident+keyword | 2026-01-09 | 1 | -4/+7 | |
| | | |||||
| * | lexer: multibyte escape seqs in wide character literal | 2026-01-09 | 1 | -4/+13 | |
| | | | | | (hacky) | ||||
| * | c: allow 'register' in func parameter | 2026-01-09 | 1 | -1/+1 | |
| | | |||||
| * | cpp: fix multiline comment in skipped preprocessor directive | 2026-01-09 | 1 | -2/+16 | |
| | | |||||
| * | cpp: fix single-line comment after preprocessor directive | 2026-01-09 | 1 | -1/+1 | |
| | | | | | It was eating up the newline token | ||||
| * | c: fix diagnostic with "return <undeclared>" | 2025-12-31 | 1 | -2/+2 | |
| | | |||||
| * | backend: separate instrs for integer/float store | 2025-12-31 | 1 | -5/+5 | |
| | | |||||
| * | c: SYM expr should store decl ref as an index, not pointer | 2025-12-30 | 3 | -52/+59 | |
| | | | | | | | | | Because envdecls (now declsbuf) can be resized and invalidate those pointers. I missed this because the default initialization size of that buffer (and the fact that it would mostly only manifest with function-local expressions) made it not really come up in practice. Silly | ||||
| * | cpp: nicer handling of predefined macros | 2025-12-29 | 1 | -40/+29 | |
| | | |||||
| * | backend: start implementing aarch64 | 2025-12-28 | 1 | -0/+4 | |
| | | |||||
| * | avoid GOT relocations in unnecessary instances | 2025-12-25 | 1 | -1/+1 | |
| | | | | | | Also change xcon to have a flagset for symbols (whether it's a function, locally defined; later: thread local, etc). | ||||
| * | c: add _Generic | 2025-12-22 | 1 | -0/+53 | |
| | | |||||
| * | c: recognize __attribute__ as decltok, improve diagnostic for expected ↵ | 2025-12-22 | 1 | -1/+2 | |
| | | | | | declaration | ||||
| * | preprocessor make some errors just warnings | 2025-12-22 | 1 | -4/+6 | |
| | | |||||