| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | c: static eval refactoring | 2026-03-14 | 1 | -5/+8 | |
| | | | | | | Explicit node for static symbol (addresses). Should not break with edge cases like the previous ad-hoc approach. And some other bugfixes | ||||
| * | fix io fa8c39d6df : make buffer shared (for nested note()) | 2026-02-24 | 1 | -1/+1 | |
| | | |||||
| * | io: use distinct output buffer for diagnostics | 2026-02-24 | 1 | -14/+24 | |
| | | | | | | Prevents concurrent invokations of the compiler from mixing up and mangling diagnostics from unbuffered stderr. | ||||
| * | diagnostics: also print #include provenance for warnings | 2026-02-24 | 1 | -1/+6 | |
| | | |||||
| * | cpp: better diagnostics | 2026-02-21 | 1 | -2/+0 | |
| | | |||||
| * | c: support at least parsing C99 _Complex types | 2026-01-25 | 1 | -0/+3 | |
| | | |||||
| * | c: GNU __attribute__ stubs | 2026-01-25 | 1 | -6/+7 | |
| | | |||||
| * | io: fix hashtable lookup of builtin include files | 2026-01-11 | 1 | -5/+15 | |
| | | | | | It would break if there were hash collisions. | ||||
| * | io.c: bugfix | 2026-01-07 | 1 | -1/+2 | |
| | | |||||
| * | c: keyword aliases | 2025-12-21 | 1 | -1/+1 | |
| | | | | | | Some linux headers use __signed__ for whatever reason.. this is a general fix for those alternate keyword | ||||
| * | quit after emitting too many errors | 2025-12-20 | 1 | -0/+5 | |
| | | |||||
| * | driver: -w, update help | 2025-12-19 | 1 | -0/+1 | |
| | | |||||
| * | nicer defaults and facilities for cross-compilation | 2025-12-17 | 1 | -1/+1 | |
| | | |||||
| * | c: improve some type error diagnostics | 2025-12-15 | 1 | -1/+2 | |
| | | |||||
| * | create distinct interned string type | 2025-12-15 | 1 | -6/+6 | |
| | | | | | | | | | | | | | | | Interned strings are used pervasively, so it's a good idea to add a layer of type safety to differentiate them from general cstrs and avoid potential bugs from comparing non-interned and interned strings. Not that that's happened so far that I can remember, but it could. I'm 90% sure it's legal to alias `struct {char c;}` pointers with `char` pointers. This specific typedef gives type safety but with a simple one-way `internstr -> const char *` typecast (with `&istr->c`). Converting the other way around is more intentional: a straight up cast `(internstr)cstr` which sticks out as unchecked and probably wrong, or calling the intern(cstr) function, which is the right way. | ||||
| * | c: support forward-declared enums | 2025-12-15 | 1 | -1/+1 | |
| | | | | | This is a common non-standard GNU extension. | ||||
| * | cpp: support #line directives | 2025-12-14 | 1 | -16/+59 | |
| | | |||||
| * | rename arraylength macro -> countof | 2025-12-11 | 1 | -13/+13 | |
| | | |||||
| * | c: accept C99 `[static N]` style array decls, changes to fn quals | 2025-12-11 | 1 | -1/+1 | |
| | | | | | | | 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 | -2/+2 | |
| | | |||||
| * | driver: add -Werror | 2025-12-11 | 1 | -1/+2 | |
| | | |||||
| * | make fatal() _Noreturn | 2025-12-11 | 1 | -1/+1 | |
| | | |||||
| * | io: just use sprintf for printing doubles | 2025-12-07 | 1 | -28/+6 | |
| | | |||||
| * | add command-line predefined macros (-D, -U) | 2025-12-06 | 1 | -4/+35 | |
| | | |||||
| * | io: print nans as NaN | 2025-12-05 | 1 | -0/+5 | |
| | | |||||
| * | preprocessor: add #ifndef...#endif include guard optimization | 2025-12-02 | 1 | -3/+6 | |
| | | |||||
| * | c/type: make implicit const T* -> T* conversion warning, not error | 2025-11-26 | 1 | -1/+2 | |
| | | |||||
| * | io: diagnostics print source code underline correctly with hard tabs | 2025-11-26 | 1 | -8/+26 | |
| | | |||||
| * | change op names to match 285063eba44 | 2025-11-21 | 1 | -1/+1 | |
| | | |||||
| * | c: make builtin va_list an opaque struct | 2025-10-23 | 1 | -1/+0 | |
| | | |||||
| * | use libc's stdout/stderr; also eliminate some unnecessary recursion in bfmt | 2025-10-23 | 1 | -16/+51 | |
| | | |||||
| * | io: reject non file files | 2025-10-20 | 1 | -16/+19 | |
| | | |||||
| * | c irgen fixes | 2025-10-19 | 1 | -0/+7 | |
| | | |||||
| * | Organize source files into directories | 2025-10-19 | 1 | -2/+2 | |
| | | |||||
| * | #pragma once | 2025-10-18 | 1 | -22/+84 | |
| | | |||||
| * | add -E preprocessing option | 2025-10-17 | 1 | -6/+55 | |
| | | |||||
| * | wide str and char literals | 2025-10-16 | 1 | -0/+60 | |
| | | |||||
| * | implement most of preprocessor | 2025-10-13 | 1 | -3/+14 | |
| | | | | | | | | | - concatenation (##) - builtin macros (__FILE__ etc) - fails in some edge cases, and code needs cleanup - add embedded system include files (stddef.h, stdarg.h for now) - can handle stdio.h now | ||||
| * | io.c errata non reg files | 2025-09-17 | 1 | -1/+1 | |
| | | |||||
| * | a little refactoring and cleanup | 2025-09-15 | 1 | -3/+9 | |
| | | |||||
| * | preprocessor: more awful hacks | 2025-09-11 | 1 | -1/+1 | |
| | | |||||
| * | lex: stringify args in function macros | 2025-09-10 | 1 | -2/+9 | |
| | | |||||
| * | lex: implement basic function-like macro functionality | 2025-09-10 | 1 | -0/+1 | |
| | | |||||
| * | fix | 2024-04-09 | 1 | -1/+1 | |
| | | |||||
| * | mem2reg: implement ssa construction; this breaks regalloc right now | 2023-06-21 | 1 | -2/+2 | |
| | | |||||
| * | frontend: separate compiler & lexer | 2023-06-19 | 1 | -2/+1 | |
| | | |||||
| * | add %y symbol printing | 2023-06-19 | 1 | -0/+12 | |
| | | |||||
| * | don't try to compile when debugging IR | 2023-06-19 | 1 | -1/+6 | |
| | | |||||
| * | fix iowrite() | 2023-06-18 | 1 | -1/+4 | |
| | | |||||
| * | codegen skeleton | 2023-06-06 | 1 | -8/+15 | |
| | | |||||