Rui Ueyama
f6944133d2
Use hashmap for keyword lookup
2020-12-07 12:00:06 +09:00
Rui Ueyama
655954e301
Use hashmap for block-scope lookup
2020-12-07 12:00:06 +09:00
Rui Ueyama
f0c98e0d59
[GNU] Treat labels-as-values as compile-time constant
2020-12-07 12:00:06 +09:00
Rui Ueyama
4f165ec60b
[GNU] Support labels-as-values
2020-12-07 12:00:06 +09:00
Rui Ueyama
3d5550e29a
[GNU] Support array range designator
2020-12-07 12:00:06 +09:00
Rui Ueyama
d90c73b605
[GNU] Support case ranges
2020-12-07 12:00:06 +09:00
Rui Ueyama
e0bf168041
Add long double
2020-12-07 12:00:06 +09:00
Rui Ueyama
2fa8f489f3
Support sizeof(typename) where typename is a VLA
2020-12-07 12:00:06 +09:00
Rui Ueyama
07f901057f
Add pointer arithmetic for VLA
2020-12-07 12:00:06 +09:00
Rui Ueyama
e8667afd08
Add sizeof() for VLA
2020-12-07 12:00:06 +09:00
Rui Ueyama
77275c546a
Add alloca()
2020-12-07 12:00:06 +09:00
Rui Ueyama
b3772845bd
Add thread-local variable
2020-12-07 12:00:06 +09:00
Rui Ueyama
85e46b1071
Add tentative definition
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
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
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
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
c3075b3030
Add anonymous struct and union
2020-12-07 12:00:06 +09:00
Rui Ueyama
c302a969d8
Do not allow to obtain an address of a bitfield
2020-12-07 12:00:06 +09:00
Rui Ueyama
17ea802cea
Handle zero-width bitfield member
2020-12-07 12:00:06 +09:00
Rui Ueyama
54c2b3b18f
Handle op=-style assignments to bitfields
2020-12-07 12:00:06 +09:00
Rui Ueyama
441a89b80b
Support global struct bitfield initializer
2020-12-07 12:00:06 +09:00
Rui Ueyama
cc852fe99d
Add bitfield
2020-12-07 12:00:06 +09:00
Rui Ueyama
e0b5da3b39
Dereferencing a function shouldn't do anything
...
This is an oddity in the C spec, but you can apply the unary `*`
operator to a function as many times as you want. `*x` and `x`
means exactly the same, given that `x` is a function.
2020-12-07 12:00:06 +09:00
Rui Ueyama
d7bad96114
Allow to define a function returning a struct
2020-12-07 12:00:06 +09:00
Rui Ueyama
c72df1c9be
Allow to call a fucntion returning a struct
2020-12-07 12:00:06 +09:00
Rui Ueyama
5e0f8c47e3
Allow struct parameter
2020-12-07 12:00:06 +09:00
Rui Ueyama
5322ea8495
Add va_arg()
2020-12-07 12:00:06 +09:00
Rui Ueyama
82ba010c76
[GNU] Add __FUNCTION__
2020-12-07 12:00:06 +09:00
Rui Ueyama
ba6b4b6375
Add __func__
2020-12-07 12:00:06 +09:00
Rui Ueyama
bf6ff928ad
Add #if and #endif
2020-12-07 12:00:06 +09:00
Rui Ueyama
c5953ba132
Decay a function to a pointer in the func param context
2020-12-07 12:00:06 +09:00
Rui Ueyama
d06a8ac6e6
Add function pointer
2020-12-07 12:00:06 +09:00
Rui Ueyama
9bf96124ba
Add "long double" as an alias for "double"
2020-12-07 12:00:06 +09:00
Rui Ueyama
ffea4219b1
Add flonum constant expression
2020-12-07 12:00:06 +09:00
Rui Ueyama
8b14859f63
Implement default argument promotion for float
2020-12-07 12:00:06 +09:00
Rui Ueyama
83f76ebb66
Add flonum +, -, * and /
2020-12-07 12:00:06 +09:00
Rui Ueyama
29de46aed4
Add "float" and "double" local variables and casts
2020-12-07 12:00:06 +09:00
Rui Ueyama
1e57f72d8a
Add floating-point constant
2020-12-07 12:00:06 +09:00