aboutsummaryrefslogtreecommitdiffhomepage
path: root/io.c
Commit message (Collapse)AuthorAgeFilesLines
* REFACTOR: move sources to src/lemon2026-03-171-1255/+0
|
* c: static eval refactoringlemon2026-03-141-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())lemon2026-02-241-1/+1
|
* io: use distinct output buffer for diagnosticslemon2026-02-241-14/+24
| | | | | Prevents concurrent invokations of the compiler from mixing up and mangling diagnostics from unbuffered stderr.
* diagnostics: also print #include provenance for warningslemon2026-02-241-1/+6
|
* cpp: better diagnosticslemon2026-02-211-2/+0
|
* c: support at least parsing C99 _Complex typeslemon2026-01-251-0/+3
|
* c: GNU __attribute__ stubslemon2026-01-251-6/+7
|
* io: fix hashtable lookup of builtin include fileslemon2026-01-111-5/+15
| | | | It would break if there were hash collisions.
* io.c: bugfixlemon2026-01-071-1/+2
|
* c: keyword aliaseslemon2025-12-211-1/+1
| | | | | Some linux headers use __signed__ for whatever reason.. this is a general fix for those alternate keyword
* quit after emitting too many errorslemon2025-12-201-0/+5
|
* driver: -w, update helplemon2025-12-191-0/+1
|
* nicer defaults and facilities for cross-compilationlemon2025-12-171-1/+1
|
* c: improve some type error diagnosticslemon2025-12-151-1/+2
|
* create distinct interned string typelemon2025-12-151-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 enumslemon2025-12-151-1/+1
| | | | This is a common non-standard GNU extension.
* cpp: support #line directiveslemon2025-12-141-16/+59
|
* rename arraylength macro -> countoflemon2025-12-111-13/+13
|
* c: accept C99 `[static N]` style array decls, changes to fn qualslemon2025-12-111-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 stufflemon2025-12-111-2/+2
|
* driver: add -Werrorlemon2025-12-111-1/+2
|
* make fatal() _Noreturnlemon2025-12-111-1/+1
|
* io: just use sprintf for printing doubleslemon2025-12-071-28/+6
|
* add command-line predefined macros (-D, -U)lemon2025-12-061-4/+35
|
* io: print nans as NaNlemon2025-12-051-0/+5
|
* preprocessor: add #ifndef...#endif include guard optimizationlemon2025-12-021-3/+6
|
* c/type: make implicit const T* -> T* conversion warning, not errorlemon2025-11-261-1/+2
|
* io: diagnostics print source code underline correctly with hard tabslemon2025-11-261-8/+26
|
* change op names to match 285063eba44lemon2025-11-211-1/+1
|
* c: make builtin va_list an opaque structlemon2025-10-231-1/+0
|
* use libc's stdout/stderr; also eliminate some unnecessary recursion in bfmtlemon2025-10-231-16/+51
|
* io: reject non file fileslemon2025-10-201-16/+19
|
* c irgen fixeslemon2025-10-191-0/+7
|
* Organize source files into directorieslemon2025-10-191-2/+2
|
* #pragma oncelemon2025-10-181-22/+84
|
* add -E preprocessing optionlemon2025-10-171-6/+55
|
* wide str and char literalslemon2025-10-161-0/+60
|
* implement most of preprocessorlemon2025-10-131-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 fileslemon2025-09-171-1/+1
|
* a little refactoring and cleanuplemon2025-09-151-3/+9
|
* preprocessor: more awful hackslemon2025-09-111-1/+1
|
* lex: stringify args in function macroslemon2025-09-101-2/+9
|
* lex: implement basic function-like macro functionalitylemon2025-09-101-0/+1
|
* fixlemon2024-04-091-1/+1
|
* mem2reg: implement ssa construction; this breaks regalloc right nowlemon2023-06-211-2/+2
|
* frontend: separate compiler & lexerlemon2023-06-191-2/+1
|
* add %y symbol printinglemon2023-06-191-0/+12
|
* don't try to compile when debugging IRlemon2023-06-191-1/+6
|
* fix iowrite()lemon2023-06-181-1/+4
|