40 lines
1.6 KiB
Plaintext
40 lines
1.6 KiB
Plaintext
chibicc is the simplest/tiniest/hackable/readable c11 compiler in the
|
||
world that can build projects like python but goes 2x slower than gcc
|
||
with 2x the code size, because it doesn't optimize or color registers
|
||
although it can compile code at 5x the speed and could be even faster
|
||
which is great, considering it's a 220kb αcτµαlly pδrταblε εxεcµταblε
|
||
|
||
local enhancements
|
||
|
||
- support dce
|
||
- support gnu asm
|
||
- support __int128
|
||
- support _Static_assert
|
||
- support __vector_size__
|
||
- support __builtin_add_overflow, etc.
|
||
- support __builtin_memcpy, strlen, strpbrk, etc.
|
||
- support __builtin_constant_p, __builtin_likely, etc.
|
||
- support __builtin_isunordered, __builtin_islessgreater, etc.
|
||
- support __builtin_ctz, __builtin_bswap, __builtin_popcount, etc.
|
||
- support __constructor__, __section__, __cold__, -ffunction-sections, etc.
|
||
- support building -x assembler-with-cpp a.k.a. .S files
|
||
- support profiling w/ -mcount / -mfentry / -mnop-mcount
|
||
- improve error messages to trace macro expansions
|
||
- reduce #lines of generated assembly by a third
|
||
- reduce #bytes of generated binary by a third
|
||
|
||
local bug fixes
|
||
|
||
- allow casted values to be lvalues
|
||
- permit parentheses around string-initializer
|
||
- fix 64-bit bug in generated code for struct bitfields
|
||
- fix bug where last statement in statement expression couldn't have label
|
||
- print_tokens (chibicc -E) now works in the case of adjacent string literals
|
||
|
||
local changes
|
||
|
||
- use tabs in generated output
|
||
- generated code no longer assumes red zone
|
||
- emit .size directives for function definitions
|
||
- use fisttp long double conversions if built w/ -msse3
|