Rui Ueyama
b3772845bd
Add thread-local variable
2020-12-07 12:00:06 +09:00
Rui Ueyama
6d344ed945
Add -fcommon and -fno-common flags
2020-12-07 12:00:06 +09:00
Rui Ueyama
85e46b1071
Add tentative definition
2020-12-07 12:00:06 +09:00
Rui Ueyama
1b99badce4
Add offsetof
2020-12-07 12:00:06 +09:00
Rui Ueyama
11fc259b01
Add -idirafter option
2020-12-07 12:00:06 +09:00
Rui Ueyama
6a2dc5a48a
Use __attribute__((format(print, ...))) to find programming errors
2020-12-07 12:00:06 +09:00
Rui Ueyama
e5f4ca90fd
Do not emit static inline functions if referenced by no one
2020-12-07 12:00:06 +09:00
Rui Ueyama
31087f8d4b
Handle inline functions as static functions
2020-12-07 12:00:06 +09:00
Rui Ueyama
a2535163e2
Add basic "asm" statement
2020-12-07 12:00:06 +09:00
Rui Ueyama
e28a612e9c
[GNU] Add ?: operator with omitted operand
2020-12-07 12:00:06 +09:00
Rui Ueyama
aee7891acb
[GNU] Allow sizeof(<function type>)
2020-12-07 12:00:06 +09:00
Rui Ueyama
1faab48ecf
Add _Generic
2020-12-07 12:00:06 +09:00
Rui Ueyama
1433b404d6
[GNU] Add __builtin_types_compatible_p
2020-12-07 12:00:06 +09:00
Rui Ueyama
7d80a5136d
Add typeof
2020-12-07 12:00:06 +09:00
Rui Ueyama
007e526ec5
[GNU] Support GCC-style variadic macro
2020-12-07 12:00:06 +09:00
Rui Ueyama
74ec9f6f39
Ignore #pragma
2020-12-07 12:00:06 +09:00
Rui Ueyama
083c27559e
[GNU] Handle ,##__VA_ARG__
2020-12-07 12:00:06 +09:00
Rui Ueyama
338144869f
Add __VA_OPT__
2020-12-07 12:00:06 +09:00
Rui Ueyama
3a10c8aa44
[GNU] Add __BASE_FILE__ macro
2020-12-07 12:00:06 +09:00
Rui Ueyama
922604ae1e
[GNU] Add __TIMESTAMP__ macro
2020-12-07 12:00:06 +09:00
Rui Ueyama
aaf20fb96e
[GNU] Add line marker directive
2020-12-07 12:00:06 +09:00
Rui Ueyama
c61c0d0025
Add #line
2020-12-07 12:00:06 +09:00
Rui Ueyama
37998be0c1
Improve error message for multibyte characters
2020-12-07 12:00:06 +09:00
Rui Ueyama
95eb5b01b3
Handle struct designator for anonymous struct member
2020-12-07 12:00:06 +09:00
Rui Ueyama
31dc1dfa21
Add union designated initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
67f5834378
Add struct designated initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
691c4fac15
[GNU] Allow to omit "=" in designated initializers
2020-12-07 12:00:06 +09:00
Rui Ueyama
835cd24b2c
Allow array designators to initialize incomplete arrays
2020-12-07 12:00:06 +09:00
Rui Ueyama
c618c3b582
Add array designated initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
2b2fa25507
Skip UTF-8 BOM markers
2020-12-07 12:00:06 +09:00
Rui Ueyama
238277714d
Allow to concatenate regular string literals with L/u/U string literals
2020-12-07 12:00:06 +09:00
Rui Ueyama
adb8b98889
[GNU] Accept $ as an identifier character
2020-12-07 12:00:06 +09:00
Rui Ueyama
0e5d250ebf
Allow multibyte UTF-8 character in identifier
2020-12-07 12:00:06 +09:00
Rui Ueyama
e4491b8115
Define __STDC_UTF_{16,32}__ macros
...
These predefined macros indicates that our u and U chars/strings
are UTF-16 and UTF-32-encoded, respectively.
2020-12-07 12:00:06 +09:00
Rui Ueyama
6adba75af8
Add UTF-32 string literal initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
36230e0827
Add UTF-16 string literal initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
cae061af2b
Add wide string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
c467ee665d
Add UTF-32 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
9cabe1f204
Add UTF-16 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
57b21fe902
Add UTF-8 string literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
2dac3afece
Add UTF-32 character literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
454618cd15
Add UTF-16 character literal
2020-12-07 12:00:06 +09:00
Rui Ueyama
a57c661d46
Accept multibyte character as wide character literal
...
On most Unix-like systems, wide character literal is 32-bit long
and encodes a Unicode code point. On Windows, that is 16-bit
long and encodes a UTF-16 code unit. Clearly, there's a portability
issue here. Personally I've never used wide characters in my code
as I didn't find it useful.
Being said that, some header files contain wide character literal,
so we need to support that so that chibicc can include such files.
We assume that source files are always encoded in UTF-8.
2020-12-07 12:00:06 +09:00
Rui Ueyama
c31886aa7a
Add \u and \U escape sequences
2020-12-07 12:00:06 +09:00
Rui Ueyama
74bcec5b22
Canonicalize newline character
2020-12-07 12:00:06 +09:00
Rui Ueyama
0e77f3dff8
[GNU] Add __COUNTER__ macro
2020-12-07 12:00:06 +09:00
Rui Ueyama
e27417fcde
Add __DATE__ and __TIME__ macros
2020-12-07 12:00:06 +09:00
Rui Ueyama
c3075b3030
Add anonymous struct and union
2020-12-07 12:00:06 +09:00
Rui Ueyama
9c36dd727c
Make "main" to implicitly return 0
2020-12-07 12:00:06 +09:00
Rui Ueyama
5257ee0f20
Make an array of at least 16 bytes long to have alignment of at least 16 bytes
...
Quote from AMD64 System V ABI: "An array uses the same alignment as
its elements, except that a local or global array variable of length
at least 16 bytes or a C99 variable-length array variable always has
alignment of at least 16 bytes."
2020-12-07 12:00:06 +09:00