1--- a/src/frontc/clexer.mll
2+++ b/src/frontc/clexer.mll
3@@ -134,9 +134,11 @@ let init_lexicon _ =
4 (* WW: see /usr/include/sys/cdefs.h for why __signed and __volatile
5 * are accepted GCC-isms *)
6 ("_Bool", fun loc -> BOOL loc);
7+ ("_Complex", fun loc -> COMPLEX loc);
8 ("char", fun loc -> CHAR loc);
9 ("int", fun loc -> INT loc);
10 ("float", fun loc -> FLOAT loc);
11+ ("__float128", fun loc -> FLOAT128 loc);
12 ("double", fun loc -> DOUBLE loc);
13 ("void", fun loc -> VOID loc);
14 ("enum", fun loc -> ENUM loc);
15--- a/src/frontc/cparser.mly
16+++ b/src/frontc/cparser.mly
17@@ -269,6 +269,8 @@ let oblivState (s:statement): statement =
18 %token<Cabs.cabsloc> VOLATILE EXTERN STATIC CONST RESTRICT AUTO REGISTER FROZEN
19 %token<Cabs.cabsloc> THREAD
20
21+%token<Cabs.cabsloc> COMPLEX FLOAT128
22+
23 %token<Cabs.cabsloc> SIZEOF ALIGNOF
24
25 %token EQ PLUS_EQ MINUS_EQ STAR_EQ SLASH_EQ PERCENT_EQ
26@@ -1002,7 +1004,11 @@ type_spec: /* ISO 6.7.2 */
27 | LONG { Tlong, $1 }
28 | INT64 { Tint64, $1 }
29 | FLOAT { Tfloat, $1 }
30+| FLOAT128 { Tfloat, $1 }
31 | DOUBLE { Tdouble, $1 }
32+| COMPLEX FLOAT { Tfloat, $2 }
33+| COMPLEX FLOAT128{ Tfloat, $2 }
34+| COMPLEX DOUBLE { Tdouble, $2 }
35 | SIGNED { Tsigned, $1 }
36 | UNSIGNED { Tunsigned, $1 }
37 | STRUCT id_or_typename