aboutsummaryrefslogtreecommitdiffhomepage
path: root/io.c
Commit message (Collapse)AuthorAgeFilesLines
* cpp: better diagnostics lemon2026-02-211-2/+0
|
* c: support at least parsing C99 _Complex types lemon2026-01-251-0/+3
|
* c: GNU __attribute__ stubs lemon2026-01-251-6/+7
|
* io: fix hashtable lookup of builtin include files lemon2026-01-111-5/+15
| | | | It would break if there were hash collisions.
* io.c: bugfix lemon2026-01-071-1/+2
|
* c: keyword aliases lemon2025-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 errors lemon2025-12-201-0/+5
|
* driver: -w, update help lemon2025-12-191-0/+1
|
* nicer defaults and facilities for cross-compilation lemon2025-12-171-1/+1
|
* c: improve some type error diagnostics lemon2025-12-151-1/+2
|
* create distinct interned string type lemon2025-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 enums lemon2025-12-151-1/+1
| | | | This is a common non-standard GNU extension.
* cpp: support #line directives lemon2025-12-141-16/+59
|
* rename arraylength macro -> countof lemon2025-12-111-13/+13
|
* c: accept C99 `[static N]` style array decls, changes to fn quals lemon2025-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 stuff lemon2025-12-111-2/+2
|
* driver: add -Werror lemon2025-12-111-1/+2
|
* make fatal() _Noreturn lemon2025-12-111-1/+1
|
* io: just use sprintf for printing doubles lemon2025-12-071-28/+6
|
* add command-line predefined macros (-D, -U) lemon2025-12-061-4/+35
|
* io: print nans as NaN lemon2025-12-051-0/+5
|
* preprocessor: add #ifndef...#endif include guard optimization lemon2025-12-021-3/+6
|
* c/type: make implicit const T* -> T* conversion warning, not error lemon2025-11-261-1/+2
|
* io: diagnostics print source code underline correctly with hard tabs lemon2025-11-261-8/+26
|
* change op names to match 285063eba44 lemon2025-11-211-1/+1
|
* c: make builtin va_list an opaque struct lemon2025-10-231-1/+0
|
* use libc's stdout/stderr; also eliminate some unnecessary recursion in bfmt lemon2025-10-231-16/+51
|
* io: reject non file files lemon2025-10-201-16/+19
|
* c irgen fixes lemon2025-10-191-0/+7
|
* Organize source files into directories lemon2025-10-191-2/+2
|
* #pragma once lemon2025-10-181-22/+84
|
* add -E preprocessing option lemon2025-10-171-6/+55
|
* wide str and char literals lemon2025-10-161-0/+60
|
* implement most of preprocessor lemon2025-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 files lemon2025-09-171-1/+1
|
* a little refactoring and cleanup lemon2025-09-151-3/+9
|
* preprocessor: more awful hacks lemon2025-09-111-1/+1
|
* lex: stringify args in function macros lemon2025-09-101-2/+9
|
* lex: implement basic function-like macro functionality lemon2025-09-101-0/+1
|
* fix lemon2024-04-091-1/+1
|
* mem2reg: implement ssa construction; this breaks regalloc right now lemon2023-06-211-2/+2
|
* frontend: separate compiler & lexer lemon2023-06-191-2/+1
|
* add %y symbol printing lemon2023-06-191-0/+12
|
* don't try to compile when debugging IR lemon2023-06-191-1/+6
|
* fix iowrite() lemon2023-06-181-1/+4
|
* codegen skeleton lemon2023-06-061-8/+15
|
* better diagnostics lemon2023-06-041-0/+5
|
* regalloc skeleton lemon2023-05-311-9/+15
|
* improve struct token lemon2023-05-281-6/+10
|
* bool fixes lemon2023-05-281-0/+1
|