aboutsummaryrefslogtreecommitdiffhomepage
path: root/common.h
Commit message (Collapse)AuthorAgeFilesLines
* cpp: add __COUNTER__ macro lemon2026-02-231-0/+14
|
* cpp: better diagnostics lemon2026-02-211-0/+3
|
* alloccopy: explicit no-op on zero size. lemon2026-02-181-0/+1
| | | | Allows src/dst to be null for zero size, which memcpy doesn't
* ir: basic inlining pass implementation lemon2026-02-181-0/+2
|
* driver: -iquote, -isystem, etc lemon2026-01-121-4/+13
| | | | With GCC-like search order
* backend: start implementing aarch64 lemon2025-12-281-4/+4
|
* lower alloca as a separate pass before isel lemon2025-12-231-0/+1
|
* optimize lexer a bit more lemon2025-12-201-1/+2
|
* driver: -w, update help lemon2025-12-191-0/+1
|
* nicer defaults and facilities for cross-compilation lemon2025-12-171-2/+6
|
* bitset: better implementation of bsiter() and stuff lemon2025-12-161-9/+15
| | | | Also changed the type to size_t for portability
* create distinct interned string type lemon2025-12-151-3/+4
| | | | | | | | | | | | | | 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.
* move intern() to mem.c lemon2025-12-151-0/+3
| | | | | Being in lex.c was vestigial, since it was being used all over the frontend and backend.
* cpp: support #line directives lemon2025-12-141-2/+3
|
* Add -O optimization flag lemon2025-12-131-0/+4
|
* s/amd64/x86_64/ lemon2025-12-121-1/+1
|
* lex: use pmap for macro lookup lemon2025-12-121-2/+5
| | | | To reduce hashmap code repetition. Also add pmap_del for this purpose
* rename arraylength macro -> countof lemon2025-12-111-1/+1
|
* _Alignof and stuff lemon2025-12-111-0/+2
|
* driver: add -Werror lemon2025-12-111-0/+1
|
* fatal() make noreturn lemon2025-12-111-2/+8
|
* make fatal() _Noreturn lemon2025-12-111-1/+1
|
* misc fixes lemon2025-12-101-1/+1
|
* mem: fix pmap_init and change hashmap load factors to 75% lemon2025-12-091-1/+1
|
* lex: make some hashtables resizable lemon2025-12-091-7/+6
| | | | Was hiting the fixed limits trying to preprocess sqlite3amalgamation
* add command-line predefined macros (-D, -U) lemon2025-12-061-0/+3
|
* preprocessor: add #ifndef...#endif include guard optimization lemon2025-12-021-2/+2
|
* use bstdout for -E lemon2025-11-261-1/+1
|
* debug output to stdout lemon2025-11-191-0/+1
|
* factor type stuff into type.h lemon2025-11-161-208/+1
|
* amd64: fix aggregate abi stuff;; ir: fold, peephole optimizing constructors lemon2025-11-051-3/+3
|
* c: make builtin va_list an opaque struct lemon2025-10-231-2/+2
|
* use libc's stdout/stderr; also eliminate some unnecessary recursion in bfmt lemon2025-10-231-6/+13
|
* refactor vec_of(T) and misc lemon2025-10-201-32/+42
|
* c irgen fixes lemon2025-10-191-1/+0
|
* #pragma once lemon2025-10-181-2/+7
|
* add -E preprocessing option lemon2025-10-171-1/+2
|
* wide str and char literals lemon2025-10-161-2/+6
|
* lowsetsetbit lemon2025-10-151-1/+2
|
* c: fix codegen for enum types lemon2025-10-151-2/+7
|
* implement most of preprocessor lemon2025-10-131-0/+11
| | | | | | | | - 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
* c: call memset for some runtime zero initializations lemon2025-10-091-0/+8
|
* alloc changes lemon2025-09-171-0/+4
|
* preliminary pie and pic lemon2025-09-141-0/+1
|
* regset doesnt need all those macros lemon2025-09-141-5/+2
|
* change freearena for correctness lemon2025-09-141-4/+4
|
* regalloc improvements lemon2025-09-141-0/+1
|
* fixes, delnops lemon2025-09-091-0/+1
|
* regalloc: start implementing linear scan lemon2025-09-081-2/+9
|
* backend: fix mem2reg & regalloc lemon2023-06-261-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | they were broken, especially for unstructured control flow. most significant fix is to register allocator for temporaries that are used before the first definition in the source order, e.g.: @1: %x = add %y, 1 b @3 @2 %y = ... b @1 it's legal for %x to use %y there (assuming @2 dominates @1) but from the point of view of the register allocator %y is defined and freed and then used again, which broke things. the fix is to introduce phis for this situation: @1: %y.1 = phi @2 %y %x = add %y.1, 1 b @3 @2 %y = ... b @1 then regalloc phi handling code makes it work