Commit Graph

160 Commits

Author SHA1 Message Date
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