From 2240422da9b55b71cfb32220bb0246ec92bfc432 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Mon, 10 Jul 2017 22:20:34 +0200 Subject: enums: Accept GNU extension See testcase. Happens e.g. in the linux kernel. --- tccgen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tccgen.c') diff --git a/tccgen.c b/tccgen.c index d8676a4..c3185ca 100644 --- a/tccgen.c +++ b/tccgen.c @@ -3683,7 +3683,7 @@ static void struct_decl(CType *type, int u) v = anon_sym++; } /* Record the original enum/struct/union token. */ - type1.t = u; + type1.t = u == VT_ENUM ? u | VT_INT | VT_UNSIGNED : u; type1.ref = NULL; /* we put an undefined size for struct/union */ s = sym_push(v | SYM_STRUCT, &type1, 0, -1); @@ -3736,7 +3736,7 @@ do_decl: skip('}'); /* set integral type of the enum */ t.t = VT_INT; - if (nl == 0) { + if (nl >= 0) { if (pl != (unsigned)pl) t.t = VT_LLONG; t.t |= VT_UNSIGNED; -- cgit v1.3.1