aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog49
-rw-r--r--Makefile1
-rw-r--r--Makefile.extr17
-rw-r--r--VERSION2
-rw-r--r--arm/TargetPrinter.ml1
-rw-r--r--backend/CMparser.mly2
-rw-r--r--backend/PrintAsm.ml1
-rw-r--r--backend/PrintLTL.ml11
-rw-r--r--backend/PrintXTL.ml11
-rw-r--r--backend/Regalloc.ml19
-rw-r--r--cfrontend/C2C.ml161
-rw-r--r--cfrontend/CPragmas.ml5
-rw-r--r--cfrontend/PrintClight.ml13
-rw-r--r--cfrontend/PrintCsyntax.ml18
-rw-r--r--common/Sections.ml3
-rw-r--r--common/Sections.mli2
-rw-r--r--cparser/Bitfields.ml21
-rw-r--r--cparser/Cabs.v1
-rw-r--r--cparser/Cerrors.ml142
-rw-r--r--cparser/Cerrors.mli4
-rw-r--r--cparser/Cprint.ml15
-rw-r--r--cparser/Cutil.ml57
-rw-r--r--cparser/Cutil.mli27
-rw-r--r--cparser/Elab.ml196
-rw-r--r--cparser/Elab.mli9
-rw-r--r--cparser/GCC.ml24
-rw-r--r--cparser/GCC.mli3
-rw-r--r--cparser/Lexer.mll3
-rw-r--r--cparser/Parser.vy6
-rw-r--r--cparser/StructReturn.ml10
-rw-r--r--cparser/handcrafted.messages1611
-rw-r--r--cparser/pre_parser.mly6
-rw-r--r--debug/Debug.ml7
-rw-r--r--debug/Debug.mli11
-rw-r--r--debug/DebugInformation.ml34
-rw-r--r--debug/DebugInformation.mli52
-rw-r--r--debug/DebugInit.ml46
-rw-r--r--debug/DebugTypes.mli1
-rw-r--r--debug/DwarfPrinter.ml4
-rw-r--r--debug/DwarfTypes.mli2
-rw-r--r--debug/Dwarfgen.ml2
-rw-r--r--doc/ccomp.126
-rw-r--r--driver/Assembler.ml7
-rw-r--r--driver/Commandline.ml17
-rw-r--r--driver/Commandline.mli5
-rwxr-xr-xdriver/Driver.ml159
-rw-r--r--driver/Frontend.ml66
-rw-r--r--driver/Interp.ml22
-rw-r--r--driver/Linker.ml39
-rw-r--r--exportclight/ExportClight.ml22
-rw-r--r--extraction/extraction.v6
-rw-r--r--powerpc/TargetPrinter.ml1
-rw-r--r--runtime/include/stddef.h2
-rw-r--r--test/regression/attribs1.c2
-rw-r--r--x86/TargetPrinter.ml7
55 files changed, 1713 insertions, 1278 deletions
diff --git a/Changelog b/Changelog
index 59f10c2f..1c450d8a 100644
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,5 @@
-Working version
-===============
+Release 3.0, 2017-02-10
+=======================
Major improvements:
@@ -17,7 +17,52 @@ Major improvements:
instantiation of the new support for 64-bit targets described
above.) Support for x86-64 is currently available for Linux and MacOS X.
(Run the configure script with 'x86_64-linux' or 'x86_64-macosx'.)
+ This is an early port: several ABI incompatibilities remain.
+
+Language features:
+
+- Support for anonymous structures and unions as members of
+ structures or unions. (ISO C11, section 6.7.2.1, para 13 and 19.)
+- New built-in functions for ARM and PowerPC:
+ __builtin_ctz, __builtin_ctzl, __builtin_ctzll
+ (count trailing zeros, 32 and 64 bits).
+
+Usability:
+
+- Added options -Wxxx and -Wno-xxx (for various values of "xxx")
+ to control which warnings are emitted.
+- Added options -Werror=xxx and -Wno-error=xxx (for various values of "xxx")
+ to control which warnings are treated as errors.
+- Support response files where additional command-line arguments can
+ be passed (syntax: @file).
+- Improved wording of warning and error messages.
+- Improved handling of attributes, distinguishing attributes that apply
+ to types from attributes that apply to names. For example, in
+ __attribute((aligned(8),section("foo"))) int * p;
+ the "aligned" attribute is attached to type "int", while
+ the "section" attribute is attached to name "p".
+
+Code generation:
+
+- Support for ARM target processors in big-endian mode.
+- Optimize 64-bit integer division by constants.
+
+Bug fixing:
+- Issue #155: on ARM, assembly errors caused by large jump tables for
+ "switch" statements and overflow in accessing constant pools.
+- Issue #151: large inductive definition causes a fatal error in
+ 32-bit versions of Coq.
+- Issue #143: handle "%lf" printf() format in the reference interpreter
+- Issue #138: struct declarations in K&R function parameters were ignored.
+- Issues #110, #111, #113, #114, #115, #119, #120, #121, #122, #123, #124,
+ #125, #126, #127, #128, #129, #130, #133, #138, #144: various cases
+ of internal errors and failed assertions that should have been
+ proper errors instead.
+- For __builtin_memcpy_aligned, size and alignment arguments of 64-bit
+ integer type were causing a fatal error on a 32-bit target.
+- ARM and x86 ports: wrong register allocation for some calls to
+ function pointers.
Release 2.7.1, 2016-07-18
diff --git a/Makefile b/Makefile
index ceaacb4b..24953280 100644
--- a/Makefile
+++ b/Makefile
@@ -255,6 +255,7 @@ endif
clean:
rm -f $(patsubst %, %/*.vo, $(DIRS))
+ rm -f $(patsubst %, %/.*.aux, $(DIRS))
rm -rf doc/html doc/*.glob
rm -f doc/coq2html.ml doc/coq2html doc/*.cm? doc/*.o
rm -f driver/Version.ml
diff --git a/Makefile.extr b/Makefile.extr
index 8fdc9ffe..fb19dd00 100644
--- a/Makefile.extr
+++ b/Makefile.extr
@@ -17,10 +17,23 @@
include Makefile.config
+#
+# Variables from Makefile.config:
+# -OCAML_OPT_COMP: can we use the native version
+# -COMPFLAGS: compile options
+# -LINK_OPT: additional linker flags for the native binary
+#
+
# Menhir configuration.
include Makefile.menhir
+#
+# Variables from Makefile.menhir:
+# -MENHIR_INCLUDES: additional menhir include paths
+# -MENHIR_LIBS: additional menhir libraries
+#
+
# The pre-parser's error message database is compiled as follows.
cparser/pre_parser_messages.ml:
@@ -80,7 +93,7 @@ CCOMP_OBJS:=$(shell $(MODORDER) driver/Driver.cmx)
ccomp: $(CCOMP_OBJS)
@echo "Linking $@"
- @$(OCAMLOPT) -o $@ $(LIBS) $+
+ @$(OCAMLOPT) -o $@ $(LIBS) $(LINK_OPT) $+
ccomp.byte: $(CCOMP_OBJS:.cmx=.cmo)
@echo "Linking $@"
@@ -90,7 +103,7 @@ CLIGHTGEN_OBJS:=$(shell $(MODORDER) exportclight/Clightgen.cmx)
clightgen: $(CLIGHTGEN_OBJS)
@echo "Linking $@"
- @$(OCAMLOPT) -o $@ $(LIBS) $+
+ @$(OCAMLOPT) -o $@ $(LIBS) $(LINK_OPT) $+
clightgen.byte: $(CLIGHTGEN_OBJS:.cmx=.cmo)
@echo "Linking $@"
diff --git a/VERSION b/VERSION
index 0384983c..368d0007 100644
--- a/VERSION
+++ b/VERSION
@@ -1,3 +1,3 @@
-version=2.7.1
+version=3.0
buildnr=
tag=
diff --git a/arm/TargetPrinter.ml b/arm/TargetPrinter.ml
index cb379f26..6f1cb6c1 100644
--- a/arm/TargetPrinter.ml
+++ b/arm/TargetPrinter.ml
@@ -13,7 +13,6 @@
(* Printing ARM assembly code in asm syntax *)
open Printf
-open !Datatypes
open Camlcoq
open Sections
open AST
diff --git a/backend/CMparser.mly b/backend/CMparser.mly
index 94b50810..64943f0b 100644
--- a/backend/CMparser.mly
+++ b/backend/CMparser.mly
@@ -17,7 +17,7 @@
including function calls in expressions, matches, while statements, etc. */
%{
-open !Datatypes
+open Datatypes
open Camlcoq
open BinNums
open Integers
diff --git a/backend/PrintAsm.ml b/backend/PrintAsm.ml
index 9292745d..1f100b7e 100644
--- a/backend/PrintAsm.ml
+++ b/backend/PrintAsm.ml
@@ -13,7 +13,6 @@
open AST
open Camlcoq
-open !Datatypes
open DwarfPrinter
open PrintAsmaux
open Printf
diff --git a/backend/PrintLTL.ml b/backend/PrintLTL.ml
index a0a08218..d0557073 100644
--- a/backend/PrintLTL.ml
+++ b/backend/PrintLTL.ml
@@ -17,7 +17,6 @@ open Camlcoq
open Datatypes
open Maps
open AST
-open !Locations
open LTL
open PrintAST
open PrintOp
@@ -34,17 +33,17 @@ let rec mregs pp = function
let slot pp (sl, ofs, ty) =
match sl with
- | Local ->
+ | Locations.Local ->
fprintf pp "local(%ld,%s)" (camlint_of_coqint ofs) (name_of_type ty)
- | Incoming ->
+ | Locations.Incoming ->
fprintf pp "incoming(%ld,%s)" (camlint_of_coqint ofs) (name_of_type ty)
- | Outgoing ->
+ | Locations.Outgoing ->
fprintf pp "outgoing(%ld,%s)" (camlint_of_coqint ofs) (name_of_type ty)
let loc pp l =
match l with
- | R r -> mreg pp r
- | S(sl, ofs, ty) -> slot pp (sl, ofs, ty)
+ | Locations.R r -> mreg pp r
+ | Locations.S(sl, ofs, ty) -> slot pp (sl, ofs, ty)
let rec locs pp = function
| [] -> ()
diff --git a/backend/PrintXTL.ml b/backend/PrintXTL.ml
index 31273f97..cc1f7d49 100644
--- a/backend/PrintXTL.ml
+++ b/backend/PrintXTL.ml
@@ -17,7 +17,6 @@ open Camlcoq
open Datatypes
open Maps
open AST
-open !Locations
open PrintAST
open PrintOp
open XTL
@@ -36,15 +35,15 @@ let short_name_of_type = function
| Tany64 -> 'd'
let loc pp = function
- | R r -> mreg pp r
- | S(Local, ofs, ty) ->
+ | Locations.R r -> mreg pp r
+ | Locations.S(Locations.Local, ofs, ty) ->
fprintf pp "L%c%ld" (short_name_of_type ty) (camlint_of_coqint ofs)
- | S(Incoming, ofs, ty) ->
+ | Locations.S(Locations.Incoming, ofs, ty) ->
fprintf pp "I%c%ld" (short_name_of_type ty) (camlint_of_coqint ofs)
- | S(Outgoing, ofs, ty) ->
+ | Locations.S(Locations.Outgoing, ofs, ty) ->
fprintf pp "O%c%ld" (short_name_of_type ty) (camlint_of_coqint ofs)
-let current_alloc = ref (None: (var -> loc) option)
+let current_alloc = ref (None: (var -> Locations.loc) option)
let current_liveness = ref (None: VSet.t PMap.t option)
let reg pp r ty =
diff --git a/backend/Regalloc.ml b/backend/Regalloc.ml
index 200d0237..a4710cb0 100644
--- a/backend/Regalloc.ml
+++ b/backend/Regalloc.ml
@@ -471,7 +471,7 @@ let rec dce_block blk after =
let dead_code_elimination f liveness =
{ f with fn_code =
- PTree.map (fun pc blk -> Datatypes.snd(dce_block blk (PMap.get pc liveness)))
+ PTree.map (fun pc blk -> snd(dce_block blk (PMap.get pc liveness)))
f.fn_code }
@@ -1171,16 +1171,15 @@ and success f alloc =
end;
f'
-open !Errors
let regalloc f =
init_trace();
reset_temps();
let f1 = Splitting.rename_function f in
match RTLtyping.type_function f1 with
- | Error msg ->
- Errors.Error(MSG (coqstring_of_camlstring "RTL code after splitting is ill-typed:") :: msg)
- | OK tyenv ->
+ | Errors.Error msg ->
+ Errors.Error(Errors.MSG (coqstring_of_camlstring "RTL code after splitting is ill-typed:") :: msg)
+ | Errors.OK tyenv ->
let f2 = function_of_RTL_function f1 tyenv in
let liveness = liveness_analysis f2 in
let f3 = dead_code_elimination f2 liveness in
@@ -1189,12 +1188,12 @@ let regalloc f =
PrintXTL.print_function !pp f3
end;
try
- OK(first_round f3 liveness)
+ Errors.OK(first_round f3 liveness)
with
| Timeout ->
- Error(msg (coqstring_of_camlstring "Spilling fails to converge"))
+ Errors.Error(Errors.msg (coqstring_of_camlstring "Spilling fails to converge"))
| Type_error_at pc ->
- Error [MSG(coqstring_of_camlstring "Ill-typed XTL code at PC ");
- POS pc]
+ Errors.Error [Errors.MSG(coqstring_of_camlstring "Ill-typed XTL code at PC ");
+ Errors.POS pc]
| Bad_LTL ->
- Error(msg (coqstring_of_camlstring "Bad LTL after spilling"))
+ Errors.Error(Errors.msg (coqstring_of_camlstring "Bad LTL after spilling"))
diff --git a/cfrontend/C2C.ml b/cfrontend/C2C.ml
index 439cc584..6a33c48d 100644
--- a/cfrontend/C2C.ml
+++ b/cfrontend/C2C.ml
@@ -13,20 +13,13 @@
(* *)
(* *********************************************************************)
-open Printf
-
open C
-open Env
-open Builtins
open Camlcoq
-open AST
-open Values
-open !Ctypes
-open !Cop
-open !Csyntax
-open !Initializers
open Floats
+open Values
+open Ctypes
+open Csyntax
(** ** Extracting information about global variables from their atom *)
@@ -114,8 +107,8 @@ let currentLocation = ref Cutil.no_loc
let updateLoc l = currentLocation := l
-let error msg =
- Cerrors.error !currentLocation "%s" msg
+let error fmt =
+ Cerrors.error !currentLocation fmt
let unsupported msg =
Cerrors.error !currentLocation "unsupported feature: %s" msg
@@ -133,8 +126,8 @@ let string_of_errmsg msg =
(** ** The builtin environment *)
let builtins_generic = {
- typedefs = [];
- functions = [
+ Builtins.typedefs = [];
+ Builtins.functions = [
(* Floating-point absolute value *)
"__builtin_fabs",
(TFloat(FDouble, []), [TFloat(FDouble, [])], false);
@@ -266,8 +259,22 @@ let builtins_generic = {
(* Add processor-dependent builtins *)
let builtins =
- { typedefs = builtins_generic.typedefs @ CBuiltins.builtins.typedefs;
- functions = builtins_generic.functions @ CBuiltins.builtins.functions }
+ Builtins.({ typedefs = builtins_generic.typedefs @ CBuiltins.builtins.typedefs;
+ functions = builtins_generic.Builtins.functions @ CBuiltins.builtins.functions })
+
+(** ** The known attributes *)
+
+let attributes = [
+ (* type-related *)
+ ("aligned", Cutil.Attr_type);
+ (* struct-related *)
+ ("packed", Cutil.Attr_struct);
+ (* function-related *)
+ ("noreturn", Cutil.Attr_function);
+ (* name-related *)
+ ("section", Cutil.Attr_name)
+]
+
(** ** Functions used to handle string literals *)
@@ -302,8 +309,8 @@ let global_for_string s id =
init := AST.Init_int8(Z.of_uint(Char.code c)) :: !init in
add_char '\000';
for i = String.length s - 1 downto 0 do add_char s.[i] done;
- (id, Gvar {gvar_info = typeStringLiteral s; gvar_init = !init;
- gvar_readonly = true; gvar_volatile = false})
+ (id, AST.Gvar { AST.gvar_info = typeStringLiteral s; AST.gvar_init = !init;
+ AST.gvar_readonly = true; AST.gvar_volatile = false})
let name_for_wide_string_literal s =
try
@@ -343,7 +350,7 @@ let global_for_wide_string s id =
init := init_of_char(Z.of_uint64 c) :: !init in
List.iter add_char s;
add_char 0L;
- (id, Gvar {gvar_info = typeWideStringLiteral s; gvar_init = List.rev !init;
+ AST.(id, Gvar { gvar_info = typeWideStringLiteral s; gvar_init = List.rev !init;
gvar_readonly = true; gvar_volatile = false})
let globals_for_strings globs =
@@ -381,7 +388,7 @@ let make_builtin_memcpy args =
if not (Z.eq (Z.modulo sz1 al1) Z.zero) then
error "alignment argument of '__builtin_memcpy_aligned' must be a divisor of the size";
(* Issue #28: must decay array types to pointer types *)
- Ebuiltin(EF_memcpy(sz1, al1),
+ Ebuiltin( AST.EF_memcpy(sz1, al1),
Tcons(typeconv(typeof dst),
Tcons(typeconv(typeof src), Tnil)),
Econs(dst, Econs(src, Enil)), Tvoid)
@@ -398,7 +405,7 @@ let va_list_ptr e =
let make_builtin_va_arg_by_val helper ty ty_ret arg =
let ty_fun =
- Tfunction(Tcons(Tpointer(Tvoid, noattr), Tnil), ty_ret, cc_default) in
+ Tfunction(Tcons(Tpointer(Tvoid, noattr), Tnil), ty_ret, AST.cc_default) in
Ecast
(Ecall(Evalof(Evar(intern_string helper, ty_fun), ty_fun),
Econs(va_list_ptr arg, Enil),
@@ -408,7 +415,7 @@ let make_builtin_va_arg_by_val helper ty ty_ret arg =
let make_builtin_va_arg_by_ref helper ty arg =
let ty_fun =
Tfunction(Tcons(Tpointer(Tvoid, noattr), Tcons(Ctyping.size_t, Tnil)),
- Tpointer(Tvoid, noattr), cc_default) in
+ Tpointer(Tvoid, noattr), AST.cc_default) in
let ty_ptr =
Tpointer(ty, noattr) in
let call =
@@ -460,13 +467,13 @@ let convertAttr a =
let convertCallconv va unproto attr =
let sr =
Cutil.find_custom_attributes ["structreturn"; "__structreturn"] attr in
- { cc_vararg = va; cc_unproto = unproto; cc_structret = sr <> [] }
+ { AST.cc_vararg = va; cc_unproto = unproto; cc_structret = sr <> [] }
(** Types *)
let convertIkind k a : coq_type =
match k with
- | C.IBool -> Tint (IBool, Unsigned, a)
+ | C.IBool -> Tint (Ctypes.IBool, Unsigned, a)
| C.IChar -> Tint (I8, (if Machine.((!config).char_signed)
then Signed else Unsigned), a)
| C.ISChar -> Tint (I8, Signed, a)
@@ -532,7 +539,7 @@ let rec convertTyp env t =
| C.TNamed _ ->
convertTyp env (Cutil.unroll env t)
| C.TStruct(id, a) ->
- Tstruct(intern_string id.name, convertAttr a)
+ Ctypes.Tstruct(intern_string id.name, convertAttr a)
| C.TUnion(id, a) ->
Tunion(intern_string id.name, convertAttr a)
| C.TEnum(id, a) ->
@@ -565,7 +572,7 @@ let convertCompositedef env su id attr members =
| C.Union -> TUnion (id,attr) in
Debug.set_composite_size id su (Cutil.sizeof env t);
Composite(intern_string id.name,
- begin match su with C.Struct -> Struct | C.Union -> Union end,
+ begin match su with C.Struct -> Ctypes.Struct | C.Union -> Ctypes.Union end,
List.map (convertField env) members,
convertAttr attr)
@@ -660,7 +667,7 @@ let ezero = Eval(Vint(coqint_of_camlint 0l), type_int32s)
let ewrap = function
| Errors.OK e -> e
| Errors.Error msg ->
- error ("retyping error: " ^ string_of_errmsg msg); ezero
+ error "retyping error: %s" (string_of_errmsg msg); ezero
let rec convertExpr env e =
match e.edesc with
@@ -693,13 +700,13 @@ let rec convertExpr env e =
Ctyping.ealignof (convertTyp env ty1)
| C.EUnop(C.Ominus, e1) ->
- ewrap (Ctyping.eunop Oneg (convertExpr env e1))
+ ewrap (Ctyping.eunop Cop.Oneg (convertExpr env e1))
| C.EUnop(C.Oplus, e1) ->
convertExpr env e1
| C.EUnop(C.Olognot, e1) ->
- ewrap (Ctyping.eunop Onotbool (convertExpr env e1))
+ ewrap (Ctyping.eunop Cop.Onotbool (convertExpr env e1))
| C.EUnop(C.Onot, e1) ->
- ewrap (Ctyping.eunop Onotint (convertExpr env e1))
+ ewrap (Ctyping.eunop Cop.Onotint (convertExpr env e1))
| C.EUnop(C.Oaddrof, e1) ->
ewrap (Ctyping.eaddrof (convertLvalue env e1))
| C.EUnop(C.Opreincr, e1) ->
@@ -793,7 +800,7 @@ let rec convertExpr env e =
| [] -> assert false (* catched earlier *) in
let targs2 = convertTypArgs env [] args2 in
Ebuiltin(
- EF_debug(P.of_int64 kind, intern_string text,
+ AST.EF_debug(P.of_int64 kind, intern_string text,
typlist_of_typelist targs2),
targs2, convertExprList env args2, convertTyp env e.etyp)
@@ -802,7 +809,7 @@ let rec convertExpr env e =
| {edesc = C.EConst(CStr txt)} :: args1 ->
let targs1 = convertTypArgs env [] args1 in
Ebuiltin(
- EF_annot(coqstring_of_camlstring txt, typlist_of_typelist targs1),
+ AST.EF_annot(coqstring_of_camlstring txt, typlist_of_typelist targs1),
targs1, convertExprList env args1, convertTyp env e.etyp)
| _ ->
error "argument 1 of '__builtin_annot' must be a string literal";
@@ -814,7 +821,7 @@ let rec convertExpr env e =
| [ {edesc = C.EConst(CStr txt)}; arg ] ->
let targ = convertTyp env
(Cutil.default_argument_conversion env arg.etyp) in
- Ebuiltin(EF_annot_val(coqstring_of_camlstring txt, typ_of_type targ),
+ Ebuiltin(AST.EF_annot_val(coqstring_of_camlstring txt, typ_of_type targ),
Tcons(targ, Tnil), convertExprList env [arg],
convertTyp env e.etyp)
| _ ->
@@ -826,7 +833,7 @@ let rec convertExpr env e =
make_builtin_memcpy (convertExprList env args)
| C.ECall({edesc = C.EVar {name = "__builtin_fabs"}}, [arg]) ->
- ewrap (Ctyping.eunop Oabsfloat (convertExpr env arg))
+ ewrap (Ctyping.eunop Cop.Oabsfloat (convertExpr env arg))
| C.ECall({edesc = C.EVar {name = "__builtin_va_start"}} as fn, [arg]) ->
Ecall(convertExpr env fn,
@@ -842,7 +849,7 @@ let rec convertExpr env e =
| C.ECall({edesc = C.EVar {name = "__builtin_va_copy"}}, [arg1; arg2]) ->
let dst = convertExpr env arg1 in
let src = convertExpr env arg2 in
- Ebuiltin(EF_memcpy(Z.of_uint CBuiltins.size_va_list, Z.of_uint 4),
+ Ebuiltin( AST.EF_memcpy(Z.of_uint CBuiltins.size_va_list, Z.of_uint 4),
Tcons(Tpointer(Tvoid, noattr),
Tcons(Tpointer(Tvoid, noattr), Tnil)),
Econs(va_list_ptr dst, Econs(va_list_ptr src, Enil)),
@@ -854,8 +861,8 @@ let rec convertExpr env e =
and tres = convertTyp env e.etyp in
let sg =
signature_of_type targs tres
- {cc_vararg = true; cc_unproto = false; cc_structret = false} in
- Ebuiltin(EF_external(coqstring_of_camlstring "printf", sg),
+ { AST.cc_vararg = true; cc_unproto = false; cc_structret = false} in
+ Ebuiltin( AST.EF_external(coqstring_of_camlstring "printf", sg),
targs, convertExprList env args, tres)
| C.ECall(fn, args) ->
@@ -886,7 +893,7 @@ and convertLvalue env e =
ewrap (Ctyping.efield !comp_env e3' (intern_string id))
| C.EBinop(C.Oindex, e1, e2, _) ->
let e1' = convertExpr env e1 and e2' = convertExpr env e2 in
- let e3' = ewrap (Ctyping.ebinop Oadd e1' e2') in
+ let e3' = ewrap (Ctyping.ebinop Cop.Oadd e1' e2') in
ewrap (Ctyping.ederef e3')
| _ ->
error "illegal lvalue"; ezero
@@ -909,8 +916,8 @@ let convertAsm loc env txt outputs inputs clobber =
let e =
let tinputs = convertTypArgs env [] inputs' in
let toutput = convertTyp env ty_res in
- Ebuiltin(EF_inline_asm(coqstring_of_camlstring txt',
- signature_of_type tinputs toutput cc_default,
+ Ebuiltin( AST.EF_inline_asm(coqstring_of_camlstring txt',
+ signature_of_type tinputs toutput AST.cc_default,
clobber'),
tinputs,
convertExprList env inputs',
@@ -982,7 +989,7 @@ let rec contains_case s =
let swrap = function
| Errors.OK s -> s
| Errors.Error msg ->
- error ("retyping error: " ^ string_of_errmsg msg); Csyntax.Sskip
+ error "retyping error: %s" (string_of_errmsg msg); Csyntax.Sskip
let rec convertStmt env s =
updateLoc s.sloc;
@@ -1010,9 +1017,9 @@ let rec convertStmt env s =
(convertStmt env s1) te
(convertStmt env s2) (convertStmt env s3))
| C.Sbreak ->
- Sbreak
+ Csyntax.Sbreak
| C.Scontinue ->
- Scontinue
+ Csyntax.Scontinue
| C.Sswitch(e, s1) ->
let (init, cases) = groupSwitch (flattenSwitch s1) in
let rec init_debug s =
@@ -1029,25 +1036,25 @@ let rec convertStmt env s =
swrap (Ctyping.sswitch te
(convertSwitch env (is_int64 env e.etyp) cases))
| C.Slabeled(C.Slabel lbl, s1) ->
- Slabel(intern_string lbl, convertStmt env s1)
+ Csyntax.Slabel(intern_string lbl, convertStmt env s1)
| C.Slabeled(C.Scase _, _) ->
- unsupported "'case' statement not in 'switch' statement"; Sskip
+ unsupported "'case' statement not in 'switch' statement"; Csyntax.Sskip
| C.Slabeled(C.Sdefault, _) ->
- unsupported "'default' statement not in 'switch' statement"; Sskip
+ unsupported "'default' statement not in 'switch' statement"; Csyntax.Sskip
| C.Sgoto lbl ->
- Sgoto(intern_string lbl)
+ Csyntax.Sgoto(intern_string lbl)
| C.Sreturn None ->
- Sreturn None
+ Csyntax.Sreturn None
| C.Sreturn(Some e) ->
- Sreturn(Some(convertExpr env e))
+ Csyntax.Sreturn(Some(convertExpr env e))
| C.Sblock _ ->
- unsupported "nested blocks"; Sskip
+ unsupported "nested blocks"; Csyntax.Sskip
| C.Sdecl _ ->
- unsupported "inner declarations"; Sskip
+ unsupported "inner declarations"; Csyntax.Sskip
| C.Sasm(attrs, txt, outputs, inputs, clobber) ->
if not !Clflags.option_finline_asm then
unsupported "inline 'asm' statement (consider adding option [-finline-asm])";
- Sdo (convertAsm s.sloc env txt outputs inputs clobber)
+ Csyntax.Sdo (convertAsm s.sloc env txt outputs inputs clobber)
and convertSwitch env is_64 = function
| [] ->
@@ -1100,11 +1107,11 @@ let convertFundef loc env fd =
Hashtbl.add decl_atom id'
{ a_storage = fd.fd_storage;
a_alignment = None;
- a_sections = Sections.for_function env id' fd.fd_ret;
+ a_sections = Sections.for_function env id' fd.fd_attrib;
a_access = Sections.Access_default;
a_inline = fd.fd_inline && not fd.fd_vararg; (* PR#15 *)
a_loc = loc };
- (id', Gfun(Ctypes.Internal
+ (id', AST.Gfun(Ctypes.Internal
{fn_return = ret;
fn_callconv = convertCallconv fd.fd_vararg false fd.fd_attrib;
fn_params = params;
@@ -1125,14 +1132,14 @@ let convertFundecl env (sto, id, ty, optinit) =
let id'' = coqstring_of_camlstring id.name in
let sg = signature_of_type args res cconv in
let ef =
- if id.name = "malloc" then EF_malloc else
- if id.name = "free" then EF_free else
- if Str.string_match re_runtime id.name 0 then EF_runtime(id'', sg) else
+ if id.name = "malloc" then AST.EF_malloc else
+ if id.name = "free" then AST.EF_free else
+ if Str.string_match re_runtime id.name 0 then AST.EF_runtime(id'', sg) else
if Str.string_match re_builtin id.name 0
- && List.mem_assoc id.name builtins.functions
- then EF_builtin(id'', sg)
- else EF_external(id'', sg) in
- (id', Gfun(Ctypes.External(ef, args, res, cconv)))
+ && List.mem_assoc id.name builtins.Builtins.functions
+ then AST.EF_builtin(id'', sg)
+ else AST.EF_external(id'', sg) in
+ (id', AST.Gfun(Ctypes.External(ef, args, res, cconv)))
(** Initializers *)
@@ -1141,16 +1148,16 @@ let rec convertInit env init =
| C.Init_single e ->
Initializers.Init_single (convertExpr env e)
| C.Init_array il ->
- Initializers.Init_array (convertInitList env (List.rev il) Init_nil)
+ Initializers.Init_array (convertInitList env (List.rev il) Initializers.Init_nil)
| C.Init_struct(_, flds) ->
- Initializers.Init_struct (convertInitList env (List.rev_map snd flds) Init_nil)
+ Initializers.Init_struct (convertInitList env (List.rev_map snd flds) Initializers.Init_nil)
| C.Init_union(_, fld, i) ->
Initializers.Init_union (intern_string fld.fld_name, convertInit env i)
and convertInitList env il accu =
match il with
| [] -> accu
- | i :: il' -> convertInitList env il' (Init_cons(convertInit env i, accu))
+ | i :: il' -> convertInitList env il' (Initializers.Init_cons(convertInit env i, accu))
let convertInitializer env ty i =
match Initializers.transl_init
@@ -1158,8 +1165,8 @@ let convertInitializer env ty i =
with
| Errors.OK init -> init
| Errors.Error msg ->
- error (sprintf "initializer element is not a compile-time constant (%s)"
- (string_of_errmsg msg)); []
+ error "initializer element is not a compile-time constant (%s)"
+ (string_of_errmsg msg); []
(** Global variable *)
@@ -1173,16 +1180,16 @@ let convertGlobvar loc env (sto, id, ty, optinit) =
let init' =
match optinit with
| None ->
- if sto = C.Storage_extern then [] else [Init_space sz]
+ if sto = C.Storage_extern then [] else [AST.Init_space sz]
| Some i ->
convertInitializer env ty i in
let (section, access) =
Sections.for_variable env id' ty (optinit <> None) in
if Z.gt sz (Z.of_uint64 0xFFFF_FFFFL) then
- error (sprintf "'%s' is too big (%s bytes)"
- id.name (Z.to_string sz));
+ error "'%s' is too big (%s bytes)"
+ id.name (Z.to_string sz);
if sto <> C.Storage_extern && Cutil.incomplete_type env ty then
- error (sprintf "'%s' has incomplete type" id.name);
+ error "'%s' has incomplete type" id.name;
Hashtbl.add decl_atom id'
{ a_storage = sto;
a_alignment = Some (Z.to_int al);
@@ -1192,7 +1199,7 @@ let convertGlobvar loc env (sto, id, ty, optinit) =
a_loc = loc };
let volatile = List.mem C.AVolatile attr in
let readonly = List.mem C.AConst attr && not volatile in
- (id', Gvar {gvar_info = ty'; gvar_init = init';
+ (id', AST.Gvar { AST.gvar_info = ty'; gvar_init = init';
gvar_readonly = readonly; gvar_volatile = volatile})
(** Convert a list of global declarations.
@@ -1257,7 +1264,7 @@ let rec translEnv env = function
| C.Gtypedef(id, ty) ->
Env.add_typedef env id ty
| C.Genumdef(id, attr, members) ->
- Env.add_enum env id {ei_members = members; ei_attr = attr}
+ Env.add_enum env id {Env.ei_members = members; ei_attr = attr}
| _ ->
env in
translEnv env' gl
@@ -1277,13 +1284,13 @@ let cleanupGlobals p =
match g.gdesc with
| C.Gfundef fd ->
if IdentSet.mem fd.fd_name !strong then
- error ("multiple definitions of " ^ fd.fd_name.name);
+ error "multiple definitions of %s" fd.fd_name.name;
strong := IdentSet.add fd.fd_name !strong
| C.Gdecl(Storage_extern, id, ty, init) ->
extern := IdentSet.add id !extern
| C.Gdecl(sto, id, ty, Some i) ->
if IdentSet.mem id !strong then
- error ("multiple definitions of " ^ id.name);
+ error "multiple definitions of %s" id.name;
strong := IdentSet.add id !strong
| C.Gdecl(sto, id, ty, None) ->
weak := IdentSet.add id !weak
@@ -1334,8 +1341,8 @@ let convertProgram p =
let typs = convertCompositedefs env [] p in
match build_composite_env typs with
| Errors.Error msg ->
- error (sprintf "incorrect struct or union definition: %s"
- (string_of_errmsg msg));
+ error "incorrect struct or union definition: %s"
+ (string_of_errmsg msg);
None
| Errors.OK ce ->
comp_env := ce;
@@ -1350,4 +1357,4 @@ let convertProgram p =
prog_comp_env = ce } in
if Cerrors.check_errors () then None else Some p'
with Env.Error msg ->
- error (Env.error_message msg); None
+ error "%s" (Env.error_message msg); None
diff --git a/cfrontend/CPragmas.ml b/cfrontend/CPragmas.ml
index 2a199ff8..d61af920 100644
--- a/cfrontend/CPragmas.ml
+++ b/cfrontend/CPragmas.ml
@@ -15,7 +15,6 @@
(* Handling of pragmas *)
-open Printf
open Camlcoq
(* #pragma section *)
@@ -43,9 +42,9 @@ let re_c_ident = Str.regexp "[A-Za-z_][A-Za-z_0-9]*$"
let process_use_section_pragma classname id =
if id = "," || id = ";" then () else begin
if not (Str.string_match re_c_ident id 0) then
- C2C.error (sprintf "bad identifier `%s' in #pragma use_section" id);
+ C2C.error "bad identifier `%s' in #pragma use_section" id;
if not (Sections.use_section_for (intern_string id) classname) then
- C2C.error (sprintf "unknown section name `%s'" classname)
+ C2C.error "unknown section name `%s'" classname
end
(* #pragma reserve_register *)
diff --git a/cfrontend/PrintClight.ml b/cfrontend/PrintClight.ml
index 7fa35f16..ecfaf0df 100644
--- a/cfrontend/PrintClight.ml
+++ b/cfrontend/PrintClight.ml
@@ -17,16 +17,15 @@
open Format
open Camlcoq
-open AST
open PrintAST
-open !Ctypes
+open Ctypes
open Cop
open PrintCsyntax
-open !Clight
+open Clight
(* Naming temporaries *)
-let temp_name (id: ident) = "$" ^ Z.to_string (Z.Zpos id)
+let temp_name (id: AST.ident) = "$" ^ Z.to_string (Z.Zpos id)
(* Declarator (identifier + type) -- reuse from PrintCsyntax *)
@@ -254,7 +253,7 @@ let print_function p id f =
let print_fundef p id fd =
match fd with
- | Ctypes.External((EF_external _ | EF_runtime _), args, res, cconv) ->
+ | Ctypes.External((AST.EF_external _ | AST.EF_runtime _), args, res, cconv) ->
fprintf p "extern %s;@ @ "
(name_cdecl (extern_atom id) (Tfunction(args, res, cconv)))
| Ctypes.External(_, _, _, _) ->
@@ -264,8 +263,8 @@ let print_fundef p id fd =
let print_globdef p (id, gd) =
match gd with
- | Gfun f -> print_fundef p id f
- | Gvar v -> print_globvar p id v (* from PrintCsyntax *)
+ | AST.Gfun f -> print_fundef p id f
+ | AST.Gvar v -> print_globvar p id v (* from PrintCsyntax *)
let print_program p prog =
fprintf p "@[<v 0>";
diff --git a/cfrontend/PrintCsyntax.ml b/cfrontend/PrintCsyntax.ml
index e3e259f7..6366906a 100644
--- a/cfrontend/PrintCsyntax.ml
+++ b/cfrontend/PrintCsyntax.ml
@@ -19,9 +19,9 @@ open Format
open Camlcoq
open Values
open AST
-open !Ctypes
+open Ctypes
open Cop
-open !Csyntax
+open Csyntax
let name_unop = function
| Onotbool -> "!"
@@ -87,11 +87,11 @@ let rec name_cdecl id ty =
match ty with
| Tvoid ->
"void" ^ name_optid id
- | Tint(sz, sg, a) ->
+ | Ctypes.Tint(sz, sg, a) ->
name_inttype sz sg ^ attributes a ^ name_optid id
- | Tfloat(sz, a) ->
+ | Ctypes.Tfloat(sz, a) ->
name_floattype sz ^ attributes a ^ name_optid id
- | Tlong(sg, a) ->
+ | Ctypes.Tlong(sg, a) ->
name_longtype sg ^ attributes a ^ name_optid id
| Tpointer(t, a) ->
let id' =
@@ -182,7 +182,7 @@ let print_typed_value p v ty =
fprintf p "%.15F" (camlfloat_of_coqfloat f)
| Vsingle f, _ ->
fprintf p "%.15Ff" (camlfloat_of_coqfloat32 f)
- | Vlong n, Tlong(Unsigned, _) ->
+ | Vlong n, Ctypes.Tlong(Unsigned, _) ->
fprintf p "%LuLLU" (camlint64_of_coqint n)
| Vlong n, _ ->
fprintf p "%LdLL" (camlint64_of_coqint n)
@@ -498,7 +498,7 @@ let print_globvar p id v =
fprintf p "@[<hov 2>%s = "
(name_cdecl name2 v.gvar_info);
begin match v.gvar_info, v.gvar_init with
- | (Tint _ | Tlong _ | Tfloat _ | Tpointer _ | Tfunction _),
+ | (Ctypes.Tint _ | Ctypes.Tlong _ | Ctypes.Tfloat _ | Tpointer _ | Tfunction _),
[i1] ->
print_init p i1
| _, il ->
@@ -543,8 +543,8 @@ let print_program p prog =
fprintf p "@[<v 0>";
List.iter (declare_composite p) prog.prog_types;
List.iter (define_composite p) prog.prog_types;
- List.iter (print_globdecl p) prog.prog_defs;
- List.iter (print_globdef p) prog.prog_defs;
+ List.iter (print_globdecl p) prog.Ctypes.prog_defs;
+ List.iter (print_globdef p) prog.Ctypes.prog_defs;
fprintf p "@]@."
let destination : string option ref = ref None
diff --git a/common/Sections.ml b/common/Sections.ml
index b792581f..1c2e8291 100644
--- a/common/Sections.ml
+++ b/common/Sections.ml
@@ -189,8 +189,7 @@ let for_variable env id ty init =
(* Determine sections for a function definition *)
-let for_function env id ty_res =
- let attr = Cutil.attributes_of_type env ty_res in
+let for_function env id attr =
let si_code =
try
(* 1- Section explicitly associated with #use_section *)
diff --git a/common/Sections.mli b/common/Sections.mli
index 8a13fb8a..b83b0bb4 100644
--- a/common/Sections.mli
+++ b/common/Sections.mli
@@ -47,5 +47,5 @@ val use_section_for: AST.ident -> string -> bool
val for_variable: Env.t -> AST.ident -> C.typ -> bool ->
section_name * access_mode
-val for_function: Env.t -> AST.ident -> C.typ -> section_name list
+val for_function: Env.t -> AST.ident -> C.attributes -> section_name list
val for_stringlit: unit -> section_name
diff --git a/cparser/Bitfields.ml b/cparser/Bitfields.ml
index dc630ad3..35da5d4e 100644
--- a/cparser/Bitfields.ml
+++ b/cparser/Bitfields.ml
@@ -17,9 +17,8 @@
(* Assumes: nothing. *)
-open Printf
open Machine
-open !C
+open C
open Cutil
open Transform
@@ -67,7 +66,9 @@ let is_signed_enum_bitfield env sid fld eid n =
else if List.for_all (fun (_, v, _) -> int_representable v n true) info.Env.ei_members
then true
else begin
- Cerrors.warning Cutil.no_loc Cerrors.Unnamed "not all values of type 'enum %s' can be represented in bit-field '%s' of struct '%s' (%d bits are not enough)" eid.name fld sid.C.name n;
+ Cerrors.warning Cutil.no_loc Cerrors.Unnamed
+ "not all values of type 'enum %s' can be represented in bit-field '%s' of struct '%s' (%d bits are not enough)"
+ eid.C.name fld sid.C.name n;
false
end
@@ -117,7 +118,7 @@ let rec transf_struct_members env id count = function
transf_struct_members env id count ml'
else begin
(* Create integer field of sufficient size for this bitfield group *)
- let carrier = sprintf "__bf%d" count in
+ let carrier = Printf.sprintf "__bf%d" count in
let carrier_ikind = unsigned_ikind_for_carrier nbits in
let carrier_typ = TInt(carrier_ikind, []) in
(* Enter each field with its bit position, size, signedness *)
@@ -148,7 +149,7 @@ let rec transf_union_members env id count = function
(match m.fld_bitfield with
| None -> m::transf_union_members env id count ms
| Some nbits ->
- let carrier = sprintf "__bf%d" count in
+ let carrier = Printf.sprintf "__bf%d" count in
let carrier_ikind = unsigned_ikind_for_carrier nbits in
let carrier_typ = TInt(carrier_ikind, []) in
let signed =
@@ -194,13 +195,17 @@ let right_shift_count bf =
(Int64.of_int (8 * !config.sizeof_int - bf.bf_size))
IInt
+let uintconst_hex v =
+ { edesc = EConst(CInt(v, IUInt, Printf.sprintf "0x%LXU" v));
+ etyp = TInt(IUInt, []) }
+
let insertion_mask bf =
let m =
Int64.shift_left
(Int64.pred (Int64.shift_left 1L bf.bf_size))
bf.bf_pos in
(* Give the mask an hexadecimal string representation, nicer to read *)
- {edesc = EConst(CInt(m, IUInt, sprintf "0x%LXU" m)); etyp = TInt(IUInt, [])}
+ uintconst_hex m
let eshift env op a b =
let ty = unary_conversion env a.etyp in
@@ -282,9 +287,7 @@ let bitfield_initializer bf i =
let m = Int64.pred (Int64.shift_left 1L bf.bf_size) in
let e_cast =
if bf.bf_bool then ecast (TInt(IBool,[])) e else e in
- let e_mask =
- {edesc = EConst(CInt(m, IUInt, sprintf "0x%LXU" m));
- etyp = TInt(IUInt, [])} in
+ let e_mask = uintconst_hex m in
let e_and =
{edesc = EBinop(Oand, e_cast, e_mask, TInt(IUInt,[]));
etyp = TInt(IUInt,[])} in
diff --git a/cparser/Cabs.v b/cparser/Cabs.v
index d087e8c7..b3e4ffda 100644
--- a/cparser/Cabs.v
+++ b/cparser/Cabs.v
@@ -142,6 +142,7 @@ with expression :=
(* Non-standard *)
| EXPR_ALIGNOF : expression -> expression
| TYPE_ALIGNOF : (list spec_elem * decl_type) -> expression
+ | BUILTIN_OFFSETOF : (list spec_elem * decl_type) -> list initwhat -> expression
with constant :=
(* The string is the textual representation of the constant in
diff --git a/cparser/Cerrors.ml b/cparser/Cerrors.ml
index 612980f1..dffd9c14 100644
--- a/cparser/Cerrors.ml
+++ b/cparser/Cerrors.ml
@@ -18,7 +18,18 @@
open Format
open Commandline
+(* Should errors be treated as fatal *)
let error_fatal = ref false
+
+(* Maximum number of errors, 0 means unlimited *)
+let max_error = ref 0
+
+(* Whether [-Woption] should be printed *)
+let diagnostics_show_option = ref true
+
+(* Test if color diagnostics are available by testing if stderr is a tty
+ and if the environment varibale TERM is set
+*)
let color_diagnostics =
let term = try Sys.getenv "TERM" with Not_found -> "" in
let activate = try
@@ -29,6 +40,11 @@ let color_diagnostics =
let num_errors = ref 0
let num_warnings = ref 0
+
+let error_limit_reached () =
+ let max_err = !max_error in
+ max_err <> 0 && !num_errors >= max_err - 1
+
let reset () = num_errors := 0; num_warnings := 0
exception Abort
@@ -73,6 +89,7 @@ type warning_type =
| CompCert_conformance
| Inline_asm_sdump
+(* List of active warnings *)
let active_warnings: warning_type list ref = ref [
Unnamed;
Unknown_attribute;
@@ -93,8 +110,10 @@ let active_warnings: warning_type list ref = ref [
Inline_asm_sdump;
]
+(* List of errors treated as warning *)
let error_warnings: warning_type list ref = ref []
+(* Conversion from warning type to string *)
let string_of_warning = function
| Unnamed -> ""
| Unknown_attribute -> "unknown-attributes"
@@ -117,22 +136,27 @@ let string_of_warning = function
| CompCert_conformance -> "compcert-conformance"
| Inline_asm_sdump -> "inline-asm-sdump"
+(* Activate the given warning *)
let activate_warning w () =
if not (List.mem w !active_warnings) then
active_warnings:=w::!active_warnings
+(* Deactivate the given warning*)
let deactivate_warning w () =
active_warnings:=List.filter ((<>) w) !active_warnings;
error_warnings:= List.filter ((<>) w) !error_warnings
+(* Activate error for warning *)
let warning_as_error w ()=
activate_warning w ();
if not (List.mem w !error_warnings) then
error_warnings := w::!error_warnings
+(* Deactivate error for warning *)
let warning_not_as_error w () =
error_warnings:= List.filter ((<>) w) !error_warnings
+(* Activate all warnings *)
let wall () =
active_warnings:=[
Unnamed;
@@ -157,6 +181,10 @@ let wall () =
Inline_asm_sdump;
]
+let wnothing () =
+ active_warnings :=[]
+
+(* Make all warnings an error *)
let werror () =
error_warnings:=[
Unnamed;
@@ -177,19 +205,29 @@ let werror () =
Return_type;
Literal_range;
Unknown_pragmas;
+ CompCert_conformance;
Inline_asm_sdump;
]
-
+(* Generate the warning key for the message *)
let key_of_warning w =
match w with
| Unnamed -> None
- | _ -> Some ("-W"^(string_of_warning w))
-
-let key_add_werror = function
- | None -> Some ("-Werror")
- | Some s -> Some ("-Werror,"^s)
+ | _ -> if !diagnostics_show_option then
+ Some ("-W"^(string_of_warning w))
+ else
+ None
+
+(* Add -Werror to the printed keys *)
+let key_add_werror w =
+ if !diagnostics_show_option then
+ match w with
+ | None -> Some ("-Werror")
+ | Some s -> Some ("-Werror,"^s)
+ else
+ None
+(* Lookup how to print the warning *)
let classify_warning w =
let key = key_of_warning w in
if List.mem w !active_warnings then
@@ -204,33 +242,63 @@ let classify_warning w =
else
SuppressedMsg,None
+(* Print color codes if color_diagnostics are enabled *)
let cprintf fmt c =
if !color_diagnostics then
fprintf fmt c
else
ifprintf fmt c
+(* Reset color codes *)
let rsc fmt =
cprintf fmt "\x1b[0m"
+(* BOLD *)
let bc fmt =
cprintf fmt "\x1b[1m"
+(* RED *)
let rc fmt =
cprintf fmt "\x1b[31;1m"
+(* MAGENTA *)
let mc fmt =
cprintf fmt "\x1b[35;1m"
+(* Print key (if available) and flush the formatter *)
let pp_key key fmt =
let key = match key with
| None -> ""
| Some s -> " ["^s^"]" in
fprintf fmt "%s%t@." key rsc
+(* Different loc output formats *)
+type loc_format =
+ | Default
+ | MSVC
+ | Vi
+
+let diagnostics_format : loc_format ref = ref Default
+
+(* Parse the option string *)
+let parse_loc_format s =
+ let s = String.sub s 21 ((String.length s) - 21) in
+ let loc_fmt = match s with
+ | "ccomp" -> Default
+ | "msvc" -> MSVC
+ | "vi" -> Vi
+ | s -> Printf.eprintf "Invalid value '%s' in '-fdiagnostics-format=%s'\n" s s; exit 2 in
+ diagnostics_format := loc_fmt
+
+(* Print the location or ccomp for the case of unknown loc *)
let pp_loc fmt (filename,lineno) =
if filename <> "" && lineno <> -10 && filename <> "cabs loc unknown" then
- fprintf fmt "%t%s:%d:%t " bc filename lineno rsc
+ match !diagnostics_format with
+ | Default -> fprintf fmt "%t%s:%d:%t " bc filename lineno rsc
+ | MSVC -> fprintf fmt "%t%s(%d):%t " bc filename lineno rsc
+ | Vi -> fprintf fmt "%t%s +%d:%t " bc filename lineno rsc
+ else
+ fprintf fmt "%tccomp:%t " bc rsc
let error key loc fmt =
incr num_errors;
@@ -257,7 +325,7 @@ let warning loc ty fmt =
| SuppressedMsg -> ifprintf err_formatter fmt
let error loc fmt =
- if !error_fatal then
+ if !error_fatal || error_limit_reached ()then
fatal_error None loc fmt
else
error None loc fmt
@@ -276,7 +344,7 @@ let error_option w =
let key = string_of_warning w in
[Exact ("-W"^key), Unit (activate_warning w);
Exact ("-Wno-"^key), Unit (deactivate_warning w);
- Exact ("-Werror="^key), Unit ( warning_as_error w);
+ Exact ("-Werror="^key), Unit (warning_as_error w);
Exact ("-Wno-error="^key), Unit ( warning_not_as_error w)]
let warning_options =
@@ -304,20 +372,50 @@ let warning_options =
Exact ("-fdiagnostics-color"), Ignore; (* Either output supports it or no color *)
Exact ("-fno-diagnostics-color"), Unset color_diagnostics;
Exact ("-Werror"), Unit werror;
- Exact ("-Wall"), Unit wall;]
-
-let warning_help = "Diagnostic options:\n\
-\ -Wall Enable all warnings\n\
-\ -W<warning> Enable the specific <warning>\n\
-\ -Wno-<warning> Disable the specific <warning>\n\
-\ -Werror Make all warnings into errors\n\
-\ -Werror=<warning> Turn <warning> into an error\n\
-\ -Wno-error=<warning> Turn <warning> into a warning even if -Werror is\n\
- specified\n\
-\ -Wfatal-errors Turn all errors into fatal errors aborting the compilation\n\
-\ -fdiagnostics-color Turn on colored diagnostics\n\
-\ -fno-diagnostics-color Turn of colored diagnostics\n"
+ Exact ("-Wall"), Unit wall;
+ Exact ("-w"), Unit wnothing;
+ longopt_int ("-fmax-errors") ((:=) max_error);
+ Exact("-fno-diagnostics-show-option"),Unset diagnostics_show_option;
+ Exact("-fdiagnostics-show-option"),Set diagnostics_show_option;
+ _Regexp("-fdiagnostics-format=\\(ccomp\\|msvc\\|vi\\)"),Self parse_loc_format;
+ ]
+
+let warning_help = {|Diagnostic options:
+ -Wall Enable all warnings
+ -W<warning> Enable the specific <warning>
+ -Wno-<warning> Disable the specific <warning>
+ -Werror Make all warnings into errors
+ -Werror=<warning> Turn <warning> into an error
+ -Wno-error=<warning> Turn <warning> into a warning even if -Werror is
+ specified
+ -Wfatal-errors Turn all errors into fatal errors aborting the compilation
+ -fdiagnostics-color Turn on colored diagnostics
+ -fno-diagnostics-color Turn of colored diagnostics
+ -fmax-errors=<n> Maximum number of errors to report
+ -fdiagnostics-show-option Print the option name with mappable diagnostics
+ -fno-diagnostics-show-option Turn of printing of options with mappable
+ diagnostics
+|}
let raise_on_errors () =
if !num_errors > 0 then
raise Abort
+
+let crash exn =
+ if Version.buildnr <> "" && Version.tag <> "" then begin
+ let backtrace = Printexc.get_backtrace () in
+ eprintf "%tThis is CompCert, %s, Build:%s, Tag:%s%t\n"
+ bc Version.version Version.buildnr Version.tag rsc;
+ eprintf "Backtrace (please include this in your support request):\n%s"
+ backtrace;
+ eprintf "%tUncaught exception: %s.\n\
+\ Please report this problem to our support.\n\
+\ Error occurred in Build: %s, Tag: %s.\n%t"
+ rc (Printexc.to_string exn) Version.buildnr Version.tag rsc;
+ exit 2
+ end else begin
+ let backtrace = Printexc.get_backtrace ()
+ and exc = Printexc.to_string exn in
+ eprintf "Fatal error: uncaught exception %s\n%s" exc backtrace;
+ exit 2
+ end
diff --git a/cparser/Cerrors.mli b/cparser/Cerrors.mli
index 8501cfa0..816b12b6 100644
--- a/cparser/Cerrors.mli
+++ b/cparser/Cerrors.mli
@@ -72,3 +72,7 @@ val warning_options : (Commandline.pattern * Commandline.action) list
(** List of all options for diagnostics *)
val raise_on_errors : unit -> unit
+(** Raise [Abort] if an error was encountered *)
+
+val crash: exn -> unit
+(** Report the backtrace of the last exception and exit *)
diff --git a/cparser/Cprint.ml b/cparser/Cprint.ml
index 2a110104..0a927873 100644
--- a/cparser/Cprint.ml
+++ b/cparser/Cprint.ml
@@ -142,13 +142,14 @@ let rec dcl ?(pp_indication=true) pp ty n =
dcl pp t n'
| TArray(t, sz, a) ->
let n' pp =
+ n pp;
begin match a with
- | [] -> n pp
- | _ -> fprintf pp " (%a%t)" attributes a n
+ | [] -> fprintf pp "["
+ | _ -> fprintf pp "[%a " attributes a
end;
begin match sz with
- | None -> fprintf pp "[]"
- | Some i -> fprintf pp "[%Ld]" i
+ | None -> fprintf pp "]"
+ | Some i -> fprintf pp "%Ld]" i
end in
dcl pp t n'
| TFun(tres, args, vararg, a) ->
@@ -156,10 +157,8 @@ let rec dcl ?(pp_indication=true) pp ty n =
dcl pp ty
(fun pp -> fprintf pp " %a" ident id) in
let n' pp =
- begin match a with
- | [] -> n pp
- | _ -> fprintf pp " (%a%t)" attributes a n
- end;
+ attributes pp a;
+ n pp;
fprintf pp "(";
if pp_indication then fprintf pp "@[<hov 0>";
begin match args with
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index f5d5c425..2334966c 100644
--- a/cparser/Cutil.ml
+++ b/cparser/Cutil.ml
@@ -37,6 +37,15 @@ module IdentMap = Map.Make(Ident)
(* Operations on attributes *)
+(* Normalize the name of an attribute, removing starting and trailing '__' *)
+
+let re_normalize_attrname = Str.regexp "^__\\(.*\\)__$"
+
+let normalize_attrname a =
+ if Str.string_match re_normalize_attrname a 0
+ then Str.matched_group 1 a
+ else a
+
(* Lists of attributes are kept sorted in increasing order *)
let rec add_attributes (al1: attributes) (al2: attributes) =
@@ -83,18 +92,35 @@ let rec remove_custom_attributes (names: string list) (al: attributes) =
| a :: tl ->
a :: remove_custom_attributes names tl
+(* Classification of attributes *)
+
+type attribute_class =
+ | Attr_name (* Attribute applies to the names being declared *)
+ | Attr_type (* Attribute applies to types *)
+ | Attr_struct (* Attribute applies to struct, union and enum *)
+ | Attr_function (* Attribute applies to function types and decls *)
+ | Attr_unknown (* Unknown attribute *)
+
+let attr_class : (string, attribute_class) Hashtbl.t = Hashtbl.create 32
+
+let declare_attribute name cls =
+ Hashtbl.replace attr_class (normalize_attrname name) cls
+
+let declare_attributes l =
+ List.iter (fun (n,c) -> declare_attribute n c) l
+
+let class_of_attribute = function
+ | AConst | AVolatile | ARestrict | AAlignas _ -> Attr_type
+ | Attr(name, args) ->
+ try Hashtbl.find attr_class (normalize_attrname name)
+ with Not_found -> Attr_unknown
+
(* Is an attribute a ISO C standard attribute? *)
let attr_is_standard = function
| AConst | AVolatile | ARestrict -> true
| AAlignas _ | Attr _ -> false
-(* Is an attribute type-related (true) or variable-related (false)? *)
-
-let attr_is_type_related = function
- | Attr(("packed" | "__packed__"), _) -> true
- | _ -> false
-
(* Is an attribute applicable to a whole array (true) or only to
array elements (false)? *)
@@ -533,6 +559,25 @@ let sizeof_struct env members =
end
in sizeof_rec 0 members
+(* Compute the offset of a struct member *)
+let offsetof env ty field =
+ let rec sub acc name = function
+ | [] -> List.rev acc
+ | m::rem -> if m.fld_name = name then
+ List.rev acc
+ else
+ sub (m::acc) name rem in
+ match unroll env ty with
+ | TStruct (id,_) ->
+ let str = Env.find_struct env id in
+ let pre = sub [] field.fld_name str.ci_members in
+ begin match sizeof_struct env pre, alignof env field.fld_typ with
+ | Some s, Some a ->
+ align s a
+ | _ -> assert false end
+ | TUnion _ -> 0
+ | _ -> assert false
+
(* Simplified version to compute offsets on structs without bitfields *)
let struct_layout env members =
let rec struct_layout_rec mem ofs = function
diff --git a/cparser/Cutil.mli b/cparser/Cutil.mli
index edff9ee1..9d053717 100644
--- a/cparser/Cutil.mli
+++ b/cparser/Cutil.mli
@@ -52,15 +52,32 @@ val erase_attributes_type : Env.t -> typ -> typ
(* Erase the attributes of the given type. *)
val change_attributes_type : Env.t -> (attributes -> attributes) -> typ -> typ
(* Apply the given function to the top-level attributes of the given type *)
-val attr_is_type_related: attribute -> bool
- (* Is an attribute type-related (true) or variable-related (false)? *)
+
+type attribute_class =
+ | Attr_name (* Attribute applies to the names being declared *)
+ | Attr_type (* Attribute applies to types *)
+ | Attr_struct (* Attribute applies to struct, union and enum *)
+ | Attr_function (* Attribute applies to function types and decls *)
+ | Attr_unknown (* Not a declared attribute *)
+
+val declare_attribute: string -> attribute_class -> unit
+val declare_attributes: (string * attribute_class) list -> unit
+ (* Register the given custom attribute names with the given classes. *)
+val class_of_attribute: attribute -> attribute_class
+ (* Return the class of the given attribute. Standard attributes
+ have class [Attr_type]. Custom attributes have the class that
+ was given to them using [declare_attribute], or [Attr_unknown]
+ if not declared. *)
val attr_inherited_by_members: attribute -> bool
(* Is an attribute of a composite inherited by members of the composite? *)
+
+
val strip_attributes_type: typ -> attribute list -> typ
(* Remove all attributes from the given type that are not contained in the list *)
val strip_last_attribute: typ -> attribute option * typ
(* Remove the last top level attribute and return it *)
+
(* Type compatibility *)
type attr_handling =
@@ -111,6 +128,12 @@ val composite_info_def:
Env.t -> struct_or_union -> attributes -> field list -> Env.composite_info
val struct_layout:
Env.t -> field list -> (string * int) list
+val offsetof:
+ Env.t -> typ -> field -> int
+(* Compute the offset of a struct member *)
+val cautious_mul: int64 -> int -> int option
+(* Overflow-avoiding multiplication of an int64 and an int, with
+ result in type int. *)
(* Type classification functions *)
diff --git a/cparser/Elab.ml b/cparser/Elab.ml
index 1bfc2d11..ea85ad04 100644
--- a/cparser/Elab.ml
+++ b/cparser/Elab.ml
@@ -17,14 +17,11 @@
(* Numbered references are to sections of the ISO C99 standard *)
-open Format
open Machine
-open !Cabs
-open Cabshelper
-open !C
+open Cabs
+open C
open Cerrors
open Cutil
-open Env
(** * Utility functions *)
@@ -42,7 +39,7 @@ let warning loc =
let print_typ env fmt ty =
match ty with
| TNamed _ ->
- Format.fprintf fmt "'%a' (aka '%a')" Cprint.typ_raw ty Cprint.typ_raw (Cutil.unroll env ty)
+ Format.fprintf fmt "'%a' (aka '%a')" Cprint.typ_raw ty Cprint.typ_raw (unroll env ty)
| _ -> Format.fprintf fmt "'%a'" Cprint.typ_raw ty
(* Error reporting for Env functions *)
@@ -155,11 +152,11 @@ let enter_or_refine_ident local loc env s sto ty =
if redef Env.lookup_typedef env s then
error loc "redefinition of '%s' as different kind of symbol" s;
begin match previous_def Env.lookup_ident env s with
- | Some(id, II_ident(old_sto, old_ty))
+ | Some(id, Env.II_ident(old_sto, old_ty))
when local && Env.in_current_scope env id
&& not (sto = Storage_extern && old_sto = Storage_extern) ->
error loc "redefinition of '%s'" s
- | Some(id, II_enum _) when Env.in_current_scope env id ->
+ | Some(id, Env.II_enum _) when Env.in_current_scope env id ->
error loc "redefinition of '%s' as different kind of symbol" s;
| _ ->
()
@@ -174,7 +171,7 @@ let enter_or_refine_ident local loc env s sto ty =
prior declarations of this variable with internal or external linkage.
The variable has linkage. *)
match previous_def Env.lookup_ident !top_environment s with
- | Some(id, II_ident(old_sto, old_ty)) ->
+ | Some(id, Env.II_ident(old_sto, old_ty)) ->
let (new_sto, new_ty) =
combine_toplevel_definitions loc env s old_sto old_ty sto ty in
(id, new_sto, Env.add_ident env id new_sto new_ty, new_ty, true)
@@ -389,8 +386,8 @@ let elab_attr_arg loc env a =
| VARIABLE s ->
begin try
match Env.lookup_ident env s with
- | (id, II_ident(sto, ty)) -> AIdent s
- | (id, II_enum v) -> AInt v
+ | (id, Env.II_ident(sto, ty)) -> AIdent s
+ | (id, Env.II_enum v) -> AInt v
with Env.Error _ ->
AIdent s
end
@@ -477,13 +474,19 @@ let typespec_rank = function (* Don't change this *)
let typespec_order t1 t2 = compare (typespec_rank t1) (typespec_rank t2)
-(* Is a specifier an anonymous struct/union in the sense of ISO C2011? *)
+(* Auxiliary for type declarator elaboration. Remove the non-type-related
+ attributes from the given type and return those attributes separately.
+ If the type is a function type, keep function-related attributes
+ attached to the type. *)
-let is_anonymous_composite spec =
- List.exists
- (function SpecType(Tstruct_union(_, None, Some _, _)) -> true
- | _ -> false)
- spec
+let get_nontype_attrs env ty =
+ let to_be_removed a =
+ match class_of_attribute a with
+ | Attr_type -> false
+ | Attr_function -> not (is_function_type env ty)
+ | _ -> true in
+ let nta = List.filter to_be_removed (attributes_of_type env ty) in
+ (remove_attributes_type env nta ty, nta)
(* Elaboration of a type specifier. Returns 5-tuple:
(storage class, "inline" flag, "typedef" flag, elaborated type, new env)
@@ -528,14 +531,15 @@ let rec elab_specifier keep_ty ?(only = false) loc env specifier =
let simple ty = (!sto, !inline, !noreturn ,!typedef, add_attributes_type !attr ty, env) in
- (* As done in CIL, partition !attr into type-related attributes,
+ (* As done in CIL, partition !attr into struct-related attributes,
which are returned, and other attributes, which are left in !attr.
- The returned type-related attributes are applied to the
+ The returned struct-related attributes are applied to the
struct/union/enum being defined.
- The leftover non-type-related attributes will be applied
+ The leftover non-struct-related attributes will be applied
to the variable being defined. *)
- let get_type_attrs () =
- let (ta, nta) = List.partition attr_is_type_related !attr in
+ let get_struct_attrs () =
+ let (ta, nta) =
+ List.partition (fun a -> class_of_attribute a = Attr_struct) !attr in
attr := nta;
ta in
@@ -594,21 +598,21 @@ let rec elab_specifier keep_ty ?(only = false) loc env specifier =
| [Cabs.Tstruct_union(STRUCT, id, optmembers, a)] ->
let a' =
- add_attributes (get_type_attrs()) (elab_attributes env a) in
+ add_attributes (get_struct_attrs()) (elab_attributes env a) in
let (id', env') =
elab_struct_or_union keep_ty only Struct loc id optmembers a' env in
(!sto, !inline, !noreturn, !typedef, TStruct(id', !attr), env')
| [Cabs.Tstruct_union(UNION, id, optmembers, a)] ->
let a' =
- add_attributes (get_type_attrs()) (elab_attributes env a) in
+ add_attributes (get_struct_attrs()) (elab_attributes env a) in
let (id', env') =
elab_struct_or_union keep_ty only Union loc id optmembers a' env in
(!sto, !inline, !noreturn, !typedef, TUnion(id', !attr), env')
| [Cabs.Tenum(id, optmembers, a)] ->
let a' =
- add_attributes (get_type_attrs()) (elab_attributes env a) in
+ add_attributes (get_struct_attrs()) (elab_attributes env a) in
let (id', env') =
elab_enum only loc id optmembers a' env in
(!sto, !inline, !noreturn, !typedef, TEnum(id', !attr), env')
@@ -641,7 +645,8 @@ and elab_type_declarator keep_ty loc env ty kr_ok = function
| Cabs.JUSTBASE ->
((ty, None), env)
| Cabs.ARRAY(d, cv_specs, sz) ->
- let a = elab_cvspecs env cv_specs in
+ let (ty, a) = get_nontype_attrs env ty in
+ let a = add_attributes a (elab_cvspecs env cv_specs) in
let sz' =
match sz with
| None ->
@@ -659,22 +664,25 @@ and elab_type_declarator keep_ty loc env ty kr_ok = function
Some 1L in (* produces better error messages later *)
elab_type_declarator keep_ty loc env (TArray(ty, sz', a)) kr_ok d
| Cabs.PTR(cv_specs, d) ->
- let a = elab_cvspecs env cv_specs in
+ let (ty, a) = get_nontype_attrs env ty in
+ let a = add_attributes a (elab_cvspecs env cv_specs) in
elab_type_declarator keep_ty loc env (TPtr(ty, a)) kr_ok d
| Cabs.PROTO(d, (params, vararg)) ->
elab_return_type loc env ty;
+ let (ty, a) = get_nontype_attrs env ty in
let params',env' = elab_parameters keep_ty env params in
let env = if keep_ty then Env.add_types env env' else env in
- elab_type_declarator keep_ty loc env (TFun(ty, Some params', vararg, [])) kr_ok d
+ elab_type_declarator keep_ty loc env (TFun(ty, Some params', vararg, a)) kr_ok d
| Cabs.PROTO_OLD(d, params) ->
elab_return_type loc env ty;
+ let (ty, a) = get_nontype_attrs env ty in
match params with
| [] ->
- elab_type_declarator keep_ty loc env (TFun(ty, None, false, [])) kr_ok d
+ elab_type_declarator keep_ty loc env (TFun(ty, None, false, a)) kr_ok d
| _ ->
if not kr_ok || d <> Cabs.JUSTBASE then
fatal_error loc "illegal old-style K&R function definition";
- ((TFun(ty, None, false, []), Some params), env)
+ ((TFun(ty, None, false, a), Some params), env)
(* Elaboration of parameters in a prototype *)
@@ -748,12 +756,14 @@ and elab_init_name_group keep_ty loc env (spec, namelist) =
let a = elab_attributes env attr in
if inl && not (is_function_type env ty) then
error loc "'inline' can only appear on functions";
- if noret then begin
- warning loc Celeven_extension "_Noreturn functions are a C11 extension";
- if not (is_function_type env ty) then
- error loc "'_Noreturn' can only appear on functions";
- end;
- ((id, add_attributes_type a ty, init), env1) in
+ let a' =
+ if noret then begin
+ warning loc Celeven_extension "_Noreturn functions are a C11 extension";
+ if not (is_function_type env ty) then
+ error loc "'_Noreturn' can only appear on functions";
+ add_attributes [Attr("noreturn",[])] a
+ end else a in
+ ((id, add_attributes_type a' ty, init), env1) in
(mmap elab_one_name env' namelist, sto, tydef)
(* Elaboration of a field group *)
@@ -772,9 +782,6 @@ and elab_field_group keep_ty env (Field_group (spec, fieldlist, loc)) =
if sto <> Storage_default then
error loc "non-default storage in struct or union";
if fieldlist = [] then
- if is_anonymous_composite spec then
- warning loc Celeven_extension "anonymous structs/unions are a C11 extension"
- else
(* This should actually never be triggered, empty structs are captured earlier *)
warning loc Missing_declarations "declaration does not declare anything";
@@ -814,7 +821,7 @@ and elab_field_group keep_ty env (Field_group (spec, fieldlist, loc)) =
error loc "bit-field '%s' width not an integer constant" id;
None
end in
- let anon_composite = Cutil.is_anonymous_composite ty in
+ let anon_composite = is_anonymous_composite ty in
if id = "" && not anon_composite && optbitsize = None then
warning loc Missing_declarations "declaration does not declare anything";
{ fld_name = id; fld_typ = ty; fld_bitfield = optbitsize'; fld_anonymous = id = "" && anon_composite}
@@ -836,17 +843,15 @@ and elab_struct_or_union_info keep_ty kind loc env members attrs =
| [] -> ()
| fld::rest ->
if fld.fld_anonymous then begin
- let warn () =
- warning loc Celeven_extension "anonymous structs/unions are a C11 extension" in
let rest = match unroll env fld.fld_typ with
| TStruct (id,_) ->
- warn ();
+ warning loc Celeven_extension "anonymous structs/unions are a C11 extension";
let str = Env.find_struct env' id in
- str.ci_members@rest
+ str.Env.ci_members@rest
| TUnion (id,_) ->
- warn ();
+ warning loc Celeven_extension "anonymous structs/unions are a C11 extension";
let union = Env.find_union env' id in
- union.ci_members@rest
+ union.Env.ci_members@rest
| _ -> rest in
duplicate acc rest
end else if fld.fld_name <> "" then begin
@@ -894,21 +899,21 @@ and elab_struct_or_union keep_ty only kind loc tag optmembers attrs env =
and the composite was bound in another scope,
create a new incomplete composite instead via the case
"_, None" below. *)
- if ci.ci_kind <> kind then
+ if ci.Env.ci_kind <> kind then
fatal_error loc "use of '%s' with tag type that does not match previous declaration" tag;
warn_attrs();
(tag', env)
- | Some(tag', ({ci_sizeof = None} as ci)), Some members
+ | Some(tag', ({Env.ci_sizeof = None} as ci)), Some members
when Env.in_current_scope env tag' ->
- if ci.ci_kind <> kind then
+ if ci.Env.ci_kind <> kind then
error loc "use of '%s' with tag type that does not match previous declaration" tag;
(* finishing the definition of an incomplete struct or union *)
let (ci', env') = elab_struct_or_union_info keep_ty kind loc env members attrs in
(* Emit a global definition for it *)
- emit_elab env' loc (Gcompositedef(kind, tag', attrs, ci'.ci_members));
+ emit_elab env' loc (Gcompositedef(kind, tag', attrs, ci'.Env.ci_members));
(* Replace infos but keep same ident *)
(tag', Env.add_composite env' tag' ci')
- | Some(tag', {ci_sizeof = Some _}), Some _
+ | Some(tag', {Env.ci_sizeof = Some _}), Some _
when Env.in_current_scope env tag' ->
error loc "redefinition of struct or union '%s'" tag;
(tag', env)
@@ -933,7 +938,7 @@ and elab_struct_or_union keep_ty only kind loc tag optmembers attrs env =
let (ci2, env'') =
elab_struct_or_union_info keep_ty kind loc env' members attrs in
(* emit a definition *)
- emit_elab env'' loc (Gcompositedef(kind, tag', attrs, ci2.ci_members));
+ emit_elab env'' loc (Gcompositedef(kind, tag', attrs, ci2.Env.ci_members));
(* Replace infos but keep same ident *)
(tag', Env.add_composite env'' tag' ci2)
@@ -982,7 +987,7 @@ and elab_enum only loc tag optmembers attrs env =
let (dcl2, env2) = elab_members env1 nextval1 tl in
(dcl1 :: dcl2, env2) in
let (dcls, env') = elab_members env 0L members in
- let info = { ei_members = dcls; ei_attr = attrs } in
+ let info = { Env.ei_members = dcls; ei_attr = attrs } in
let (tag', env'') = Env.enter_enum env' tag info in
emit_elab env' loc (Genumdef(tag', attrs, dcls));
(tag', env'')
@@ -1098,11 +1103,11 @@ module I = struct
let rec zipname = function
| Ztop(name, ty) -> name
| Zarray(z, ty, sz, dfl, before, idx, after) ->
- sprintf "%s[%Ld]" (zipname z) idx
+ Printf.sprintf "%s[%Ld]" (zipname z) idx
| Zstruct(z, id, before, fld, after) ->
- sprintf "%s.%s" (zipname z) fld.fld_name
+ Printf.sprintf "%s.%s" (zipname z) fld.fld_name
| Zunion(z, id, fld) ->
- sprintf "%s.%s" (zipname z) fld.fld_name
+ Printf.sprintf "%s.%s" (zipname z) fld.fld_name
let name (z, i) = zipname z
@@ -1146,7 +1151,7 @@ module I = struct
| TStruct(id, _), Init_struct(id', (fld1, i1) :: flds) ->
Some(Zstruct(z, id, [], fld1, flds), i1)
| TUnion(id, _), Init_union(id', fld, i) ->
- begin match (Env.find_union env id).ci_members with
+ begin match (Env.find_union env id).Env.ci_members with
| [] -> None
| fld1 :: _ ->
Some(Zunion(z, id, fld1),
@@ -1225,7 +1230,7 @@ module I = struct
member env zi name
else
find rem
- in find (Env.find_union env id).ci_members
+ in find (Env.find_union env id).Env.ci_members
end
| (TStruct _ | TUnion _), Init_single a ->
member env (z, default_init env ty) name
@@ -1432,9 +1437,9 @@ let elab_expr vararg loc env a =
| VARIABLE s ->
begin match wrap Env.lookup_ident loc env s with
- | (id, II_ident(sto, ty)) ->
+ | (id, Env.II_ident(sto, ty)) ->
{ edesc = EVar id; etyp = ty },env
- | (id, II_enum v) ->
+ | (id, Env.II_enum v) ->
{ edesc = EConst(CEnum(id, v)); etyp = TInt(enum_ikind, []) },env
end
@@ -1522,7 +1527,7 @@ let elab_expr vararg loc env a =
| BUILTIN_VA_ARG (a2, a3) ->
let ident =
match wrap Env.lookup_ident loc env "__builtin_va_arg" with
- | (id, II_ident(sto, ty)) -> { edesc = EVar id; etyp = ty }
+ | (id, Env.II_ident(sto, ty)) -> { edesc = EVar id; etyp = ty }
| _ -> assert false
in
let b2,env = elab env a2 in
@@ -1642,6 +1647,45 @@ let elab_expr vararg loc env a =
error "invalid application of 'alignof' to an incomplete type %a" (print_typ env) ty;
{ edesc = EAlignof ty; etyp = TInt(size_t_ikind(), []) },env'
+ | BUILTIN_OFFSETOF ((spec,dcl), mem) ->
+ let (ty,env) = elab_type loc env spec dcl in
+ if incomplete_type env ty then
+ error "offsetof of incomplete type %a" (print_typ env) ty;
+ let members env ty mem =
+ match ty with
+ | TStruct (id,_) -> wrap Env.find_struct_member loc env (id,mem)
+ | TUnion (id,_) -> wrap Env.find_union_member loc env (id,mem)
+ | _ -> error "request for member '%s' in something not a structure or union" mem in
+ let rec offset_of_list acc env ty = function
+ | [] -> acc,ty
+ | fld::rest -> let off = offsetof env ty fld in
+ offset_of_list (acc+off) env fld.fld_typ rest in
+ let offset_of_member (env,off_accu,ty) mem =
+ match mem,unroll env ty with
+ | INFIELD_INIT mem,ty ->
+ let flds = members env ty mem in
+ let flds = List.rev flds in
+ let off,ty = offset_of_list 0 env ty flds in
+ env,off_accu + off,ty
+ | ATINDEX_INIT e,TArray (sub_ty,_,_) ->
+ let e,env = elab env e in
+ let e = match Ceval.integer_expr env e with
+ | None -> error "array element designator for is not an integer constant expression"
+ | Some n-> n in
+ let size = match sizeof env sub_ty with
+ | None -> assert false (* We expect only complete types *)
+ | Some s -> s in
+ let off_accu = match cautious_mul e size with
+ | None -> error "'offsetof' overflows"
+ | Some s -> off_accu + s in
+ env,off_accu,sub_ty
+ | ATINDEX_INIT _,_ -> error "subscripted value is not an array" in
+ let env,offset,_ = List.fold_left offset_of_member (env,0,ty) mem in
+ let size_t = size_t_ikind () in
+ let offset = Ceval.normalize_int (Int64.of_int offset) size_t in
+ let offsetof_const = EConst (CInt(offset,size_t,"")) in
+ { edesc = offsetof_const; etyp = TInt(size_t, []) },env
+
| UNARY(PLUS, a1) ->
let b1,env = elab env a1 in
if not (is_arith_type env b1.etyp) then
@@ -1674,7 +1718,7 @@ let elab_expr vararg loc env a =
| EVar id ->
begin match wrap Env.find_ident loc env id with
| Env.II_ident(Storage_register, _) ->
- err "address of register variable '%s' requested" id.name
+ err "address of register variable '%s' requested" id.C.name
| _ -> ()
end
| EUnop(Odot f, b2) ->
@@ -2061,7 +2105,7 @@ let enter_typedefs loc env sto dl =
match previous_def Env.lookup_typedef env s with
| Some (s',ty') ->
if equal_types env ty ty' then begin
- warning loc Cerrors.Celeven_extension "redefinition of typedef '%s' is C11 extension" s;
+ warning loc Celeven_extension "redefinition of typedef '%s' is C11 extension" s;
env
end else begin
error loc "typedef redefinition with different types (%a vs %a)"
@@ -2164,7 +2208,7 @@ let elab_KR_function_parameters env params defs loc =
end;
paramsenv
| d -> (* Should never be produced by the parser *)
- fatal_error (get_definitionloc d)
+ fatal_error (Cabshelper.get_definitionloc d)
"Illegal declaration of function parameter" in
let kr_params_defs,paramsenv =
let params,paramsenv = mmap elab_param_def env defs in
@@ -2213,7 +2257,7 @@ let elab_KR_function_parameters env params defs loc =
let inherit_vararg env s sto ty =
match previous_def Env.lookup_ident env s with
- | Some(id, II_ident(_, old_ty))
+ | Some(id, Env.II_ident(_, old_ty))
when sto = Storage_extern || Env.in_current_scope env id ->
begin
match old_ty, ty with
@@ -2232,7 +2276,7 @@ let elab_fundef env spec name defs body loc =
fatal_error loc "invalid 'register' storage-class on function";
begin match kr_params, defs with
| None, d::_ ->
- error (get_definitionloc d)
+ error (Cabshelper.get_definitionloc d)
"old-style parameter declarations in prototyped function definition"
| _ -> ()
end;
@@ -2247,7 +2291,7 @@ let elab_fundef env spec name defs body loc =
| ty, None ->
(ty, [],env1)
| TFun(ty_ret, None, false, attr), Some params ->
- warning loc Cerrors.CompCert_conformance "non-prototype, pre-standard function definition, converting to prototype form";
+ warning loc CompCert_conformance "non-prototype, pre-standard function definition, converting to prototype form";
let (params', extra_decls,env) =
elab_KR_function_parameters env params defs loc in
(TFun(ty_ret, Some params', inherit_vararg env s sto ty, attr), extra_decls,env)
@@ -2304,17 +2348,19 @@ let elab_fundef env spec name defs body loc =
{ sdesc = Sblock (List.map mkdecl extra_decls @ [body2]);
sloc = no_loc }
end in
- if noret then begin
+ (* Handling of _Noreturn and of attribute("noreturn") *)
+ if noret then
warning loc Celeven_extension "_Noreturn functions are a C11 extension";
- if contains_return body1 then
- warning loc Invalid_noreturn "function '%s' declared 'noreturn' should not return" s;
- end;
+ if (noret || find_custom_attributes ["noreturn"; "__noreturn__"] attr <> [])
+ && contains_return body1 then
+ warning loc Invalid_noreturn "function '%s' declared 'noreturn' should not return" s;
(* Build and emit function definition *)
let fn =
{ fd_storage = sto1;
fd_inline = inline;
fd_name = fun_id;
- fd_attrib = attr;
+ fd_attrib = if noret then add_attributes [Attr("noreturn",[])] attr
+ else attr;
fd_ret = ty_ret;
fd_params = params;
fd_vararg = vararg;
@@ -2483,7 +2529,7 @@ let rec elab_stmt env ctx s =
(a1, env, None)
| Some (FC_DECL def) ->
let (dcl, env') = elab_definition true (Env.new_scope env) def in
- let loc = elab_loc (get_definitionloc def) in
+ let loc = elab_loc (Cabshelper.get_definitionloc def) in
(sskip, env',
Some(List.map (fun d -> {sdesc = Sdecl d; sloc = loc}) dcl)) in
let a2',env =
@@ -2573,7 +2619,7 @@ let rec elab_stmt env ctx s =
(* Unsupported *)
| DEFINITION def ->
- error (get_definitionloc def) "ill-placed definition";
+ error (Cabshelper.get_definitionloc def) "ill-placed definition";
sskip,env
and elab_block loc env ctx b =
@@ -2586,7 +2632,7 @@ and elab_block_body env ctx sl =
[],env
| DEFINITION def :: sl1 ->
let (dcl, env') = elab_definition true env def in
- let loc = elab_loc (get_definitionloc def) in
+ let loc = elab_loc (Cabshelper.get_definitionloc def) in
let dcl = List.map (fun ((sto,id,ty,_) as d) ->
Debug.insert_local_declaration sto id ty loc;
{sdesc = Sdecl d; sloc = loc}) dcl in
diff --git a/cparser/Elab.mli b/cparser/Elab.mli
index 7eee4a08..f701e8c5 100644
--- a/cparser/Elab.mli
+++ b/cparser/Elab.mli
@@ -14,3 +14,12 @@
(* *********************************************************************)
val elab_file : Cabs.definition list -> C.program
+ (* This is the main entry point. It transforms a list of toplevel
+ definitions as produced by the parser into a program in C abstract
+ syntax. *)
+
+val elab_int_constant : Cabs.cabsloc -> string -> int64 * C.ikind
+val elab_float_constant : Cabs.floatInfo -> C.float_cst * C.fkind
+val elab_char_constant : Cabs.cabsloc -> bool -> int64 list -> int64
+ (* These auxiliary functions are exported so that they can be reused
+ in other projects that deal with C-style source languages. *)
diff --git a/cparser/GCC.ml b/cparser/GCC.ml
index f7f64a4e..010d12f3 100644
--- a/cparser/GCC.ml
+++ b/cparser/GCC.ml
@@ -13,7 +13,7 @@
(* *)
(* *********************************************************************)
-(* GCC built-ins *)
+(* GCC built-ins and attributes *)
open C
open Cutil
@@ -221,3 +221,25 @@ let builtins = {
"__builtin_va_copy", (voidType, [ voidPtrType; voidPtrType ], false)
]
}
+
+let attributes = [ (* a subset of those of GCC 5 *)
+ (* type-related *)
+ ("aligned", Attr_type); ("may_alias", Attr_type); ("visibility", Attr_type);
+ (* struct-related *)
+ ("packed", Attr_struct); ("designated_init", Attr_struct);
+ (* function-related *)
+ ("cdecl", Attr_function); ("stdcall", Attr_function);
+ ("fastcall", Attr_function); ("thiscall", Attr_function);
+ ("const", Attr_function); ("noreturn", Attr_name);
+ (* name-related *)
+ ("cleanup", Attr_name); ("common", Attr_name); ("nocommon", Attr_name);
+ ("deprecated", Attr_name); ("section", Attr_name);
+ ("shared", Attr_name); ("tls_model", Attr_name); ("unused", Attr_name);
+ ("used", Attr_name); ("weak", Attr_name);
+ ("dllimport", Attr_name); ("dllexport", Attr_name);
+ ("alway_inline", Attr_name); ("gnu_inline", Attr_name);
+ ("artificial", Attr_name); ("flatten", Attr_name);
+ ("error", Attr_name); ("warning", Attr_name);
+ ("constructor", Attr_name); ("destructor", Attr_name);
+ ("externally_visible", Attr_name); ("interrupt", Attr_name)
+]
diff --git a/cparser/GCC.mli b/cparser/GCC.mli
index 76f40372..f26d12df 100644
--- a/cparser/GCC.mli
+++ b/cparser/GCC.mli
@@ -13,6 +13,7 @@
(* *)
(* *********************************************************************)
-(* GCC built-ins *)
+(* GCC built-ins and attributes *)
val builtins: Builtins.t
+val attributes: (string * Cutil.attribute_class) list
diff --git a/cparser/Lexer.mll b/cparser/Lexer.mll
index 71aad604..ec344f7a 100644
--- a/cparser/Lexer.mll
+++ b/cparser/Lexer.mll
@@ -17,7 +17,6 @@
open Lexing
open Pre_parser
open Pre_parser_aux
-open !Cabshelper
module SSet = Set.Make(String)
@@ -36,6 +35,7 @@ let () =
("__attribute", fun loc -> ATTRIBUTE loc);
("__attribute__", fun loc -> ATTRIBUTE loc);
("__builtin_va_arg", fun loc -> BUILTIN_VA_ARG loc);
+ ("__builtin_offsetof", fun loc -> BUILTIN_OFFSETOF loc);
("__const", fun loc -> CONST loc);
("__const__", fun loc -> CONST loc);
("__inline", fun loc -> INLINE loc);
@@ -510,6 +510,7 @@ and singleline_comment = parse
| UNDERSCORE_BOOL loc -> loop UNDERSCORE_BOOL't loc
| BREAK loc -> loop BREAK't loc
| BUILTIN_VA_ARG loc -> loop BUILTIN_VA_ARG't loc
+ | BUILTIN_OFFSETOF loc -> loop BUILTIN_OFFSETOF't loc
| CASE loc -> loop CASE't loc
| CHAR loc -> loop CHAR't loc
| COLON loc -> loop COLON't loc
diff --git a/cparser/Parser.vy b/cparser/Parser.vy
index 3e175a37..7fe686f1 100644
--- a/cparser/Parser.vy
+++ b/cparser/Parser.vy
@@ -37,7 +37,7 @@ Require Import List.
STRUCT UNION ENUM UNDERSCORE_BOOL PACKED ALIGNAS ATTRIBUTE ASM
%token<cabsloc> CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK
- RETURN BUILTIN_VA_ARG
+ RETURN BUILTIN_VA_ARG BUILTIN_OFFSETOF
%token EOF
@@ -145,6 +145,10 @@ postfix_expression:
{ (CAST typ (COMPOUND_INIT (rev' init)), loc) }
| loc = LPAREN typ = type_name RPAREN LBRACE init = initializer_list COMMA RBRACE
{ (CAST typ (COMPOUND_INIT (rev' init)), loc) }
+| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA id = OTHER_NAME mems = designator_list RPAREN
+ { (BUILTIN_OFFSETOF typ ((INFIELD_INIT (fst id))::(rev mems)), loc) }
+| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA mem = OTHER_NAME RPAREN
+ { (BUILTIN_OFFSETOF typ [INFIELD_INIT (fst mem)], loc) }
(* Semantic value is in reverse order. *)
argument_expression_list:
diff --git a/cparser/StructReturn.ml b/cparser/StructReturn.ml
index 04f0021a..11fa39ca 100644
--- a/cparser/StructReturn.ml
+++ b/cparser/StructReturn.ml
@@ -19,7 +19,7 @@
open Machine
open Configuration
-open !C
+open C
open Cutil
open Transform
@@ -252,7 +252,7 @@ and transf_funargs env = function
| Param_ref_caller ->
(id, TPtr(t', [])) :: args'
| Param_flattened(n, sz, al) ->
- list_map_n (fun _ -> (Env.fresh_ident id.name, uint)) n
+ list_map_n (fun _ -> (Env.fresh_ident id.C.name, uint)) n
@ args'
(* Expressions: transform calls + rewrite the types *)
@@ -324,7 +324,7 @@ and transf_call env ctx opt_lhs fn args ty =
| None -> e
| Some lhs -> eassign lhs e in
match fn with
- | {edesc = EVar {name = "__builtin_va_arg"}} ->
+ | {edesc = EVar {C.name = "__builtin_va_arg"}} ->
(* Do not transform the call in this case *)
opt_eassign {edesc = ECall(fn, args'); etyp = ty}
| _ ->
@@ -525,8 +525,8 @@ let rec transf_funparams loc env params =
actions,
IdentMap.add x estarx subst)
| Param_flattened(n, sz, al) ->
- let y = new_temp ~name:x.name (ty_buffer n) in
- let yparts = list_map_n (fun _ -> Env.fresh_ident x.name) n in
+ let y = new_temp ~name:x.C.name (ty_buffer n) in
+ let yparts = list_map_n (fun _ -> Env.fresh_ident x.C.name) n in
let assign_part e p act =
sseq loc (sassign loc e {edesc = EVar p; etyp = uint}) act in
(List.map (fun p -> (p, uint)) yparts @ params',
diff --git a/cparser/handcrafted.messages b/cparser/handcrafted.messages
index 11c26560..0af01a61 100644
--- a/cparser/handcrafted.messages
+++ b/cparser/handcrafted.messages
@@ -178,9 +178,9 @@
translation_unit_file: ALIGNAS LPAREN INT XOR_ASSIGN
##
-## Ends in an error in state: 301.
+## Ends in an error in state: 341.
##
-## attribute_specifier -> ALIGNAS LPAREN type_name . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS LPAREN type_name . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ALIGNAS LPAREN type_name
@@ -189,9 +189,9 @@ translation_unit_file: ALIGNAS LPAREN INT XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
# Maybe the type name was not complete, but we have reduced anyway
@@ -211,7 +211,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ ALIGNOF LPAREN VOID XOR_ASSIGN
##
-## Ends in an error in state: 313.
+## Ends in an error in state: 304.
##
## postfix_expression -> LPAREN type_name . RPAREN LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## unary_expression -> ALIGNOF LPAREN type_name . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -223,13 +223,13 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ ALIGNOF LPAREN VOID XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ SIZEOF LPAREN VOID XOR_ASSIGN
##
-## Ends in an error in state: 380.
+## Ends in an error in state: 389.
##
## postfix_expression -> LPAREN type_name . RPAREN LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## unary_expression -> SIZEOF LPAREN type_name . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -241,9 +241,9 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ SIZEOF LPAREN VOID XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
Ill-formed use of $2.
@@ -256,7 +256,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ BUILTIN_VA_ARG LPAREN PRE_NAME VAR_NAME COMMA VOID XOR_ASSIGN
##
-## Ends in an error in state: 344.
+## Ends in an error in state: 353.
##
## postfix_expression -> BUILTIN_VA_ARG LPAREN assignment_expression COMMA type_name . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -267,9 +267,9 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ BUILTIN_VA_ARG LPAREN PRE_NAME V
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
Ill-formed use of __builtin_va_arg.
@@ -282,7 +282,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ INC LPAREN VOID XOR_ASSIGN
##
-## Ends in an error in state: 374.
+## Ends in an error in state: 383.
##
## postfix_expression -> LPAREN type_name . RPAREN LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -293,9 +293,9 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ INC LPAREN VOID XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
# gcc simply says it expects a closing parenthesis,
@@ -311,7 +311,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN VOID XOR_ASSIGN
##
-## Ends in an error in state: 377.
+## Ends in an error in state: 386.
##
## cast_expression -> LPAREN type_name . RPAREN cast_expression [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## postfix_expression -> LPAREN type_name . RPAREN LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -323,9 +323,9 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN VOID XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 154, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
-## In state 303, spurious reduction of production option(abstract_declarator(type_name)) ->
-## In state 309, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
##
# gcc and clang say they expect a closing parenthesis.
@@ -339,10 +339,10 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: ALIGNAS LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 311.
+## Ends in an error in state: 343.
##
## argument_expression_list -> argument_expression_list . COMMA assignment_expression [ RPAREN COMMA ]
-## attribute_specifier -> ALIGNAS LPAREN argument_expression_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS LPAREN argument_expression_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ALIGNAS LPAREN argument_expression_list
@@ -351,21 +351,21 @@ translation_unit_file: ALIGNAS LPAREN PRE_NAME VAR_NAME SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 135, spurious reduction of production argument_expression_list -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 143, spurious reduction of production argument_expression_list -> assignment_expression
##
# We are trying to recognize an alignas specifier.
@@ -389,22 +389,22 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: ALIGNAS LPAREN INT LBRACK RPAREN
##
-## Ends in an error in state: 237.
+## Ends in an error in state: 240.
##
## direct_abstract_declarator -> option(direct_abstract_declarator) LBRACK option(type_qualifier_list) . optional(assignment_expression,RBRACK) [ RPAREN LPAREN LBRACK COMMA ]
-## type_qualifier_list -> option(type_qualifier_list) . type_qualifier_noattr [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
-## type_qualifier_list -> option(type_qualifier_list) . attribute_specifier [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## type_qualifier_list -> option(type_qualifier_list) . type_qualifier_noattr [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## type_qualifier_list -> option(type_qualifier_list) . attribute_specifier [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## option(direct_abstract_declarator) LBRACK option(type_qualifier_list)
##
translation_unit_file: INT PRE_NAME VAR_NAME LBRACK RPAREN
##
-## Ends in an error in state: 254.
+## Ends in an error in state: 257.
##
-## direct_declarator -> direct_declarator LBRACK option(type_qualifier_list) . optional(assignment_expression,RBRACK) [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
-## type_qualifier_list -> option(type_qualifier_list) . type_qualifier_noattr [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
-## type_qualifier_list -> option(type_qualifier_list) . attribute_specifier [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## direct_declarator -> direct_declarator LBRACK option(type_qualifier_list) . optional(assignment_expression,RBRACK) [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## type_qualifier_list -> option(type_qualifier_list) . type_qualifier_noattr [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## type_qualifier_list -> option(type_qualifier_list) . attribute_specifier [ VOLATILE TILDE STRING_LITERAL STAR SIZEOF RESTRICT RBRACK PRE_NAME PLUS PACKED MINUS LPAREN INC DEC CONSTANT CONST BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## direct_declarator LBRACK option(type_qualifier_list)
@@ -434,7 +434,7 @@ At this point, one of the following is expected:
translation_unit_file: ALIGNAS LPAREN INT LPAREN INT COMMA ELLIPSIS XOR_ASSIGN
##
-## Ends in an error in state: 265.
+## Ends in an error in state: 268.
##
## direct_abstract_declarator -> LPAREN option(context_parameter_type_list) . RPAREN [ RPAREN LPAREN LBRACK COMMA ]
##
@@ -443,7 +443,7 @@ translation_unit_file: ALIGNAS LPAREN INT LPAREN INT COMMA ELLIPSIS XOR_ASSIGN
##
translation_unit_file: ALIGNAS LPAREN INT LBRACK RBRACK LPAREN INT COMMA ELLIPSIS XOR_ASSIGN
##
-## Ends in an error in state: 248.
+## Ends in an error in state: 251.
##
## direct_abstract_declarator -> direct_abstract_declarator LPAREN option(context_parameter_type_list) . RPAREN [ RPAREN LPAREN LBRACK COMMA ]
##
@@ -452,9 +452,9 @@ translation_unit_file: ALIGNAS LPAREN INT LBRACK RBRACK LPAREN INT COMMA ELLIPSI
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT COMMA ELLIPSIS XOR_ASSIGN
##
-## Ends in an error in state: 282.
+## Ends in an error in state: 285.
##
-## direct_declarator -> direct_declarator LPAREN context_parameter_type_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## direct_declarator -> direct_declarator LPAREN context_parameter_type_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## direct_declarator LPAREN context_parameter_type_list
@@ -469,7 +469,7 @@ At this point, a closing parenthesis ')' is expected.
translation_unit_file: ALIGNAS LPAREN INT LPAREN LPAREN RPAREN COMMA
##
-## Ends in an error in state: 263.
+## Ends in an error in state: 266.
##
## direct_abstract_declarator -> LPAREN save_context abstract_declarator(type_name) . RPAREN [ RPAREN LPAREN LBRACK COMMA ]
##
@@ -480,7 +480,7 @@ translation_unit_file: ALIGNAS LPAREN INT LPAREN LPAREN RPAREN COMMA
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 256, spurious reduction of production abstract_declarator(type_name) -> direct_abstract_declarator
+## In state 259, spurious reduction of production abstract_declarator(type_name) -> direct_abstract_declarator
##
#
# The first LPAREN in this example must be the beginning of an abstract_declarator.
@@ -511,10 +511,10 @@ At this point, a closing parenthesis ')' is expected.
translation_unit_file: ALIGNAS LPAREN INT LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 304.
+## Ends in an error in state: 331.
##
-## direct_abstract_declarator -> LPAREN . save_context abstract_declarator(type_name) RPAREN [ RPAREN LPAREN LBRACK ]
-## direct_abstract_declarator -> LPAREN . option(context_parameter_type_list) RPAREN [ RPAREN LPAREN LBRACK ]
+## direct_abstract_declarator -> LPAREN . save_context abstract_declarator(type_name) RPAREN [ RPAREN LPAREN LBRACK COMMA ]
+## direct_abstract_declarator -> LPAREN . option(context_parameter_type_list) RPAREN [ RPAREN LPAREN LBRACK COMMA ]
##
## The known suffix of the stack is as follows:
## LPAREN
@@ -534,7 +534,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 231.
+## Ends in an error in state: 234.
##
## direct_abstract_declarator -> LPAREN . save_context abstract_declarator(type_name) RPAREN [ RPAREN LPAREN LBRACK COMMA ]
## direct_abstract_declarator -> LPAREN . option(context_parameter_type_list) RPAREN [ RPAREN LPAREN LBRACK COMMA ]
@@ -557,11 +557,11 @@ At this point, one of the following is expected:
translation_unit_file: ALIGNAS LPAREN VOLATILE ADD_ASSIGN
##
-## Ends in an error in state: 296.
+## Ends in an error in state: 299.
##
## option(type_qualifier_list) -> type_qualifier_list . [ VOLATILE RESTRICT PACKED CONST ATTRIBUTE ALIGNAS ]
-## specifier_qualifier_list(type_name) -> type_qualifier_list . typedef_name option(type_qualifier_list) [ STAR RPAREN LPAREN LBRACK ]
-## specifier_qualifier_list(type_name) -> type_qualifier_list . type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name) [ STAR RPAREN LPAREN LBRACK ]
+## specifier_qualifier_list(type_name) -> type_qualifier_list . typedef_name option(type_qualifier_list) [ STAR RPAREN LPAREN LBRACK COMMA ]
+## specifier_qualifier_list(type_name) -> type_qualifier_list . type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name) [ STAR RPAREN LPAREN LBRACK COMMA ]
##
## The known suffix of the stack is as follows:
## type_qualifier_list
@@ -582,10 +582,10 @@ At this point, one of the following is expected:
translation_unit_file: ALIGNAS LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 152.
+## Ends in an error in state: 61.
##
-## attribute_specifier -> ALIGNAS LPAREN . argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
-## attribute_specifier -> ALIGNAS LPAREN . type_name RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS LPAREN . argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS LPAREN . type_name RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ALIGNAS LPAREN
@@ -604,10 +604,10 @@ At this point, one of the following is expected:
translation_unit_file: ALIGNAS XOR_ASSIGN
##
-## Ends in an error in state: 151.
+## Ends in an error in state: 60.
##
-## attribute_specifier -> ALIGNAS . LPAREN argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
-## attribute_specifier -> ALIGNAS . LPAREN type_name RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS . LPAREN argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ALIGNAS . LPAREN type_name RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ALIGNAS
@@ -622,7 +622,7 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: ATTRIBUTE LPAREN LPAREN COMMA XOR_ASSIGN
##
-## Ends in an error in state: 356.
+## Ends in an error in state: 365.
##
## gcc_attribute_list -> gcc_attribute_list COMMA . gcc_attribute [ RPAREN COMMA ]
##
@@ -644,9 +644,9 @@ At this point, a gcc attribute is expected.
translation_unit_file: ATTRIBUTE LPAREN LPAREN RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 354.
+## Ends in an error in state: 363.
##
-## attribute_specifier -> ATTRIBUTE LPAREN LPAREN gcc_attribute_list RPAREN . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ATTRIBUTE LPAREN LPAREN gcc_attribute_list RPAREN . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ATTRIBUTE LPAREN LPAREN gcc_attribute_list RPAREN
@@ -659,9 +659,9 @@ At this point, a second closing parenthesis ')' is expected.
translation_unit_file: ATTRIBUTE LPAREN LPAREN PRE_NAME VAR_NAME LPAREN RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 353.
+## Ends in an error in state: 362.
##
-## attribute_specifier -> ATTRIBUTE LPAREN LPAREN gcc_attribute_list . RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ATTRIBUTE LPAREN LPAREN gcc_attribute_list . RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
## gcc_attribute_list -> gcc_attribute_list . COMMA gcc_attribute [ RPAREN COMMA ]
##
## The known suffix of the stack is as follows:
@@ -682,7 +682,7 @@ At this point, one of the following is expected:
translation_unit_file: ATTRIBUTE LPAREN LPAREN PRE_NAME VAR_NAME LPAREN PRE_NAME TYPEDEF_NAME COMMA PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 349.
+## Ends in an error in state: 358.
##
## argument_expression_list -> argument_expression_list . COMMA assignment_expression [ RPAREN COMMA ]
## gcc_attribute -> gcc_attribute_word LPAREN typedef_name COMMA argument_expression_list . RPAREN [ RPAREN COMMA ]
@@ -694,21 +694,21 @@ translation_unit_file: ATTRIBUTE LPAREN LPAREN PRE_NAME VAR_NAME LPAREN PRE_NAME
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 135, spurious reduction of production argument_expression_list -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 143, spurious reduction of production argument_expression_list -> assignment_expression
##
# We know for sure that we are parsing a gcc attribute.
@@ -726,7 +726,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: ATTRIBUTE LPAREN LPAREN PRE_NAME VAR_NAME LPAREN PRE_NAME TYPEDEF_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 348.
+## Ends in an error in state: 357.
##
## gcc_attribute -> gcc_attribute_word LPAREN typedef_name COMMA . argument_expression_list RPAREN [ RPAREN COMMA ]
##
@@ -743,7 +743,7 @@ At this point, an expression is expected.
translation_unit_file: ATTRIBUTE LPAREN LPAREN PRE_NAME VAR_NAME LPAREN PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 347.
+## Ends in an error in state: 356.
##
## gcc_attribute -> gcc_attribute_word LPAREN typedef_name . COMMA argument_expression_list RPAREN [ RPAREN COMMA ]
##
@@ -808,7 +808,7 @@ translation_unit_file: ATTRIBUTE LPAREN LPAREN XOR_ASSIGN
##
## Ends in an error in state: 39.
##
-## attribute_specifier -> ATTRIBUTE LPAREN LPAREN . gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ATTRIBUTE LPAREN LPAREN . gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ATTRIBUTE LPAREN LPAREN
@@ -830,7 +830,7 @@ translation_unit_file: ATTRIBUTE LPAREN XOR_ASSIGN
##
## Ends in an error in state: 38.
##
-## attribute_specifier -> ATTRIBUTE LPAREN . LPAREN gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ATTRIBUTE LPAREN . LPAREN gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ATTRIBUTE LPAREN
@@ -845,7 +845,7 @@ translation_unit_file: ATTRIBUTE XOR_ASSIGN
##
## Ends in an error in state: 37.
##
-## attribute_specifier -> ATTRIBUTE . LPAREN LPAREN gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> ATTRIBUTE . LPAREN LPAREN gcc_attribute_list RPAREN RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ATTRIBUTE
@@ -858,7 +858,7 @@ At this point, two opening parentheses '((' are expected.
translation_unit_file: ENUM LBRACE PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 364.
+## Ends in an error in state: 373.
##
## enumerator_list -> enumerator_list COMMA . declare_varname(enumerator) [ RBRACE COMMA ]
## option(COMMA) -> COMMA . [ RBRACE ]
@@ -879,9 +879,9 @@ At this point, an enumerator is expected.
translation_unit_file: ENUM LBRACE PRE_NAME VAR_NAME EQ CONSTANT SEMICOLON
##
-## Ends in an error in state: 363.
+## Ends in an error in state: 372.
##
-## enum_specifier -> ENUM attribute_specifier_list option(other_identifier) LBRACE enumerator_list . option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## enum_specifier -> ENUM attribute_specifier_list option(other_identifier) LBRACE enumerator_list . option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
## enumerator_list -> enumerator_list . COMMA declare_varname(enumerator) [ RBRACE COMMA ]
##
## The known suffix of the stack is as follows:
@@ -891,22 +891,22 @@ translation_unit_file: ENUM LBRACE PRE_NAME VAR_NAME EQ CONSTANT SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 59, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 368, spurious reduction of production enumerator -> enumeration_constant EQ conditional_expression
-## In state 365, spurious reduction of production declare_varname(enumerator) -> enumerator
-## In state 372, spurious reduction of production enumerator_list -> declare_varname(enumerator)
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 67, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 377, spurious reduction of production enumerator -> enumeration_constant EQ conditional_expression
+## In state 374, spurious reduction of production declare_varname(enumerator) -> enumerator
+## In state 381, spurious reduction of production enumerator_list -> declare_varname(enumerator)
##
#
# At first sight, it seems that the last enumerator that we have recognized
@@ -937,7 +937,7 @@ then at this point, a closing brace '}' is expected.
translation_unit_file: ENUM LBRACE PRE_NAME VAR_NAME EQ XOR_ASSIGN
##
-## Ends in an error in state: 367.
+## Ends in an error in state: 376.
##
## enumerator -> enumeration_constant EQ . conditional_expression [ RBRACE COMMA ]
##
@@ -952,7 +952,7 @@ At this point, a constant expression is expected.
translation_unit_file: ENUM LBRACE PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 366.
+## Ends in an error in state: 375.
##
## enumerator -> enumeration_constant . [ RBRACE COMMA ]
## enumerator -> enumeration_constant . EQ conditional_expression [ RBRACE COMMA ]
@@ -973,9 +973,9 @@ At this point, one of the following is expected:
translation_unit_file: ENUM LBRACE XOR_ASSIGN
##
-## Ends in an error in state: 361.
+## Ends in an error in state: 370.
##
-## enum_specifier -> ENUM attribute_specifier_list option(other_identifier) LBRACE . enumerator_list option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## enum_specifier -> ENUM attribute_specifier_list option(other_identifier) LBRACE . enumerator_list option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ENUM attribute_specifier_list option(other_identifier) LBRACE
@@ -991,10 +991,10 @@ At this point, an enumerator is expected.
translation_unit_file: ENUM XOR_ASSIGN
##
-## Ends in an error in state: 359.
+## Ends in an error in state: 368.
##
-## enum_specifier -> ENUM attribute_specifier_list . option(other_identifier) LBRACE enumerator_list option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
-## enum_specifier -> ENUM attribute_specifier_list . general_identifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## enum_specifier -> ENUM attribute_specifier_list . option(other_identifier) LBRACE enumerator_list option(COMMA) RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## enum_specifier -> ENUM attribute_specifier_list . general_identifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ENUM attribute_specifier_list
@@ -1018,7 +1018,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME EQ ALIGNOF LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 55.
+## Ends in an error in state: 65.
##
## postfix_expression -> LPAREN . type_name RPAREN LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## primary_expression -> LPAREN . expression RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1053,7 +1053,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ ALIGNOF XOR_ASSIGN
##
-## Ends in an error in state: 54.
+## Ends in an error in state: 64.
##
## unary_expression -> ALIGNOF . unary_expression [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## unary_expression -> ALIGNOF . LPAREN type_name RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1085,7 +1085,7 @@ followed with an expression or a type name.
translation_unit_file: INT PRE_NAME VAR_NAME EQ BUILTIN_VA_ARG LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 342.
+## Ends in an error in state: 351.
##
## postfix_expression -> BUILTIN_VA_ARG LPAREN assignment_expression . COMMA type_name RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1096,20 +1096,20 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ BUILTIN_VA_ARG LPAREN PRE_NAME V
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
##
Ill-formed use of $2.
@@ -1122,7 +1122,7 @@ then at this point, a comma ',' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ BUILTIN_VA_ARG LPAREN PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 343.
+## Ends in an error in state: 352.
##
## postfix_expression -> BUILTIN_VA_ARG LPAREN assignment_expression COMMA . type_name RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1191,7 +1191,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ INC LPAREN INT RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 375.
+## Ends in an error in state: 384.
##
## postfix_expression -> LPAREN type_name RPAREN . LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1243,7 +1243,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 339.
+## Ends in an error in state: 338.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
## primary_expression -> LPAREN expression . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1255,21 +1255,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN PRE_NAME VAR_NAME SEMICOL
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
# Since we are saying "if this expression is complete",
@@ -1287,7 +1287,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN INT RPAREN LBRACE PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 336.
+## Ends in an error in state: 327.
##
## initializer_list -> initializer_list . COMMA option(designation) c_initializer [ RBRACE COMMA ]
## postfix_expression -> LPAREN type_name RPAREN LBRACE initializer_list . option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1299,22 +1299,22 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN INT RPAREN LBRACE PRE_NAM
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 329, spurious reduction of production c_initializer -> assignment_expression
-## In state 335, spurious reduction of production initializer_list -> option(designation) c_initializer
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 320, spurious reduction of production c_initializer -> assignment_expression
+## In state 326, spurious reduction of production initializer_list -> option(designation) c_initializer
##
# Let's ignore the fact that a comma can precede a closing brace.
@@ -1329,7 +1329,7 @@ then at this point, a closing brace '}' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN INT RPAREN LBRACE XOR_ASSIGN
##
-## Ends in an error in state: 315.
+## Ends in an error in state: 306.
##
## postfix_expression -> LPAREN type_name RPAREN LBRACE . initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1346,7 +1346,7 @@ At this point, an initializer is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LPAREN INT RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 378.
+## Ends in an error in state: 387.
##
## cast_expression -> LPAREN type_name RPAREN . cast_expression [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
## postfix_expression -> LPAREN type_name RPAREN . LBRACE initializer_list option(COMMA) RBRACE [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1390,7 +1390,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME EQ TILDE XOR_ASSIGN
##
-## Ends in an error in state: 58.
+## Ends in an error in state: 66.
##
## unary_expression -> unary_operator . cast_expression [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LEQ LEFT_ASSIGN LEFT HAT GT GEQ EQEQ EQ DIV_ASSIGN COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1407,7 +1407,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME AND XOR_ASSIGN
##
-## Ends in an error in state: 118.
+## Ends in an error in state: 126.
##
## and_expression -> and_expression AND . equality_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION HAT COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1416,7 +1416,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME AND XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME ANDAND XOR_ASSIGN
##
-## Ends in an error in state: 107.
+## Ends in an error in state: 115.
##
## logical_and_expression -> logical_and_expression ANDAND . inclusive_or_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION COMMA COLON BARBAR ANDAND ]
##
@@ -1425,7 +1425,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME ANDAND XOR_ASS
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME BAR XOR_ASSIGN
##
-## Ends in an error in state: 109.
+## Ends in an error in state: 117.
##
## inclusive_or_expression -> inclusive_or_expression BAR . exclusive_or_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION COMMA COLON BARBAR BAR ANDAND ]
##
@@ -1434,7 +1434,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME BAR XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME BARBAR XOR_ASSIGN
##
-## Ends in an error in state: 130.
+## Ends in an error in state: 138.
##
## logical_or_expression -> logical_or_expression BARBAR . logical_and_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION COMMA COLON BARBAR ]
##
@@ -1443,7 +1443,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME BARBAR XOR_ASS
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME HAT XOR_ASSIGN
##
-## Ends in an error in state: 111.
+## Ends in an error in state: 119.
##
## exclusive_or_expression -> exclusive_or_expression HAT . and_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION HAT COMMA COLON BARBAR BAR ANDAND ]
##
@@ -1452,7 +1452,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME HAT XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LT XOR_ASSIGN
##
-## Ends in an error in state: 101.
+## Ends in an error in state: 109.
##
## relational_expression -> relational_expression relational_operator . shift_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION NEQ LT LEQ HAT GT GEQ EQEQ COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1461,7 +1461,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LT XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME NEQ XOR_ASSIGN
##
-## Ends in an error in state: 115.
+## Ends in an error in state: 123.
##
## equality_expression -> equality_expression equality_operator . relational_expression [ SEMICOLON RPAREN RBRACK RBRACE QUESTION NEQ HAT EQEQ COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1470,7 +1470,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME NEQ XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME PLUS XOR_ASSIGN
##
-## Ends in an error in state: 94.
+## Ends in an error in state: 102.
##
## additive_expression -> additive_expression additive_operator . multiplicative_expression [ SEMICOLON RPAREN RIGHT RBRACK RBRACE QUESTION PLUS NEQ MINUS LT LEQ LEFT HAT GT GEQ EQEQ COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1479,7 +1479,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME PLUS XOR_ASSIG
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME RIGHT XOR_ASSIGN
##
-## Ends in an error in state: 83.
+## Ends in an error in state: 91.
##
## shift_expression -> shift_expression shift_operator . additive_expression [ SEMICOLON RPAREN RIGHT RBRACK RBRACE QUESTION NEQ LT LEQ LEFT HAT GT GEQ EQEQ COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1488,7 +1488,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME RIGHT XOR_ASSI
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME STAR XOR_ASSIGN
##
-## Ends in an error in state: 88.
+## Ends in an error in state: 96.
##
## multiplicative_expression -> multiplicative_expression multiplicative_operator . cast_expression [ STAR SLASH SEMICOLON RPAREN RIGHT RBRACK RBRACE QUESTION PLUS PERCENT NEQ MINUS LT LEQ LEFT HAT GT GEQ EQEQ COMMA COLON BARBAR BAR ANDAND AND ]
##
@@ -1505,7 +1505,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME XOR_ASSIGN XOR_ASSIGN
##
-## Ends in an error in state: 79.
+## Ends in an error in state: 87.
##
## assignment_expression -> unary_expression assignment_operator . assignment_expression [ SEMICOLON RPAREN RBRACK RBRACE COMMA COLON ]
##
@@ -1522,7 +1522,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 137.
+## Ends in an error in state: 145.
##
## argument_expression_list -> argument_expression_list COMMA . assignment_expression [ RPAREN COMMA ]
##
@@ -1543,7 +1543,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME DOT XOR_ASSIGN
##
-## Ends in an error in state: 143.
+## Ends in an error in state: 151.
##
## postfix_expression -> postfix_expression DOT . general_identifier [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1552,7 +1552,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME DOT XOR_ASSIGN
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME PTR XOR_ASSIGN
##
-## Ends in an error in state: 64.
+## Ends in an error in state: 72.
##
## postfix_expression -> postfix_expression PTR . general_identifier [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1569,7 +1569,7 @@ At this point, the name of a struct or union member is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LBRACK PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 140.
+## Ends in an error in state: 148.
##
## expression -> expression . COMMA assignment_expression [ RBRACK COMMA ]
## postfix_expression -> postfix_expression LBRACK expression . RBRACK [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
@@ -1581,21 +1581,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LBRACK PRE_NAM
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
# We know for sure that an array subscript expression has begun, and
@@ -1614,7 +1614,7 @@ then at this point, a closing bracket ']' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LBRACK XOR_ASSIGN
##
-## Ends in an error in state: 139.
+## Ends in an error in state: 147.
##
## postfix_expression -> postfix_expression LBRACK . expression RBRACK [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1629,7 +1629,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 136.
+## Ends in an error in state: 144.
##
## argument_expression_list -> argument_expression_list . COMMA assignment_expression [ RPAREN COMMA ]
## option(argument_expression_list) -> argument_expression_list . [ RPAREN ]
@@ -1641,21 +1641,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LPAREN PRE_NAM
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 135, spurious reduction of production argument_expression_list -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 143, spurious reduction of production argument_expression_list -> assignment_expression
##
Up to this point, a list of expressions has been recognized:
@@ -1667,7 +1667,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 66.
+## Ends in an error in state: 74.
##
## postfix_expression -> postfix_expression LPAREN . option(argument_expression_list) RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
##
@@ -1685,7 +1685,7 @@ followed with a closing parenthesis ')', is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME QUESTION PRE_NAME VAR_NAME COLON XOR_ASSIGN
##
-## Ends in an error in state: 127.
+## Ends in an error in state: 135.
##
## conditional_expression -> logical_or_expression QUESTION expression COLON . conditional_expression [ SEMICOLON RPAREN RBRACK RBRACE COMMA COLON ]
##
@@ -1694,7 +1694,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME QUESTION PRE_N
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME QUESTION XOR_ASSIGN
##
-## Ends in an error in state: 105.
+## Ends in an error in state: 113.
##
## conditional_expression -> logical_or_expression QUESTION . expression COLON conditional_expression [ SEMICOLON RPAREN RBRACK RBRACE COMMA COLON ]
##
@@ -1709,7 +1709,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME QUESTION PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 123.
+## Ends in an error in state: 131.
##
## conditional_expression -> logical_or_expression QUESTION expression . COLON conditional_expression [ SEMICOLON RPAREN RBRACK RBRACE COMMA COLON ]
## expression -> expression . COMMA assignment_expression [ COMMA COLON ]
@@ -1721,21 +1721,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ PRE_NAME VAR_NAME QUESTION PRE_N
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
# gcc and clang simply expect a colon.
@@ -1752,10 +1752,10 @@ then at this point, a colon ':' is expected.
translation_unit_file: PACKED LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 383.
+## Ends in an error in state: 392.
##
## argument_expression_list -> argument_expression_list . COMMA assignment_expression [ RPAREN COMMA ]
-## attribute_specifier -> PACKED LPAREN argument_expression_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> PACKED LPAREN argument_expression_list . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PACKED LPAREN argument_expression_list
@@ -1764,21 +1764,21 @@ translation_unit_file: PACKED LPAREN PRE_NAME VAR_NAME SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 135, spurious reduction of production argument_expression_list -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 143, spurious reduction of production argument_expression_list -> assignment_expression
##
Ill-formed $2 attribute.
@@ -1793,7 +1793,7 @@ translation_unit_file: PACKED LPAREN XOR_ASSIGN
##
## Ends in an error in state: 19.
##
-## attribute_specifier -> PACKED LPAREN . argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> PACKED LPAREN . argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PACKED LPAREN
@@ -1828,7 +1828,7 @@ translation_unit_file: PACKED XOR_ASSIGN
##
## Ends in an error in state: 18.
##
-## attribute_specifier -> PACKED . LPAREN argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
+## attribute_specifier -> PACKED . LPAREN argument_expression_list RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER RBRACK PRE_NAME PLUS PACKED NORETURN MINUS LPAREN LONG LBRACK LBRACE INT INLINE INC FLOAT EXTERN EQ ENUM DOUBLE DEC CONSTANT CONST COMMA COLON CHAR BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AUTO ATTRIBUTE AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PACKED
@@ -1848,7 +1848,7 @@ translation_unit_file: XOR_ASSIGN
##
## Ends in an error in state: 2.
##
-## list(translation_item) -> list(translation_item) . translation_item [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PRAGMA PACKED LONG INT INLINE FLOAT EXTERN EOF ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(translation_item) -> list(translation_item) . translation_item [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PRAGMA PACKED NORETURN LONG INT INLINE FLOAT EXTERN EOF ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
## translation_unit_file -> list(translation_item) . EOF [ # ]
##
## The known suffix of the stack is as follows:
@@ -1869,92 +1869,92 @@ At this point, one of the following is expected:
translation_unit_file: TYPEDEF PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 386.
+## Ends in an error in state: 395.
##
## declaration_specifiers_typedef -> TYPEDEF list(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## TYPEDEF list(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: PRE_NAME TYPEDEF_NAME TYPEDEF XOR_ASSIGN
##
-## Ends in an error in state: 395.
+## Ends in an error in state: 404.
##
## declaration_specifiers_typedef -> typedef_name list(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## typedef_name list(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type)
##
translation_unit_file: VOLATILE TYPEDEF PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 405.
+## Ends in an error in state: 414.
##
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: VOLATILE PRE_NAME TYPEDEF_NAME TYPEDEF XOR_ASSIGN
##
-## Ends in an error in state: 411.
+## Ends in an error in state: 420.
##
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type)
##
translation_unit_file: TYPEDEF INT XOR_ASSIGN
##
-## Ends in an error in state: 388.
+## Ends in an error in state: 397.
##
## declaration_specifiers_typedef -> TYPEDEF list(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## TYPEDEF list(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: INT TYPEDEF XOR_ASSIGN
##
-## Ends in an error in state: 399.
+## Ends in an error in state: 408.
##
## declaration_specifiers_typedef -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) TYPEDEF list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) TYPEDEF list(declaration_specifier_no_typedef_name)
##
translation_unit_file: VOLATILE TYPEDEF INT XOR_ASSIGN
##
-## Ends in an error in state: 407.
+## Ends in an error in state: 416.
##
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: VOLATILE INT TYPEDEF XOR_ASSIGN
##
-## Ends in an error in state: 415.
+## Ends in an error in state: 424.
##
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) TYPEDEF list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) TYPEDEF list(declaration_specifier_no_typedef_name)
@@ -1994,24 +1994,24 @@ translation_unit_file: TYPEDEF XOR_ASSIGN
##
## declaration_specifiers_typedef -> TYPEDEF list(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> TYPEDEF list(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## TYPEDEF list(declaration_specifier_no_type)
##
translation_unit_file: VOLATILE TYPEDEF XOR_ASSIGN
##
-## Ends in an error in state: 403.
+## Ends in an error in state: 412.
##
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type)
@@ -2038,7 +2038,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 219.
+## Ends in an error in state: 222.
##
## declaration_specifiers(parameter_declaration) -> rlist(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
## declaration_specifiers(parameter_declaration) -> rlist(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
@@ -2050,7 +2050,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN VOLATILE XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 211, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
+## In state 214, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
##
# Analogous to the above, except we are in the context of a parameter declaration,
@@ -2074,50 +2074,50 @@ At this point, one of the following is expected:
translation_unit_file: PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 393.
+## Ends in an error in state: 402.
##
## declaration_specifiers(declaration(external_declaration)) -> typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> typedef_name list(declaration_specifier_no_type) . TYPEDEF list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: VOLATILE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 409.
+## Ends in an error in state: 418.
##
## declaration_specifiers(declaration(external_declaration)) -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . TYPEDEF list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT XOR_ASSIGN
##
-## Ends in an error in state: 397.
+## Ends in an error in state: 406.
##
## declaration_specifiers(declaration(external_declaration)) -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . TYPEDEF list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: VOLATILE INT XOR_ASSIGN
##
-## Ends in an error in state: 413.
+## Ends in an error in state: 422.
##
## declaration_specifiers(declaration(external_declaration)) -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . TYPEDEF list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
@@ -2174,46 +2174,46 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 198.
+## Ends in an error in state: 201.
##
## declaration_specifiers(parameter_declaration) -> typedef_name list(declaration_specifier_no_type) . [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN VOLATILE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 221.
+## Ends in an error in state: 224.
##
## declaration_specifiers(parameter_declaration) -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT XOR_ASSIGN
##
-## Ends in an error in state: 204.
+## Ends in an error in state: 207.
##
## declaration_specifiers(parameter_declaration) -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN VOLATILE INT XOR_ASSIGN
##
-## Ends in an error in state: 223.
+## Ends in an error in state: 226.
##
## declaration_specifiers(parameter_declaration) -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR RPAREN PRE_NAME LPAREN LBRACK COMMA ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
@@ -2259,7 +2259,7 @@ At this point, one of the following is expected:
translation_unit_file: VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 401.
+## Ends in an error in state: 410.
##
## declaration_specifiers(declaration(external_declaration)) -> rlist(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers(declaration(external_declaration)) -> rlist(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
@@ -2275,7 +2275,7 @@ translation_unit_file: VOLATILE XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 211, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
+## In state 214, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
##
# We have seen some specifiers or qualifiers. We have probably seen at least
@@ -2304,7 +2304,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 510.
+## Ends in an error in state: 519.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
@@ -2320,7 +2320,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 211, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
+## In state 214, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
##
# Identical to the previous one, except we are not at the top level,
# so we know this cannot be the beginning of a function definition.
@@ -2335,50 +2335,50 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE PRE_NAME TYPEDEF_NAME VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 507.
+## Ends in an error in state: 516.
##
## declaration_specifiers(declaration(block_item)) -> typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> typedef_name list(declaration_specifier_no_type) . TYPEDEF list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE VOLATILE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 512.
+## Ends in an error in state: 521.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . TYPEDEF list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE INT XOR_ASSIGN
##
-## Ends in an error in state: 509.
+## Ends in an error in state: 518.
##
## declaration_specifiers(declaration(block_item)) -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . TYPEDEF list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE VOLATILE INT XOR_ASSIGN
##
-## Ends in an error in state: 514.
+## Ends in an error in state: 523.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . TYPEDEF list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
@@ -2414,7 +2414,7 @@ At this point, one of the following is expected:
translation_unit_file: UNION LBRACE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 179.
+## Ends in an error in state: 181.
##
## struct_declaration -> specifier_qualifier_list(struct_declaration) . option(struct_declarator_list) SEMICOLON [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT SIGNED SHORT RESTRICT RBRACE PRE_NAME PACKED LONG INT FLOAT ENUM DOUBLE CONST CHAR ATTRIBUTE ALIGNAS ]
##
@@ -2425,7 +2425,7 @@ translation_unit_file: UNION LBRACE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 165, spurious reduction of production specifier_qualifier_list(struct_declaration) -> typedef_name option(type_qualifier_list)
+## In state 167, spurious reduction of production specifier_qualifier_list(struct_declaration) -> typedef_name option(type_qualifier_list)
##
# We have (spuriously) recognized a specifier_qualifier_list,
@@ -2459,7 +2459,7 @@ at this point, one of the following is expected:
translation_unit_file: UNION LBRACE LONG COLON CONSTANT RPAREN
##
-## Ends in an error in state: 284.
+## Ends in an error in state: 287.
##
## option(struct_declarator_list) -> struct_declarator_list . [ SEMICOLON ]
## struct_declarator_list -> struct_declarator_list . COMMA struct_declarator [ SEMICOLON COMMA ]
@@ -2471,21 +2471,21 @@ translation_unit_file: UNION LBRACE LONG COLON CONSTANT RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 59, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 289, spurious reduction of production struct_declarator -> option(declarator) COLON conditional_expression
-## In state 291, spurious reduction of production struct_declarator_list -> struct_declarator
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 67, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 292, spurious reduction of production struct_declarator -> option(declarator) COLON conditional_expression
+## In state 294, spurious reduction of production struct_declarator_list -> struct_declarator
##
# We have seen a non-empty struct_declarator_list.
@@ -2503,7 +2503,7 @@ then at this point, a semicolon ';' is expected.
translation_unit_file: UNION LBRACE INT COLON XOR_ASSIGN
##
-## Ends in an error in state: 288.
+## Ends in an error in state: 291.
##
## struct_declarator -> option(declarator) COLON . conditional_expression [ SEMICOLON COMMA ]
##
@@ -2518,7 +2518,7 @@ At this point, a constant expression is expected.
translation_unit_file: UNION LBRACE INT PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 285.
+## Ends in an error in state: 288.
##
## struct_declarator_list -> struct_declarator_list COMMA . struct_declarator [ SEMICOLON COMMA ]
##
@@ -2533,7 +2533,7 @@ At this point, a struct declarator is expected.
translation_unit_file: UNION LBRACE INT PRE_NAME VAR_NAME RPAREN
##
-## Ends in an error in state: 290.
+## Ends in an error in state: 293.
##
## option(declarator) -> declarator . [ COLON ]
## struct_declarator -> declarator . [ SEMICOLON COMMA ]
@@ -2545,9 +2545,9 @@ translation_unit_file: UNION LBRACE INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 252, spurious reduction of production declarator_noattrend -> direct_declarator
-## In state 257, spurious reduction of production attribute_specifier_list ->
-## In state 258, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
+## In state 255, spurious reduction of production declarator_noattrend -> direct_declarator
+## In state 260, spurious reduction of production attribute_specifier_list ->
+## In state 261, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
##
# Assuming the declarator so far is complete, we expect
@@ -2570,7 +2570,7 @@ then at this point, one of the following is expected:
translation_unit_file: UNION LBRACE VOLATILE ADD_ASSIGN
##
-## Ends in an error in state: 173.
+## Ends in an error in state: 175.
##
## option(type_qualifier_list) -> type_qualifier_list . [ VOLATILE RESTRICT PACKED CONST ATTRIBUTE ALIGNAS ]
## specifier_qualifier_list(struct_declaration) -> type_qualifier_list . typedef_name option(type_qualifier_list) [ STAR SEMICOLON PRE_NAME LPAREN COLON ]
@@ -2593,10 +2593,10 @@ At this point, one of the following is expected:
translation_unit_file: UNION LBRACE XOR_ASSIGN
##
-## Ends in an error in state: 162.
+## Ends in an error in state: 164.
##
## struct_declaration_list -> struct_declaration_list . struct_declaration [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT SIGNED SHORT RESTRICT RBRACE PRE_NAME PACKED LONG INT FLOAT ENUM DOUBLE CONST CHAR ATTRIBUTE ALIGNAS ]
-## struct_or_union_specifier -> struct_or_union attribute_specifier_list option(other_identifier) LBRACE struct_declaration_list . RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## struct_or_union_specifier -> struct_or_union attribute_specifier_list option(other_identifier) LBRACE struct_declaration_list . RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## struct_or_union attribute_specifier_list option(other_identifier) LBRACE struct_declaration_list
@@ -2613,10 +2613,10 @@ At this point, one of the following is expected:
translation_unit_file: UNION XOR_ASSIGN
##
-## Ends in an error in state: 159.
+## Ends in an error in state: 161.
##
-## struct_or_union_specifier -> struct_or_union attribute_specifier_list . option(other_identifier) LBRACE struct_declaration_list RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
-## struct_or_union_specifier -> struct_or_union attribute_specifier_list . general_identifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## struct_or_union_specifier -> struct_or_union attribute_specifier_list . option(other_identifier) LBRACE struct_declaration_list RBRACE [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## struct_or_union_specifier -> struct_or_union attribute_specifier_list . general_identifier [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF STRUCT STATIC STAR SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK INT INLINE FLOAT EXTERN ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## struct_or_union attribute_specifier_list
@@ -2625,7 +2625,7 @@ translation_unit_file: UNION XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 158, spurious reduction of production attribute_specifier_list ->
+## In state 160, spurious reduction of production attribute_specifier_list ->
##
# gcc expects '{'.
@@ -2642,9 +2642,9 @@ At this point, one of the following is expected:
translation_unit_file: INT LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 261.
+## Ends in an error in state: 264.
##
-## direct_declarator -> LPAREN save_context declarator . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## direct_declarator -> LPAREN save_context declarator . RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## LPAREN save_context declarator
@@ -2653,9 +2653,9 @@ translation_unit_file: INT LPAREN PRE_NAME VAR_NAME SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 252, spurious reduction of production declarator_noattrend -> direct_declarator
-## In state 257, spurious reduction of production attribute_specifier_list ->
-## In state 258, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
+## In state 255, spurious reduction of production declarator_noattrend -> direct_declarator
+## In state 260, spurious reduction of production attribute_specifier_list ->
+## In state 261, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
##
Up to this point, a declarator have been recognized:
@@ -2667,9 +2667,9 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 185.
+## Ends in an error in state: 187.
##
-## direct_declarator -> LPAREN save_context . declarator RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## direct_declarator -> LPAREN save_context . declarator RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## LPAREN save_context
@@ -2684,7 +2684,7 @@ At this point, a declarator is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 278.
+## Ends in an error in state: 281.
##
## identifier_list -> identifier_list . COMMA PRE_NAME VAR_NAME [ RPAREN COMMA ]
## option(identifier_list) -> identifier_list . [ RPAREN ]
@@ -2703,10 +2703,10 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 191.
+## Ends in an error in state: 193.
##
## context_parameter_type_list -> save_context . parameter_type_list save_context [ RPAREN ]
-## direct_declarator -> direct_declarator LPAREN save_context . option(identifier_list) RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## direct_declarator -> direct_declarator LPAREN save_context . option(identifier_list) RPAREN [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## direct_declarator LPAREN save_context
@@ -2727,9 +2727,9 @@ followed with a closing parenthesis ')', is expected.
translation_unit_file: INT STAR RPAREN
##
-## Ends in an error in state: 188.
+## Ends in an error in state: 190.
##
-## declarator_noattrend -> list(pointer1) STAR option(type_qualifier_list) . direct_declarator [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LONG LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## declarator_noattrend -> list(pointer1) STAR option(type_qualifier_list) . direct_declarator [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
## list(pointer1) -> list(pointer1) STAR option(type_qualifier_list) . [ STAR ]
## type_qualifier_list -> option(type_qualifier_list) . type_qualifier_noattr [ VOLATILE STAR RESTRICT PRE_NAME PACKED LPAREN CONST ATTRIBUTE ALIGNAS ]
## type_qualifier_list -> option(type_qualifier_list) . attribute_specifier [ VOLATILE STAR RESTRICT PRE_NAME PACKED LPAREN CONST ATTRIBUTE ALIGNAS ]
@@ -2760,7 +2760,7 @@ At this point, one of the following is expected:
translation_unit_file: TYPEDEF INT PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 526.
+## Ends in an error in state: 535.
##
## option(typedef_declarator_list) -> typedef_declarator_list . [ SEMICOLON ]
## typedef_declarator_list -> typedef_declarator_list . COMMA typedef_declarator [ SEMICOLON COMMA ]
@@ -2772,12 +2772,12 @@ translation_unit_file: TYPEDEF INT PRE_NAME VAR_NAME XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 252, spurious reduction of production declarator_noattrend -> direct_declarator
-## In state 257, spurious reduction of production attribute_specifier_list ->
-## In state 258, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
-## In state 530, spurious reduction of production declare_typename(declarator) -> declarator
-## In state 529, spurious reduction of production typedef_declarator -> declare_typename(declarator)
-## In state 531, spurious reduction of production typedef_declarator_list -> typedef_declarator
+## In state 255, spurious reduction of production declarator_noattrend -> direct_declarator
+## In state 260, spurious reduction of production attribute_specifier_list ->
+## In state 261, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
+## In state 539, spurious reduction of production declare_typename(declarator) -> declarator
+## In state 538, spurious reduction of production typedef_declarator -> declare_typename(declarator)
+## In state 540, spurious reduction of production typedef_declarator_list -> typedef_declarator
##
# Because attribute_specifier_list, declarator and declarator_noattrend have been marked
@@ -2803,7 +2803,7 @@ then at this point, a semicolon ';' is expected.
translation_unit_file: TYPEDEF INT PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 527.
+## Ends in an error in state: 536.
##
## typedef_declarator_list -> typedef_declarator_list COMMA . typedef_declarator [ SEMICOLON COMMA ]
##
@@ -2817,7 +2817,7 @@ At this point, a declarator is expected.
translation_unit_file: ALIGNAS LPAREN INT LPAREN RPAREN LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 246.
+## Ends in an error in state: 249.
##
## direct_abstract_declarator -> direct_abstract_declarator LPAREN . option(context_parameter_type_list) RPAREN [ RPAREN LPAREN LBRACK COMMA ]
##
@@ -2832,7 +2832,7 @@ followed with a closing parenthesis ')', is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM CONST XOR_ASSIGN
##
-## Ends in an error in state: 442.
+## Ends in an error in state: 451.
##
## asm_attributes -> CONST . asm_attributes [ LPAREN ]
##
@@ -2841,7 +2841,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 441.
+## Ends in an error in state: 450.
##
## asm_attributes -> VOLATILE . asm_attributes [ LPAREN ]
##
@@ -2850,9 +2850,9 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM XOR_ASSIGN
##
-## Ends in an error in state: 440.
+## Ends in an error in state: 449.
##
-## asm_statement -> ASM . asm_attributes LPAREN string_literals_list asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## asm_statement -> ASM . asm_attributes LPAREN string_literals_list asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ASM
@@ -2867,7 +2867,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON COLON COLON STRING_LITERAL COMMA XOR_ASSIGN
##
-## Ends in an error in state: 466.
+## Ends in an error in state: 475.
##
## asm_flags -> asm_flags COMMA . string_literals_list [ RPAREN COMMA ]
##
@@ -2879,7 +2879,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
# first(asm_flags) = STRING_LITERAL
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON COLON COLON XOR_ASSIGN
##
-## Ends in an error in state: 463.
+## Ends in an error in state: 472.
##
## asm_arguments -> COLON asm_operands COLON asm_operands COLON . asm_flags [ RPAREN ]
##
@@ -2899,7 +2899,7 @@ Examples of clobbered resources:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON COLON COLON STRING_LITERAL XOR_ASSIGN
##
-## Ends in an error in state: 465.
+## Ends in an error in state: 474.
##
## asm_arguments -> COLON asm_operands COLON asm_operands COLON asm_flags . [ RPAREN ]
## asm_flags -> asm_flags . COMMA string_literals_list [ RPAREN COMMA ]
@@ -2911,7 +2911,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 464, spurious reduction of production asm_flags -> string_literals_list
+## In state 473, spurious reduction of production asm_flags -> string_literals_list
##
# Let's ignore the possibility of concatenating string literals.
@@ -2928,7 +2928,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON STRING_LITERAL LPAREN CONSTANT RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 460.
+## Ends in an error in state: 469.
##
## asm_arguments -> COLON asm_operands . [ RPAREN ]
## asm_arguments -> COLON asm_operands . COLON asm_operands [ RPAREN ]
@@ -2941,7 +2941,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 452, spurious reduction of production asm_operands -> asm_operands_ne
+## In state 461, spurious reduction of production asm_operands -> asm_operands_ne
##
# We have seen one COLON, hence the outputs. (The list of outputs may be empty.)
@@ -2958,7 +2958,7 @@ then at this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON COLON XOR_ASSIGN
##
-## Ends in an error in state: 462.
+## Ends in an error in state: 471.
##
## asm_arguments -> COLON asm_operands COLON asm_operands . [ RPAREN ]
## asm_arguments -> COLON asm_operands COLON asm_operands . COLON asm_flags [ RPAREN ]
@@ -2970,7 +2970,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 461, spurious reduction of production asm_operands ->
+## In state 470, spurious reduction of production asm_operands ->
##
# We have seen two COLONs, hence the outputs and inputs. (The list of inputs may be empty.)
@@ -2990,7 +2990,7 @@ then at this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON LBRACK PRE_NAME VAR_NAME RBRACK XOR_ASSIGN
##
-## Ends in an error in state: 455.
+## Ends in an error in state: 464.
##
## asm_operand -> asm_op_name . string_literals_list LPAREN expression RPAREN [ RPAREN COMMA COLON ]
##
@@ -3009,7 +3009,7 @@ At this point, a string literal, representing a constraint, is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON LBRACK PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 450.
+## Ends in an error in state: 459.
##
## asm_op_name -> LBRACK general_identifier . RBRACK [ STRING_LITERAL ]
##
@@ -3024,7 +3024,7 @@ At this point, a closing bracket ']' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON LBRACK XOR_ASSIGN
##
-## Ends in an error in state: 449.
+## Ends in an error in state: 458.
##
## asm_op_name -> LBRACK . general_identifier RBRACK [ STRING_LITERAL ]
##
@@ -3039,7 +3039,7 @@ At this point, an identifier is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON STRING_LITERAL LPAREN CONSTANT RPAREN COMMA XOR_ASSIGN
##
-## Ends in an error in state: 453.
+## Ends in an error in state: 462.
##
## asm_operands_ne -> asm_operands_ne COMMA . asm_operand [ RPAREN COMMA COLON ]
##
@@ -3056,7 +3056,7 @@ At this point, an assembly operand is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON STRING_LITERAL LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 458.
+## Ends in an error in state: 467.
##
## asm_operand -> asm_op_name string_literals_list LPAREN expression . RPAREN [ RPAREN COMMA COLON ]
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
@@ -3068,21 +3068,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Ill-formed assembly operand.
@@ -3095,7 +3095,7 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON STRING_LITERAL LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 457.
+## Ends in an error in state: 466.
##
## asm_operand -> asm_op_name string_literals_list LPAREN . expression RPAREN [ RPAREN COMMA COLON ]
##
@@ -3110,7 +3110,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL COLON STRING_LITERAL XOR_ASSIGN
##
-## Ends in an error in state: 456.
+## Ends in an error in state: 465.
##
## asm_operand -> asm_op_name string_literals_list . LPAREN expression RPAREN [ RPAREN COMMA COLON ]
## string_literals_list -> string_literals_list . STRING_LITERAL [ STRING_LITERAL LPAREN ]
@@ -3130,9 +3130,9 @@ followed with an expression and a closing parenthesis ')', is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL XOR_ASSIGN
##
-## Ends in an error in state: 447.
+## Ends in an error in state: 456.
##
-## asm_statement -> ASM asm_attributes LPAREN string_literals_list . asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## asm_statement -> ASM asm_attributes LPAREN string_literals_list . asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
## string_literals_list -> string_literals_list . STRING_LITERAL [ STRING_LITERAL RPAREN COLON ]
##
## The known suffix of the stack is as follows:
@@ -3152,9 +3152,9 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 446.
+## Ends in an error in state: 455.
##
-## asm_statement -> ASM asm_attributes LPAREN . string_literals_list asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## asm_statement -> ASM asm_attributes LPAREN . string_literals_list asm_arguments RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ASM asm_attributes LPAREN
@@ -3167,45 +3167,45 @@ At this point, a string literal, representing an instruction, is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE BREAK XOR_ASSIGN
##
-## Ends in an error in state: 438.
+## Ends in an error in state: 447.
##
-## jump_statement -> BREAK . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## jump_statement -> BREAK . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## BREAK
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE CONTINUE XOR_ASSIGN
##
-## Ends in an error in state: 433.
+## Ends in an error in state: 442.
##
-## jump_statement -> CONTINUE . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## jump_statement -> CONTINUE . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## CONTINUE
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO SEMICOLON WHILE LPAREN PRE_NAME VAR_NAME RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 557.
+## Ends in an error in state: 566.
##
-## iteration_statement -> save_context do_statement1 WHILE LPAREN expression RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context do_statement1 WHILE LPAREN expression RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context do_statement1 WHILE LPAREN expression RPAREN
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE GOTO PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 429.
+## Ends in an error in state: 438.
##
-## jump_statement -> GOTO general_identifier . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## jump_statement -> GOTO general_identifier . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## GOTO general_identifier
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE ASM LPAREN STRING_LITERAL RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 470.
+## Ends in an error in state: 479.
##
-## asm_statement -> ASM asm_attributes LPAREN string_literals_list asm_arguments RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## asm_statement -> ASM asm_attributes LPAREN string_literals_list asm_arguments RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## ASM asm_attributes LPAREN string_literals_list asm_arguments RPAREN
@@ -3218,27 +3218,27 @@ At this point, a semicolon ';' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE CASE CONSTANT COLON XOR_ASSIGN
##
-## Ends in an error in state: 437.
+## Ends in an error in state: 446.
##
-## labeled_statement -> CASE conditional_expression COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> CASE conditional_expression COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## CASE conditional_expression COLON
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DEFAULT COLON XOR_ASSIGN
##
-## Ends in an error in state: 432.
+## Ends in an error in state: 441.
##
-## labeled_statement -> DEFAULT COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> DEFAULT COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## DEFAULT COLON
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE PRE_NAME VAR_NAME COLON XOR_ASSIGN
##
-## Ends in an error in state: 486.
+## Ends in an error in state: 495.
##
-## labeled_statement -> general_identifier COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> general_identifier COLON . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## general_identifier COLON
@@ -3253,9 +3253,9 @@ At this point, a statement is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE CASE CONSTANT SEMICOLON
##
-## Ends in an error in state: 436.
+## Ends in an error in state: 445.
##
-## labeled_statement -> CASE conditional_expression . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> CASE conditional_expression . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## CASE conditional_expression
@@ -3264,19 +3264,19 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 59, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 67, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
##
Ill-formed labeled statement.
@@ -3289,9 +3289,9 @@ then at this point, a colon ':' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE CASE XOR_ASSIGN
##
-## Ends in an error in state: 435.
+## Ends in an error in state: 444.
##
-## labeled_statement -> CASE . conditional_expression COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> CASE . conditional_expression COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## CASE
@@ -3304,18 +3304,18 @@ At this point, a constant expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DEFAULT XOR_ASSIGN
##
-## Ends in an error in state: 431.
+## Ends in an error in state: 440.
##
-## labeled_statement -> DEFAULT . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> DEFAULT . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## DEFAULT
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 485.
+## Ends in an error in state: 494.
##
-## labeled_statement -> general_identifier . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## labeled_statement -> general_identifier . COLON statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## general_identifier
@@ -3330,10 +3330,10 @@ At this point, a colon ':' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO SEMICOLON WHILE LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 556.
+## Ends in an error in state: 565.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
-## iteration_statement -> save_context do_statement1 WHILE LPAREN expression . RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context do_statement1 WHILE LPAREN expression . RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context do_statement1 WHILE LPAREN expression
@@ -3342,21 +3342,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Ill-formed 'do' ... 'while' statement.
@@ -3369,9 +3369,9 @@ then at this point, a closing parenthesis ')' and a semicolon ';' are expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO SEMICOLON WHILE LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 555.
+## Ends in an error in state: 564.
##
-## iteration_statement -> save_context do_statement1 WHILE LPAREN . expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context do_statement1 WHILE LPAREN . expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context do_statement1 WHILE LPAREN
@@ -3384,9 +3384,9 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO SEMICOLON WHILE XOR_ASSIGN
##
-## Ends in an error in state: 554.
+## Ends in an error in state: 563.
##
-## iteration_statement -> save_context do_statement1 WHILE . LPAREN expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context do_statement1 WHILE . LPAREN expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context do_statement1 WHILE
@@ -3399,9 +3399,9 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO SEMICOLON XOR_ASSIGN
##
-## Ends in an error in state: 553.
+## Ends in an error in state: 562.
##
-## iteration_statement -> save_context do_statement1 . WHILE LPAREN expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context do_statement1 . WHILE LPAREN expression RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context do_statement1
@@ -3420,7 +3420,7 @@ At this point, a 'while' keyword is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO XOR_ASSIGN
##
-## Ends in an error in state: 549.
+## Ends in an error in state: 558.
##
## do_statement1 -> save_context DO . statement [ WHILE ]
##
@@ -3437,9 +3437,9 @@ At this point, a statement (the loop body) is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN SEMICOLON SEMICOLON RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 519.
+## Ends in an error in state: 528.
##
-## iteration_statement -> save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN)
@@ -3452,10 +3452,10 @@ At this point, a statement (the loop body) is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN SEMICOLON SEMICOLON PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 521.
+## Ends in an error in state: 530.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
-## optional(expression,RPAREN) -> expression . RPAREN [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BREAK BANG ASM AND ALIGNOF ]
+## optional(expression,RPAREN) -> expression . RPAREN [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG ASM AND ALIGNOF ]
##
## The known suffix of the stack is as follows:
## expression
@@ -3464,21 +3464,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
# The use of optional(expression,RPAREN) tells us that we are in a FOR statement.
@@ -3494,9 +3494,9 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN SEMICOLON SEMICOLON XOR_ASSIGN
##
-## Ends in an error in state: 517.
+## Ends in an error in state: 526.
##
-## iteration_statement -> save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON) . optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON) . optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context FOR LPAREN for_statement_header optional(expression,SEMICOLON)
@@ -3514,9 +3514,9 @@ followed with a closing parenthesis ')', is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN SEMICOLON XOR_ASSIGN
##
-## Ends in an error in state: 516.
+## Ends in an error in state: 525.
##
-## iteration_statement -> save_context FOR LPAREN for_statement_header . optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context FOR LPAREN for_statement_header . optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context FOR LPAREN for_statement_header
@@ -3533,10 +3533,10 @@ followed with a semicolon ';', is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN PRE_NAME VAR_NAME RPAREN
##
-## Ends in an error in state: 523.
+## Ends in an error in state: 532.
##
## expression -> expression . COMMA assignment_expression [ SEMICOLON COMMA ]
-## optional(expression,SEMICOLON) -> expression . SEMICOLON [ TILDE STRING_LITERAL STAR SIZEOF SEMICOLON RPAREN PRE_NAME PLUS MINUS LPAREN INC DEC CONSTANT BUILTIN_VA_ARG BANG AND ALIGNOF ]
+## optional(expression,SEMICOLON) -> expression . SEMICOLON [ TILDE STRING_LITERAL STAR SIZEOF SEMICOLON RPAREN PRE_NAME PLUS MINUS LPAREN INC DEC CONSTANT BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AND ALIGNOF ]
##
## The known suffix of the stack is as follows:
## expression
@@ -3545,21 +3545,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
# At the time of writing, optional(expression,SEMICOLON) is used only in FOR
@@ -3575,9 +3575,9 @@ then at this point, a semicolon ';' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 504.
+## Ends in an error in state: 513.
##
-## iteration_statement -> save_context FOR LPAREN . for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context FOR LPAREN . for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context FOR LPAREN
@@ -3596,9 +3596,9 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE FOR XOR_ASSIGN
##
-## Ends in an error in state: 503.
+## Ends in an error in state: 512.
##
-## iteration_statement -> save_context FOR . LPAREN for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context FOR . LPAREN for_statement_header optional(expression,SEMICOLON) optional(expression,RPAREN) statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context FOR
@@ -3611,9 +3611,9 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE GOTO XOR_ASSIGN
##
-## Ends in an error in state: 428.
+## Ends in an error in state: 437.
##
-## jump_statement -> GOTO . general_identifier SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## jump_statement -> GOTO . general_identifier SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## GOTO
@@ -3626,9 +3626,9 @@ At this point, an identifier (a 'goto' label) is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE DO IF LPAREN CONSTANT RPAREN SEMICOLON ELSE XOR_ASSIGN
##
-## Ends in an error in state: 551.
+## Ends in an error in state: 560.
##
-## selection_statement -> save_context ifelse_statement1 . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## selection_statement -> save_context ifelse_statement1 . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context ifelse_statement1
@@ -3641,10 +3641,10 @@ At this point, a statement is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE IF LPAREN PRE_NAME VAR_NAME RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 500.
+## Ends in an error in state: 509.
##
-## ifelse_statement1 -> IF LPAREN expression RPAREN save_context . statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BREAK BANG ASM AND ALIGNOF ]
-## selection_statement -> save_context IF LPAREN expression RPAREN save_context . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## ifelse_statement1 -> IF LPAREN expression RPAREN save_context . statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG ASM AND ALIGNOF ]
+## selection_statement -> save_context IF LPAREN expression RPAREN save_context . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context IF LPAREN expression RPAREN save_context
@@ -3657,11 +3657,11 @@ At this point, a statement is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE IF LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 498.
+## Ends in an error in state: 507.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
-## ifelse_statement1 -> IF LPAREN expression . RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BREAK BANG ASM AND ALIGNOF ]
-## selection_statement -> save_context IF LPAREN expression . RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## ifelse_statement1 -> IF LPAREN expression . RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG ASM AND ALIGNOF ]
+## selection_statement -> save_context IF LPAREN expression . RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context IF LPAREN expression
@@ -3670,21 +3670,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Ill-formed 'if' statement.
@@ -3697,10 +3697,10 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE IF LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 497.
+## Ends in an error in state: 506.
##
-## ifelse_statement1 -> IF LPAREN . expression RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BREAK BANG ASM AND ALIGNOF ]
-## selection_statement -> save_context IF LPAREN . expression RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## ifelse_statement1 -> IF LPAREN . expression RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG ASM AND ALIGNOF ]
+## selection_statement -> save_context IF LPAREN . expression RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context IF LPAREN
@@ -3713,10 +3713,10 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE IF XOR_ASSIGN
##
-## Ends in an error in state: 496.
+## Ends in an error in state: 505.
##
-## ifelse_statement1 -> IF . LPAREN expression RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BREAK BANG ASM AND ALIGNOF ]
-## selection_statement -> save_context IF . LPAREN expression RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## ifelse_statement1 -> IF . LPAREN expression RPAREN save_context statement ELSE [ WHILE TILDE SWITCH STRING_LITERAL STAR SIZEOF SEMICOLON RETURN PRE_NAME PLUS MINUS LPAREN LBRACE INC IF GOTO FOR DO DEFAULT DEC CONTINUE CONSTANT CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG ASM AND ALIGNOF ]
+## selection_statement -> save_context IF . LPAREN expression RPAREN save_context statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context IF
@@ -3729,9 +3729,9 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE SWITCH LPAREN PRE_NAME VAR_NAME RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 494.
+## Ends in an error in state: 503.
##
-## selection_statement -> save_context SWITCH LPAREN expression RPAREN . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## selection_statement -> save_context SWITCH LPAREN expression RPAREN . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context SWITCH LPAREN expression RPAREN
@@ -3753,10 +3753,10 @@ enclosed within braces '{' and '}'.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE SWITCH LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 493.
+## Ends in an error in state: 502.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
-## selection_statement -> save_context SWITCH LPAREN expression . RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## selection_statement -> save_context SWITCH LPAREN expression . RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context SWITCH LPAREN expression
@@ -3765,21 +3765,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Ill-formed 'switch' statement.
@@ -3792,9 +3792,9 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE SWITCH LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 492.
+## Ends in an error in state: 501.
##
-## selection_statement -> save_context SWITCH LPAREN . expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## selection_statement -> save_context SWITCH LPAREN . expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context SWITCH LPAREN
@@ -3807,9 +3807,9 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE SWITCH XOR_ASSIGN
##
-## Ends in an error in state: 491.
+## Ends in an error in state: 500.
##
-## selection_statement -> save_context SWITCH . LPAREN expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## selection_statement -> save_context SWITCH . LPAREN expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context SWITCH
@@ -3822,9 +3822,9 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE WHILE LPAREN PRE_NAME VAR_NAME RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 478.
+## Ends in an error in state: 487.
##
-## iteration_statement -> save_context WHILE LPAREN expression RPAREN . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context WHILE LPAREN expression RPAREN . statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context WHILE LPAREN expression RPAREN
@@ -3837,10 +3837,10 @@ At this point, a statement (the loop body) is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE WHILE LPAREN PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 477.
+## Ends in an error in state: 486.
##
## expression -> expression . COMMA assignment_expression [ RPAREN COMMA ]
-## iteration_statement -> save_context WHILE LPAREN expression . RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context WHILE LPAREN expression . RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context WHILE LPAREN expression
@@ -3849,21 +3849,21 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Ill-formed 'while' statement.
@@ -3876,9 +3876,9 @@ then at this point, a closing parenthesis ')' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE WHILE LPAREN XOR_ASSIGN
##
-## Ends in an error in state: 476.
+## Ends in an error in state: 485.
##
-## iteration_statement -> save_context WHILE LPAREN . expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context WHILE LPAREN . expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context WHILE LPAREN
@@ -3891,9 +3891,9 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE WHILE XOR_ASSIGN
##
-## Ends in an error in state: 475.
+## Ends in an error in state: 484.
##
-## iteration_statement -> save_context WHILE . LPAREN expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## iteration_statement -> save_context WHILE . LPAREN expression RPAREN statement [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context WHILE
@@ -3906,10 +3906,10 @@ At this point, an opening parenthesis '(' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE XOR_ASSIGN
##
-## Ends in an error in state: 419.
+## Ends in an error in state: 428.
##
-## block_item_list -> option(block_item_list) . block_item [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
-## compound_statement -> save_context LBRACE option(block_item_list) . RBRACE [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## block_item_list -> option(block_item_list) . block_item [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## compound_statement -> save_context LBRACE option(block_item_list) . RBRACE [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## save_context LBRACE option(block_item_list)
@@ -3934,9 +3934,9 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE RETURN XOR_ASSIGN
##
-## Ends in an error in state: 420.
+## Ends in an error in state: 429.
##
-## jump_statement -> RETURN . option(expression) SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## jump_statement -> RETURN . option(expression) SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN ENUM ELSE DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## RETURN
@@ -3953,7 +3953,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE STRING_LITERAL RPAREN
##
-## Ends in an error in state: 423.
+## Ends in an error in state: 432.
##
## expression -> expression . COMMA assignment_expression [ SEMICOLON COMMA ]
## option(expression) -> expression . [ SEMICOLON ]
@@ -3965,23 +3965,23 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 60, spurious reduction of production primary_expression -> string_literals_list
-## In state 62, spurious reduction of production postfix_expression -> primary_expression
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 129, spurious reduction of production expression -> assignment_expression
+## In state 68, spurious reduction of production primary_expression -> string_literals_list
+## In state 70, spurious reduction of production postfix_expression -> primary_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 137, spurious reduction of production expression -> assignment_expression
##
Up to this point, an expression has been recognized:
@@ -3993,7 +3993,7 @@ then at this point, a semicolon ';' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 560.
+## Ends in an error in state: 569.
##
## declaration_specifiers(declaration(block_item)) -> typedef_name . list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers_typedef -> typedef_name . list(declaration_specifier_no_type) TYPEDEF list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
@@ -4028,7 +4028,7 @@ at this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME RPAREN LBRACE PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 124.
+## Ends in an error in state: 132.
##
## expression -> expression COMMA . assignment_expression [ SEMICOLON RPAREN RBRACK COMMA COLON ]
##
@@ -4043,7 +4043,7 @@ At this point, an expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME COMMA PRE_NAME VAR_NAME RPAREN
##
-## Ends in an error in state: 537.
+## Ends in an error in state: 546.
##
## init_declarator_list -> init_declarator_list . COMMA init_declarator [ SEMICOLON COMMA ]
## option(init_declarator_list) -> init_declarator_list . [ SEMICOLON ]
@@ -4055,12 +4055,12 @@ translation_unit_file: INT PRE_NAME VAR_NAME COMMA PRE_NAME VAR_NAME RPAREN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 252, spurious reduction of production declarator_noattrend -> direct_declarator
-## In state 545, spurious reduction of production declare_varname(declarator_noattrend) -> declarator_noattrend
-## In state 540, spurious reduction of production save_context ->
-## In state 541, spurious reduction of production attribute_specifier_list ->
-## In state 542, spurious reduction of production init_declarator -> declare_varname(declarator_noattrend) save_context attribute_specifier_list
-## In state 539, spurious reduction of production init_declarator_list -> init_declarator_list COMMA init_declarator
+## In state 255, spurious reduction of production declarator_noattrend -> direct_declarator
+## In state 554, spurious reduction of production declare_varname(declarator_noattrend) -> declarator_noattrend
+## In state 549, spurious reduction of production save_context ->
+## In state 550, spurious reduction of production attribute_specifier_list ->
+## In state 551, spurious reduction of production init_declarator -> declare_varname(declarator_noattrend) save_context attribute_specifier_list
+## In state 548, spurious reduction of production init_declarator_list -> init_declarator_list COMMA init_declarator
##
Up to this point, a list of declarators has been recognized:
@@ -4072,7 +4072,7 @@ then at this point, a semicolon ';' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 538.
+## Ends in an error in state: 547.
##
## init_declarator_list -> init_declarator_list COMMA . init_declarator [ SEMICOLON COMMA ]
##
@@ -4087,7 +4087,7 @@ At this point, an init declarator is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE DOT PRE_NAME VAR_NAME EQ ALIGNAS
##
-## Ends in an error in state: 323.
+## Ends in an error in state: 314.
##
## initializer_list -> option(designation) . c_initializer [ RBRACE COMMA ]
##
@@ -4096,7 +4096,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE DOT PRE_NAME VAR_NAME EQ
##
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE PRE_NAME VAR_NAME COMMA DOT PRE_NAME VAR_NAME EQ ALIGNAS
##
-## Ends in an error in state: 327.
+## Ends in an error in state: 318.
##
## initializer_list -> initializer_list COMMA option(designation) . c_initializer [ RBRACE COMMA ]
##
@@ -4111,9 +4111,9 @@ At this point, an initializer is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE DOT PRE_NAME VAR_NAME XOR_ASSIGN
##
-## Ends in an error in state: 330.
+## Ends in an error in state: 321.
##
-## designation -> designator_list . EQ [ TILDE STRING_LITERAL STAR SIZEOF PRE_NAME PLUS MINUS LPAREN LBRACE INC DEC CONSTANT BUILTIN_VA_ARG BANG AND ALIGNOF ]
+## designation -> designator_list . EQ [ TILDE STRING_LITERAL STAR SIZEOF PRE_NAME PLUS MINUS LPAREN LBRACE INC DEC CONSTANT BUILTIN_VA_ARG BUILTIN_OFFSETOF BANG AND ALIGNOF ]
## option(designator_list) -> designator_list . [ LBRACK DOT ]
##
## The known suffix of the stack is as follows:
@@ -4133,9 +4133,9 @@ then at this point, an equals sign '=' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE DOT XOR_ASSIGN
##
-## Ends in an error in state: 320.
+## Ends in an error in state: 311.
##
-## designator -> DOT . general_identifier [ LBRACK EQ DOT ]
+## designator -> DOT . general_identifier [ RPAREN LBRACK EQ DOT ]
##
## The known suffix of the stack is as follows:
## DOT
@@ -4150,9 +4150,9 @@ At this point, the name of a struct or union member is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE LBRACK PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 318.
+## Ends in an error in state: 309.
##
-## designator -> LBRACK conditional_expression . RBRACK [ LBRACK EQ DOT ]
+## designator -> LBRACK conditional_expression . RBRACK [ RPAREN LBRACK EQ DOT ]
##
## The known suffix of the stack is as follows:
## LBRACK conditional_expression
@@ -4161,19 +4161,19 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE LBRACK PRE_NAME VAR_NAME
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 59, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 67, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
##
Ill-formed designator.
@@ -4186,9 +4186,9 @@ then at this point, a closing bracket ']' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE LBRACK XOR_ASSIGN
##
-## Ends in an error in state: 317.
+## Ends in an error in state: 308.
##
-## designator -> LBRACK . conditional_expression RBRACK [ LBRACK EQ DOT ]
+## designator -> LBRACK . conditional_expression RBRACK [ RPAREN LBRACK EQ DOT ]
##
## The known suffix of the stack is as follows:
## LBRACK
@@ -4201,7 +4201,7 @@ At this point, a constant expression is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 326.
+## Ends in an error in state: 317.
##
## initializer_list -> initializer_list COMMA . option(designation) c_initializer [ RBRACE COMMA ]
## option(COMMA) -> COMMA . [ RBRACE ]
@@ -4222,7 +4222,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE CONSTANT SEMICOLON
##
-## Ends in an error in state: 325.
+## Ends in an error in state: 316.
##
## c_initializer -> LBRACE initializer_list . option(COMMA) RBRACE [ SEMICOLON RBRACE COMMA ]
## initializer_list -> initializer_list . COMMA option(designation) c_initializer [ RBRACE COMMA ]
@@ -4234,22 +4234,22 @@ translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE CONSTANT SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
-## In state 329, spurious reduction of production c_initializer -> assignment_expression
-## In state 335, spurious reduction of production initializer_list -> option(designation) c_initializer
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
+## In state 320, spurious reduction of production c_initializer -> assignment_expression
+## In state 326, spurious reduction of production initializer_list -> option(designation) c_initializer
##
# Omitting the fact that the closing brace can be preceded with a comma.
@@ -4264,7 +4264,7 @@ then at this point, a closing brace '}' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ LBRACE XOR_ASSIGN
##
-## Ends in an error in state: 324.
+## Ends in an error in state: 315.
##
## c_initializer -> LBRACE . initializer_list option(COMMA) RBRACE [ SEMICOLON RBRACE COMMA ]
##
@@ -4285,7 +4285,7 @@ followed with an initializer, is expected.
translation_unit_file: INT PRE_NAME VAR_NAME EQ XOR_ASSIGN
##
-## Ends in an error in state: 543.
+## Ends in an error in state: 552.
##
## init_declarator -> declare_varname(declarator_noattrend) save_context attribute_specifier_list EQ . c_initializer [ SEMICOLON COMMA ]
##
@@ -4302,9 +4302,9 @@ At this point, an initializer is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LBRACK CONSTANT SEMICOLON
##
-## Ends in an error in state: 240.
+## Ends in an error in state: 243.
##
-## optional(assignment_expression,RBRACK) -> assignment_expression . RBRACK [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## optional(assignment_expression,RBRACK) -> assignment_expression . RBRACK [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## assignment_expression
@@ -4313,20 +4313,20 @@ translation_unit_file: INT PRE_NAME VAR_NAME LBRACK CONSTANT SEMICOLON
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 63, spurious reduction of production unary_expression -> postfix_expression
-## In state 67, spurious reduction of production cast_expression -> unary_expression
-## In state 90, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 84, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 103, spurious reduction of production shift_expression -> additive_expression
-## In state 80, spurious reduction of production relational_expression -> shift_expression
-## In state 96, spurious reduction of production equality_expression -> relational_expression
-## In state 112, spurious reduction of production and_expression -> equality_expression
-## In state 120, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 121, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 122, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 106, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 104, spurious reduction of production conditional_expression -> logical_or_expression
-## In state 125, spurious reduction of production assignment_expression -> conditional_expression
+## In state 71, spurious reduction of production unary_expression -> postfix_expression
+## In state 75, spurious reduction of production cast_expression -> unary_expression
+## In state 98, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 92, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 111, spurious reduction of production shift_expression -> additive_expression
+## In state 88, spurious reduction of production relational_expression -> shift_expression
+## In state 104, spurious reduction of production equality_expression -> relational_expression
+## In state 120, spurious reduction of production and_expression -> equality_expression
+## In state 128, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 129, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 130, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 114, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 112, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 133, spurious reduction of production assignment_expression -> conditional_expression
##
# At the time of writing, optional(expression,RBRACK) is used only in direct
@@ -4344,7 +4344,7 @@ then at this point, a closing bracket ']' is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME COMMA XOR_ASSIGN
##
-## Ends in an error in state: 279.
+## Ends in an error in state: 282.
##
## identifier_list -> identifier_list COMMA . PRE_NAME VAR_NAME [ RPAREN COMMA ]
##
@@ -4361,7 +4361,7 @@ At this point, an identifier is expected.
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME COMMA PRE_NAME TYPEDEF_NAME
##
-## Ends in an error in state: 280.
+## Ends in an error in state: 283.
##
## identifier_list -> identifier_list COMMA PRE_NAME . VAR_NAME [ RPAREN COMMA ]
##
@@ -4377,46 +4377,46 @@ The following type name is used as a K&R parameter name:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN INT XOR_ASSIGN
##
-## Ends in an error in state: 578.
+## Ends in an error in state: 587.
##
## declaration_specifiers(declaration(block_item)) -> type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN VOLATILE INT XOR_ASSIGN
##
-## Ends in an error in state: 583.
+## Ends in an error in state: 592.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_typedef_name) -> list(declaration_specifier_no_typedef_name) . declaration_specifier_no_typedef_name [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC STAR SIGNED SHORT SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 576.
+## Ends in an error in state: 585.
##
## declaration_specifiers(declaration(block_item)) -> typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## typedef_name list(declaration_specifier_no_type)
##
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN VOLATILE PRE_NAME TYPEDEF_NAME XOR_ASSIGN
##
-## Ends in an error in state: 581.
+## Ends in an error in state: 590.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type) . [ STAR SEMICOLON PRE_NAME LPAREN ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
-## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . storage_class_specifier_no_typedef [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . type_qualifier_noattr [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . function_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
+## list(declaration_specifier_no_type) -> list(declaration_specifier_no_type) . attribute_specifier [ VOLATILE STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## rlist(declaration_specifier_no_type) typedef_name list(declaration_specifier_no_type)
@@ -4435,7 +4435,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN VOLATILE XOR_ASSIGN
##
-## Ends in an error in state: 579.
+## Ends in an error in state: 588.
##
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) . typedef_name list(declaration_specifier_no_type) [ STAR SEMICOLON PRE_NAME LPAREN ]
## declaration_specifiers(declaration(block_item)) -> rlist(declaration_specifier_no_type) . type_specifier_no_typedef_name list(declaration_specifier_no_typedef_name) [ STAR SEMICOLON PRE_NAME LPAREN ]
@@ -4447,7 +4447,7 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN VOL
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 211, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
+## In state 214, spurious reduction of production rlist(declaration_specifier_no_type) -> type_qualifier_noattr
##
Ill-formed K&R parameter declaration.
@@ -4460,7 +4460,7 @@ At this point, one of the following is expected:
translation_unit_file: VOID PRE_NAME TYPEDEF_NAME PACKED LPAREN CONSTANT RPAREN XOR_ASSIGN
##
-## Ends in an error in state: 592.
+## Ends in an error in state: 601.
##
## attribute_specifier_list -> attribute_specifier . attribute_specifier_list [ SEMICOLON LBRACE EQ COMMA ]
## rlist(declaration_specifier_no_type) -> attribute_specifier . [ VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT SIGNED SHORT PRE_NAME LONG INT FLOAT ENUM DOUBLE CHAR ]
@@ -4493,7 +4493,7 @@ If this is the parameter declaration of a K&R function definition,
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT COMMA XOR_ASSIGN
##
-## Ends in an error in state: 227.
+## Ends in an error in state: 230.
##
## parameter_list -> parameter_list COMMA . parameter_declaration [ RPAREN COMMA ]
## parameter_type_list -> parameter_list COMMA . ELLIPSIS [ RPAREN ]
@@ -4510,7 +4510,7 @@ At this point, one of the following is expected:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME SEMICOLON
##
-## Ends in an error in state: 226.
+## Ends in an error in state: 229.
##
## parameter_list -> parameter_list . COMMA parameter_declaration [ RPAREN COMMA ]
## parameter_type_list -> parameter_list . [ RPAREN ]
@@ -4523,12 +4523,12 @@ translation_unit_file: INT PRE_NAME VAR_NAME LPAREN INT PRE_NAME VAR_NAME SEMICO
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 252, spurious reduction of production declarator_noattrend -> direct_declarator
-## In state 257, spurious reduction of production attribute_specifier_list ->
-## In state 258, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
-## In state 274, spurious reduction of production declare_varname(declarator) -> declarator
-## In state 273, spurious reduction of production parameter_declaration -> declaration_specifiers(parameter_declaration) declare_varname(declarator)
-## In state 234, spurious reduction of production parameter_list -> parameter_declaration
+## In state 255, spurious reduction of production declarator_noattrend -> direct_declarator
+## In state 260, spurious reduction of production attribute_specifier_list ->
+## In state 261, spurious reduction of production declarator -> declarator_noattrend attribute_specifier_list
+## In state 277, spurious reduction of production declare_varname(declarator) -> declarator
+## In state 276, spurious reduction of production parameter_declaration -> declaration_specifiers(parameter_declaration) declare_varname(declarator)
+## In state 237, spurious reduction of production parameter_list -> parameter_declaration
##
# We omit the possibility of an ellipsis.
@@ -4548,7 +4548,7 @@ translation_unit_file: PRE_NAME VAR_NAME
##
## Ends in an error in state: 16.
##
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA COLON AUTO ATTRIBUTE ALIGNAS ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA COLON AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
@@ -4564,9 +4564,9 @@ The following identifier is used as a type, but has not been defined as such:
translation_unit_file: INT PRE_NAME VAR_NAME LPAREN PRE_NAME VAR_NAME RPAREN INT SEMICOLON XOR_ASSIGN
##
-## Ends in an error in state: 588.
+## Ends in an error in state: 597.
##
-## declaration_list -> declaration_list . kr_param_declaration [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED LONG LBRACE INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
+## declaration_list -> declaration_list . kr_param_declaration [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT RESTRICT REGISTER PRE_NAME PACKED NORETURN LONG LBRACE INT INLINE FLOAT EXTERN ENUM DOUBLE CONST CHAR AUTO ATTRIBUTE ALIGNAS ]
## function_definition1 -> declaration_specifiers(declaration(external_declaration)) declare_varname(declarator_noattrend) save_context declaration_list . [ LBRACE ]
##
## The known suffix of the stack is as follows:
@@ -4579,25 +4579,130 @@ At this point, one of the following is expected:
a declaration; or
an opening brace '{' (for the function body).
-# ------------------------------------------------------------------------------
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF XOR_ASSIGN
+##
+## Ends in an error in state: 52.
+##
+## postfix_expression -> BUILTIN_OFFSETOF . LPAREN type_name COMMA general_identifier RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+## postfix_expression -> BUILTIN_OFFSETOF . LPAREN type_name COMMA general_identifier designator_list RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF
+##
+
+Ill-formed __builtin_offsetof.
+At this point, an opening paranthesis '(' is expected.
+
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF LPAREN XOR_ASSIGN
+##
+## Ends in an error in state: 53.
+##
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN . type_name COMMA general_identifier RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN . type_name COMMA general_identifier designator_list RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF LPAREN
+##
+
+Ill-formed __builtin_offsetof.
+At this point, a struct or union name is expected.
+
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF LPAREN VOID XOR_ASSIGN
+##
+## Ends in an error in state: 345.
+##
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name . COMMA general_identifier RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name . COMMA general_identifier designator_list RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF LPAREN type_name
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 156, spurious reduction of production specifier_qualifier_list(type_name) -> type_specifier_no_typedef_name list(specifier_qualifier_no_typedef_name)
+## In state 330, spurious reduction of production option(abstract_declarator(type_name)) ->
+## In state 336, spurious reduction of production type_name -> specifier_qualifier_list(type_name) option(abstract_declarator(type_name))
+##
+
+Ill-formed __builtin_offsetof.
+At this point, a colon ',' is expected
+
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF LPAREN VOID COMMA XOR_ASSIGN
+##
+## Ends in an error in state: 346.
+##
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name COMMA . general_identifier RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name COMMA . general_identifier designator_list RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF LPAREN type_name COMMA
+##
+
+Ill-formed __builtin_offsetof.
+At this point, a member-designator is expected.
+
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF LPAREN VOID COMMA PRE_NAME TYPEDEF_NAME XOR_ASSIGN
+##
+## Ends in an error in state: 347.
+##
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name COMMA general_identifier . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name COMMA general_identifier . designator_list RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF LPAREN type_name COMMA general_identifier
+##
+
+Ill-formed __builtin_offsetof.
+At this point, a member-designator is expected.
+
+#------------------------------------------------------------------------------
+
+translation_unit_file: PACKED LPAREN BUILTIN_OFFSETOF LPAREN VOID COMMA PRE_NAME TYPEDEF_NAME LBRACK STRING_LITERAL RBRACK XOR_ASSIGN
+##
+## Ends in an error in state: 349.
+##
+## option(designator_list) -> designator_list . [ LBRACK DOT ]
+## postfix_expression -> BUILTIN_OFFSETOF LPAREN type_name COMMA general_identifier designator_list . RPAREN [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RBRACK RBRACE QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA COLON BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
+##
+## The known suffix of the stack is as follows:
+## BUILTIN_OFFSETOF LPAREN type_name COMMA general_identifier designator_list
+##
+
+
+Ill-formed __builtin_offsetof.
+At this point, a member-designator is expected.
+
+#------------------------------------------------------------------------------
translation_unit_file: ALIGNAS LPAREN PRE_NAME XOR_ASSIGN
##
## Ends in an error in state: 29.
##
## primary_expression -> PRE_NAME . VAR_NAME [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RPAREN RIGHT_ASSIGN RIGHT QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
##
translation_unit_file: ALIGNAS LPAREN VOID LPAREN VOID LPAREN PRE_NAME XOR_ASSIGN
##
-## Ends in an error in state: 233.
+## Ends in an error in state: 236.
##
## declarator_identifier -> PRE_NAME . low_prec TYPEDEF_NAME [ RPAREN PACKED LPAREN LBRACK ATTRIBUTE ALIGNAS ]
## declarator_identifier -> PRE_NAME . VAR_NAME [ RPAREN PACKED LPAREN LBRACK ATTRIBUTE ALIGNAS ]
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
@@ -4606,39 +4711,39 @@ translation_unit_file: UNION PRE_NAME XOR_ASSIGN
##
## Ends in an error in state: 40.
##
-## general_identifier -> PRE_NAME . VAR_NAME [ XOR_ASSIGN VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF SUB_ASSIGN STRUCT STATIC STAR SLASH SIGNED SHORT SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RESTRICT REGISTER RBRACK RBRACE QUESTION PTR PRE_NAME PLUS PERCENT PACKED OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LONG LEQ LEFT_ASSIGN LEFT LBRACK LBRACE INT INLINE INC HAT GT GEQ FLOAT EXTERN EQEQ EQ ENUM DOUBLE DOT DIV_ASSIGN DEC CONST COMMA COLON CHAR BARBAR BAR AUTO ATTRIBUTE AND_ASSIGN ANDAND AND ALIGNAS ADD_ASSIGN ]
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ XOR_ASSIGN VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF SUB_ASSIGN STRUCT STATIC STAR SLASH SIGNED SHORT SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RESTRICT REGISTER RBRACK RBRACE QUESTION PTR PRE_NAME PLUS PERCENT PACKED OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LONG LEQ LEFT_ASSIGN LEFT LBRACK LBRACE INT INLINE INC HAT GT GEQ FLOAT EXTERN EQEQ EQ ENUM DOUBLE DOT DIV_ASSIGN DEC CONST COMMA COLON CHAR BARBAR BAR AUTO ATTRIBUTE AND_ASSIGN ANDAND AND ALIGNAS ADD_ASSIGN ]
+## general_identifier -> PRE_NAME . VAR_NAME [ XOR_ASSIGN VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF SUB_ASSIGN STRUCT STATIC STAR SLASH SIGNED SHORT SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RESTRICT REGISTER RBRACK RBRACE QUESTION PTR PRE_NAME PLUS PERCENT PACKED OR_ASSIGN NORETURN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LONG LEQ LEFT_ASSIGN LEFT LBRACK LBRACE INT INLINE INC HAT GT GEQ FLOAT EXTERN EQEQ EQ ENUM DOUBLE DOT DIV_ASSIGN DEC CONST COMMA COLON CHAR BARBAR BAR AUTO ATTRIBUTE AND_ASSIGN ANDAND AND ALIGNAS ADD_ASSIGN ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ XOR_ASSIGN VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF SUB_ASSIGN STRUCT STATIC STAR SLASH SIGNED SHORT SEMICOLON RPAREN RIGHT_ASSIGN RIGHT RESTRICT REGISTER RBRACK RBRACE QUESTION PTR PRE_NAME PLUS PERCENT PACKED OR_ASSIGN NORETURN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LONG LEQ LEFT_ASSIGN LEFT LBRACK LBRACE INT INLINE INC HAT GT GEQ FLOAT EXTERN EQEQ EQ ENUM DOUBLE DOT DIV_ASSIGN DEC CONST COMMA COLON CHAR BARBAR BAR AUTO ATTRIBUTE AND_ASSIGN ANDAND AND ALIGNAS ADD_ASSIGN ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
##
translation_unit_file: VOID PRE_NAME TYPEDEF_NAME LBRACE PRE_NAME XOR_ASSIGN
##
-## Ends in an error in state: 425.
+## Ends in an error in state: 434.
##
## general_identifier -> PRE_NAME . VAR_NAME [ COLON ]
## primary_expression -> PRE_NAME . VAR_NAME [ XOR_ASSIGN SUB_ASSIGN STAR SLASH SEMICOLON RIGHT_ASSIGN RIGHT QUESTION PTR PLUS PERCENT OR_ASSIGN NEQ MUL_ASSIGN MOD_ASSIGN MINUS LT LPAREN LEQ LEFT_ASSIGN LEFT LBRACK INC HAT GT GEQ EQEQ EQ DOT DIV_ASSIGN DEC COMMA BARBAR BAR AND_ASSIGN ANDAND AND ADD_ASSIGN ]
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED LPAREN INLINE EXTERN CONST COLON AUTO ATTRIBUTE ALIGNAS ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE TYPEDEF STATIC STAR SEMICOLON RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN INLINE EXTERN CONST COLON AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
##
translation_unit_file: VOID PRE_NAME TYPEDEF_NAME LPAREN PRE_NAME XOR_ASSIGN
##
-## Ends in an error in state: 192.
+## Ends in an error in state: 194.
##
## identifier_list -> PRE_NAME . VAR_NAME [ RPAREN COMMA ]
-## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
+## typedef_name -> PRE_NAME . TYPEDEF_NAME [ VOLATILE STATIC STAR RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LBRACK INLINE EXTERN CONST COMMA AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
##
translation_unit_file: VOID PRE_NAME XOR_ASSIGN
##
-## Ends in an error in state: 180.
+## Ends in an error in state: 182.
##
-## declarator_identifier -> PRE_NAME . low_prec TYPEDEF_NAME [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
-## declarator_identifier -> PRE_NAME . VAR_NAME [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## declarator_identifier -> PRE_NAME . low_prec TYPEDEF_NAME [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
+## declarator_identifier -> PRE_NAME . VAR_NAME [ VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL STRUCT STATIC SIGNED SHORT SEMICOLON RPAREN RESTRICT REGISTER PRE_NAME PACKED NORETURN LPAREN LONG LBRACK LBRACE INT INLINE FLOAT EXTERN EQ ENUM DOUBLE CONST COMMA COLON CHAR AUTO ATTRIBUTE ALIGNAS ]
##
## The known suffix of the stack is as follows:
## PRE_NAME
diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly
index 613ec17f..04fbcb94 100644
--- a/cparser/pre_parser.mly
+++ b/cparser/pre_parser.mly
@@ -23,7 +23,7 @@
*)
%{
- open !Pre_parser_aux
+ open Pre_parser_aux
let set_id_type (_,r,_) t =
r := t
@@ -57,7 +57,7 @@
AUTO REGISTER INLINE NORETURN CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE
UNDERSCORE_BOOL CONST VOLATILE VOID STRUCT UNION ENUM CASE DEFAULT IF ELSE
SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN BUILTIN_VA_ARG ALIGNOF
- ATTRIBUTE ALIGNAS PACKED ASM
+ ATTRIBUTE ALIGNAS PACKED ASM BUILTIN_OFFSETOF
%token EOF
@@ -254,6 +254,8 @@ postfix_expression:
| postfix_expression LBRACK expression RBRACK
| postfix_expression LPAREN argument_expression_list? RPAREN
| BUILTIN_VA_ARG LPAREN assignment_expression COMMA type_name RPAREN
+| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier RPAREN
+| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier designator_list RPAREN
| postfix_expression DOT other_identifier
| postfix_expression PTR other_identifier
| postfix_expression INC
diff --git a/debug/Debug.ml b/debug/Debug.ml
index 7403d7c2..168df5a0 100644
--- a/debug/Debug.ml
+++ b/debug/Debug.ml
@@ -10,9 +10,8 @@
(* *)
(* *********************************************************************)
-open AST
open BinNums
-open !C
+open C
open Camlcoq
open DwarfTypes
open Sections
@@ -38,9 +37,9 @@ type implem =
add_lvar_scope: int -> ident -> int -> unit;
open_scope: atom -> int -> positive -> unit;
close_scope: atom -> int -> positive -> unit;
- start_live_range: (atom * atom) -> positive -> int * int builtin_arg -> unit;
+ start_live_range: (atom * atom) -> positive -> int * int AST.builtin_arg -> unit;
end_live_range: (atom * atom) -> positive -> unit;
- stack_variable: (atom * atom) -> int * int builtin_arg -> unit;
+ stack_variable: (atom * atom) -> int * int AST.builtin_arg -> unit;
add_label: atom -> positive -> int -> unit;
atom_parameter: ident -> ident -> atom -> unit;
compute_diab_file_enum: (section_name -> int) -> (string-> int) -> (unit -> unit) -> unit;
diff --git a/debug/Debug.mli b/debug/Debug.mli
index f044b1ad..3869a056 100644
--- a/debug/Debug.mli
+++ b/debug/Debug.mli
@@ -10,8 +10,7 @@
(* *)
(* *********************************************************************)
-open AST
-open !C
+open C
open Camlcoq
open DwarfTypes
open BinNums
@@ -37,9 +36,9 @@ type implem =
add_lvar_scope: int -> ident -> int -> unit;
open_scope: atom -> int -> positive -> unit;
close_scope: atom -> int -> positive -> unit;
- start_live_range: (atom * atom) -> positive -> int * int builtin_arg -> unit;
+ start_live_range: (atom * atom) -> positive -> int * int AST.builtin_arg -> unit;
end_live_range: (atom * atom) -> positive -> unit;
- stack_variable: (atom * atom) -> int * int builtin_arg -> unit;
+ stack_variable: (atom * atom) -> int * int AST.builtin_arg -> unit;
add_label: atom -> positive -> int -> unit;
atom_parameter: ident -> ident -> atom -> unit;
compute_diab_file_enum: (section_name -> int) -> (string-> int) -> (unit -> unit) -> unit;
@@ -70,9 +69,9 @@ val enter_function_scope: int -> int -> unit
val add_lvar_scope: int -> ident -> int -> unit
val open_scope: atom -> int -> positive -> unit
val close_scope: atom -> int -> positive -> unit
-val start_live_range: (atom * atom) -> positive -> (int * int builtin_arg) -> unit
+val start_live_range: (atom * atom) -> positive -> (int * int AST.builtin_arg) -> unit
val end_live_range: (atom * atom) -> positive -> unit
-val stack_variable: (atom * atom) -> int * int builtin_arg -> unit
+val stack_variable: (atom * atom) -> int * int AST.builtin_arg -> unit
val add_label: atom -> positive -> int -> unit
val generate_debug_info: (atom -> string) -> string -> debug_entries option
val atom_parameter: ident -> ident -> atom -> unit
diff --git a/debug/DebugInformation.ml b/debug/DebugInformation.ml
index dfde9136..e3f5d98e 100644
--- a/debug/DebugInformation.ml
+++ b/debug/DebugInformation.ml
@@ -14,6 +14,7 @@ open BinNums
open C
open Camlcoq
open Cutil
+open Debug
open DebugTypes
open Sections
@@ -395,6 +396,7 @@ let insert_global_declaration env dec =
let fields = List.map (fun f ->
{
cfd_name = f.fld_name;
+ cfd_anon = f.fld_anonymous;
cfd_typ = insert_type f.fld_typ;
cfd_bit_size = f.fld_bitfield;
cfd_bit_offset = None;
@@ -659,3 +661,35 @@ let init name =
Hashtbl.reset label_translation;
all_files := StringSet.singleton name;
printed_vars := StringSet.empty
+
+let default_debug =
+ {
+ init = init;
+ atom_global = atom_global;
+ set_composite_size = set_composite_size;
+ set_member_offset = set_member_offset;
+ set_bitfield_offset = set_bitfield_offset;
+ insert_global_declaration = insert_global_declaration;
+ add_fun_addr = (fun _ _ _ -> ());
+ generate_debug_info = (fun _ _ -> None);
+ all_files_iter = all_files_iter;
+ insert_local_declaration = insert_local_declaration;
+ atom_local_variable = atom_local_variable;
+ enter_scope = enter_scope;
+ enter_function_scope = enter_function_scope;
+ add_lvar_scope = add_lvar_scope;
+ open_scope = open_scope;
+ close_scope = close_scope;
+ start_live_range = start_live_range;
+ end_live_range = end_live_range;
+ stack_variable = stack_variable;
+ add_label = add_label;
+ atom_parameter = atom_parameter;
+ compute_diab_file_enum = compute_diab_file_enum;
+ compute_gnu_file_enum = compute_gnu_file_enum;
+ exists_section = exists_section;
+ remove_unused = remove_unused;
+ remove_unused_function = remove_unused_function;
+ variable_printed = variable_printed;
+ add_diab_info = (fun _ _ _ _ -> ());
+ }
diff --git a/debug/DebugInformation.mli b/debug/DebugInformation.mli
index 66c4cd11..8905d8bf 100644
--- a/debug/DebugInformation.mli
+++ b/debug/DebugInformation.mli
@@ -10,9 +10,7 @@
(* *)
(* *********************************************************************)
-open AST
open BinNums
-open !C
open Camlcoq
open DebugTypes
open Sections
@@ -49,58 +47,10 @@ val file_name: string ref
val fold_definitions: (int -> definition_type -> 'a -> 'a) -> 'a -> 'a
-val atom_global: ident -> atom -> unit
-
-val set_composite_size: ident -> struct_or_union -> int option -> unit
-
-val set_member_offset: ident -> string -> int -> unit
-
-val set_bitfield_offset: ident -> string -> int -> string -> int -> unit
-
-val insert_global_declaration: Env.t -> globdecl -> unit
-
val diab_add_fun_addr: atom -> section_name -> (int * int) -> unit
val gnu_add_fun_addr: atom -> section_name -> (int * int) -> unit
-val all_files_iter: (string -> unit) -> unit
-
-val insert_local_declaration: storage -> ident -> typ -> location -> unit
-
-val atom_local_variable: ident -> atom -> unit
-
-val enter_scope: int -> int -> int -> unit
-
-val enter_function_scope: int -> int -> unit
-
-val add_lvar_scope: int -> ident -> int -> unit
-
-val open_scope: atom -> int -> positive -> unit
-
-val close_scope: atom -> int -> positive -> unit
-
-val start_live_range: (atom * atom) -> positive -> (int * int builtin_arg) -> unit
-
-val end_live_range: (atom * atom) -> positive -> unit
-
-val stack_variable: (atom * atom) -> int * int builtin_arg -> unit
-
-val add_label: atom -> positive -> int -> unit
-
-val atom_parameter: ident -> ident -> atom -> unit
-
-val compute_diab_file_enum: (section_name -> int) -> (string-> int) -> (unit -> unit) -> unit
-
-val compute_gnu_file_enum: (string -> unit) -> unit
-
-val exists_section: section_name -> bool
-
-val remove_unused: ident -> unit
-
-val remove_unused_function: ident -> unit
-
-val variable_printed: string -> unit
-
val add_diab_info: section_name -> int -> int -> int -> unit
-val init: string -> unit
+val default_debug: Debug.implem
diff --git a/debug/DebugInit.ml b/debug/DebugInit.ml
index ed22f7c2..f35d7128 100644
--- a/debug/DebugInit.ml
+++ b/debug/DebugInit.ml
@@ -15,47 +15,16 @@ open Commandline
open Debug
open Driveraux
-let default_debug =
- {
- init = DebugInformation.init;
- atom_global = DebugInformation.atom_global;
- set_composite_size = DebugInformation.set_composite_size;
- set_member_offset = DebugInformation.set_member_offset;
- set_bitfield_offset = DebugInformation.set_bitfield_offset;
- insert_global_declaration = DebugInformation.insert_global_declaration;
- add_fun_addr = (fun _ _ _ -> ());
- generate_debug_info = (fun _ _ -> None);
- all_files_iter = DebugInformation.all_files_iter;
- insert_local_declaration = DebugInformation.insert_local_declaration;
- atom_local_variable = DebugInformation.atom_local_variable;
- enter_scope = DebugInformation.enter_scope;
- enter_function_scope = DebugInformation.enter_function_scope;
- add_lvar_scope = DebugInformation.add_lvar_scope;
- open_scope = DebugInformation.open_scope;
- close_scope = DebugInformation.close_scope;
- start_live_range = DebugInformation.start_live_range;
- end_live_range = DebugInformation.end_live_range;
- stack_variable = DebugInformation.stack_variable;
- add_label = DebugInformation.add_label;
- atom_parameter = DebugInformation.atom_parameter;
- compute_diab_file_enum = DebugInformation.compute_diab_file_enum;
- compute_gnu_file_enum = DebugInformation.compute_gnu_file_enum;
- exists_section = DebugInformation.exists_section;
- remove_unused = DebugInformation.remove_unused;
- remove_unused_function = DebugInformation.remove_unused_function;
- variable_printed = DebugInformation.variable_printed;
- add_diab_info = (fun _ _ _ _ -> ());
- }
let init_debug () =
implem :=
if Configuration.system = "diab" then
let gen = (fun a b -> Some (Dwarfgen.gen_diab_debug_info a b)) in
- {default_debug with generate_debug_info = gen;
+ {DebugInformation.default_debug with generate_debug_info = gen;
add_diab_info = DebugInformation.add_diab_info;
add_fun_addr = DebugInformation.diab_add_fun_addr;}
else
- {default_debug with generate_debug_info = (fun a b -> Some (Dwarfgen.gen_gnu_debug_info a b));
+ {DebugInformation.default_debug with generate_debug_info = (fun a b -> Some (Dwarfgen.gen_gnu_debug_info a b));
add_fun_addr = DebugInformation.gnu_add_fun_addr}
let init_none () =
@@ -71,11 +40,12 @@ let gnu_debugging_help =
" -gdwarf- Generate debug information in DWARF v2 or DWARF v3\n"
let debugging_help =
-"Debugging options:\n\
-\ -g Generate debugging information\n\
-\ -g<n> Control generation of debugging information\n\
-\ (<n>=0: none, <n>=1: only-globals, <n>=2: globals + locals \n\
-\ without locations, <n>=3: full;)\n"
+{|Debugging options:
+ -g Generate debugging information
+ -g<n> Control generation of debugging information
+ (<n>=0: none, <n>=1: only-globals, <n>=2: globals + locals
+ without locations, <n>=3: full;)
+|}
^ (if gnu_system then gnu_debugging_help else "")
let gnu_debugging_actions =
diff --git a/debug/DebugTypes.mli b/debug/DebugTypes.mli
index 25c7390f..c3df6066 100644
--- a/debug/DebugTypes.mli
+++ b/debug/DebugTypes.mli
@@ -19,6 +19,7 @@ open Camlcoq
type composite_field =
{
cfd_name: string;
+ cfd_anon: bool;
cfd_typ: int;
cfd_bit_size: int option;
cfd_bit_offset: int option;
diff --git a/debug/DwarfPrinter.ml b/debug/DwarfPrinter.ml
index b81507a8..13e7765d 100644
--- a/debug/DwarfPrinter.ml
+++ b/debug/DwarfPrinter.ml
@@ -159,7 +159,7 @@ module DwarfPrinter(Target: DWARF_TARGET):
add_attr_some e.member_bit_offset (add_abbr_entry (0xc,"DW_AT_bit_offset",DW_FORM_data1));
add_attr_some e.member_bit_size (add_abbr_entry (0xd,"DW_AT_bit_size",DW_FORM_data1));
add_attr_some e.member_declaration add_declaration;
- add_name buf e.member_name;
+ add_name_opt buf e.member_name;
add_type buf;
(match e.member_data_member_location with
| None -> ()
@@ -472,7 +472,7 @@ module DwarfPrinter(Target: DWARF_TARGET):
print_opt_value oc "DW_AT_bit_offset" mb.member_bit_offset print_byte;
print_opt_value oc "DW_AT_bit_size" mb.member_bit_size print_byte;
print_opt_value oc "DW_AT_declaration" mb.member_declaration print_flag;
- print_string oc "DW_AT_name" mb.member_name;
+ print_opt_value oc "DW_AT_name" mb.member_name print_string;
print_ref oc "DW_AT_type" mb.member_type;
print_opt_value oc "DW_AT_data_member_location" mb.member_data_member_location print_data_location
diff --git a/debug/DwarfTypes.mli b/debug/DwarfTypes.mli
index 48da4509..23aba448 100644
--- a/debug/DwarfTypes.mli
+++ b/debug/DwarfTypes.mli
@@ -159,7 +159,7 @@ type dw_tag_member =
member_bit_size: constant option;
member_data_member_location: data_location_value option;
member_declaration: flag option;
- member_name: string_const;
+ member_name: string_const option;
member_type: reference;
}
diff --git a/debug/Dwarfgen.ml b/debug/Dwarfgen.ml
index 30e44e52..ee568042 100644
--- a/debug/Dwarfgen.ml
+++ b/debug/Dwarfgen.ml
@@ -232,7 +232,7 @@ module Dwarfgenaux (Target: TARGET) =
| None -> None
| Some s -> Some (DataLocBlock (DW_OP_plus_uconst s)));
member_declaration = None;
- member_name = string_entry mem.cfd_name;
+ member_name = if mem.cfd_anon then None else Some (string_entry mem.cfd_name);
member_type = mem.cfd_typ;
} in
new_entry (next_id ()) (DW_TAG_member mem)
diff --git a/doc/ccomp.1 b/doc/ccomp.1
index ef4d7743..d84adc7f 100644
--- a/doc/ccomp.1
+++ b/doc/ccomp.1
@@ -16,8 +16,7 @@ In other words, the executable code it produces is proved to behave exactly as s
This level of confidence in the correctness of the compilation process is unprecedented and contributes to meeting the highest levels of software assurance.
In particular, using the CompCert C compiler is a natural complement to applying formal verification techniques (static analysis, program proof, model checking) at the source code level: the correctness proof of CompCert C guarantees that all safety properties verified on the source code automatically hold as well for the generated executable.
.
-.SH
-RECOGNIZED SOURCE FILES
+.SH RECOGNIZED SOURCE FILES
.
.TP
.B .c
@@ -48,6 +47,18 @@ Object file.
Library file.
.
.SH OPTIONS
+.SS General Options
+.INDENT 0.0
+.
+.TP
+.B \-conf <file>
+Read CompCert configuration from <file>. This takes precedence over any other specification.
+.
+.TP
+.B \-target <triple>
+Read CompCert configuration from <triple>.ini instead of using the default of compcert.ini.
+The configuration file is searched for in the share directory of the CompCert installation.
+.
.SS Processing Options
.INDENT 0.0
.
@@ -219,7 +230,7 @@ Debugging Options
.
.TP
.B \-g
-Generate debugging information.
+Generate full debugging information.
.
.TP
.BR \-g0 ", " \-g1 ", " \-g2 ", " \-g3
@@ -537,5 +548,14 @@ Randomize execution order.
.TP
.B \-all
Simulate all possible execution orders.
+.
+.SH ENVIRONMENT
+.
+.TP
+.B COMPCERT_CONFIG
+If this environment variable is present, it denotes the path to the CompCert configuration file to be used.
+The variable takes precedence over default search paths or the \fB\-target\fP option, but has a lower priority than the \fB\-conf\fP option.
+.
.SH BUGS
+.
To report bugs, please visit <https://github.com/AbsInt/CompCert/issues>.
diff --git a/driver/Assembler.ml b/driver/Assembler.ml
index 52fb17d8..1d91ef50 100644
--- a/driver/Assembler.ml
+++ b/driver/Assembler.ml
@@ -42,6 +42,7 @@ let assembler_actions =
assembler_options := s::!assembler_options );]
let assembler_help =
-"Assembling options:\n\
-\ -Wa,<opt> Pass option <opt> to the assembler\n\
-\ -Xassembler <opt> Pass <opt> as an option to the assembler\n"
+{|Assembling options:
+ -Wa,<opt> Pass option <opt> to the assembler
+ -Xassembler <opt> Pass <opt> as an option to the assembler
+|}
diff --git a/driver/Commandline.ml b/driver/Commandline.ml
index c0dd6257..b544c37b 100644
--- a/driver/Commandline.ml
+++ b/driver/Commandline.ml
@@ -115,3 +115,20 @@ let parse_cmdline spec =
with Responsefile.Error s ->
eprintf "%s" s;
exit 2
+
+let long_int_action key s =
+ let ls = String.length s
+ and lkey = String.length key in
+ assert (ls > lkey);
+ let s = String.sub s (lkey + 1) (ls - lkey - 1) in
+ try
+ int_of_string s
+ with Failure _ ->
+ eprintf "Argument to option `%s' must be an integer\n" key;
+ exit 2
+
+let longopt_int key f =
+ let act s =
+ let n = long_int_action key s in
+ f n in
+ Prefix (key ^ "="),Self act
diff --git a/driver/Commandline.mli b/driver/Commandline.mli
index 197d0b04..65253749 100644
--- a/driver/Commandline.mli
+++ b/driver/Commandline.mli
@@ -40,3 +40,8 @@ val parse_cmdline: (pattern * action) list -> unit
(* Note on precedence: [Exact] patterns are tried first, then the other
patterns are tried in the order in which they appear in the list. *)
+
+val longopt_int: string -> (int -> unit) -> pattern * action
+(** [longopt_int key fn] generates a pattern and an action for
+ options of the form [key=<n>] and calls [fn] with the integer argument
+*)
diff --git a/driver/Driver.ml b/driver/Driver.ml
index e3b9ec52..9d5ed3b3 100755
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -256,91 +256,97 @@ let version_string =
"The CompCert C verified compiler, version "^ Version.version ^ "\n"
let target_help = if Configuration.arch = "arm" then
-"Target processor options:\n\
-\ -mthumb Use Thumb2 instruction encoding\n\
-\ -marm Use classic ARM instruction encoding\n"
+{|Target processor options:
+ -mthumb Use Thumb2 instruction encoding
+ -marm Use classic ARM instruction encoding
+|}
else
""
let usage_string =
version_string ^
- "Usage: ccomp [options] <source files>\n\
-Recognized source files:\n\
-\ .c C source file\n\
-\ .i or .p C source file that should not be preprocessed\n\
-\ .cm Cminor source file\n\
-\ .s Assembly file\n\
-\ .S Assembly file that must be preprocessed\n\
-\ .o Object file\n\
-\ .a Library file\n\
-Processing options:\n\
-\ -c Compile to object file only (no linking), result in <file>.o\n\
-\ -E Preprocess only, send result to standard output\n\
-\ -S Compile to assembler only, save result in <file>.s\n\
-\ -o <file> Generate output in <file>\n" ^
+ {|Usage: ccomp [options] <source files>
+Recognized source files:
+ .c C source file
+ .i or .p C source file that should not be preprocessed
+ .cm Cminor source file
+ .s Assembly file
+ .S or .sx Assembly file that must be preprocessed
+ .o Object file
+ .a Library file
+Processing options:
+ -c Compile to object file only (no linking), result in <file>.o
+ -E Preprocess only, send result to standard output
+ -S Compile to assembler only, save result in <file>.s
+ -o <file> Generate output in <file>
+|} ^
prepro_help ^
-"Language support options (use -fno-<opt> to turn off -f<opt>) :\n\
-\ -fbitfields Emulate bit fields in structs [off]\n\
-\ -flongdouble Treat 'long double' as 'double' [off]\n\
-\ -fstruct-passing Support passing structs and unions by value as function\n\
-\ results or function arguments [off]\n\
-\ -fstruct-return Like -fstruct-passing (deprecated)\n\
-\ -fvararg-calls Support calls to variable-argument functions [on]\n\
-\ -funprototyped Support calls to old-style functions without prototypes [on]\n\
-\ -fpacked-structs Emulate packed structs [off]\n\
-\ -finline-asm Support inline 'asm' statements [off]\n\
-\ -fall Activate all language support options above\n\
-\ -fnone Turn off all language support options above\n" ^
+{|Language support options (use -fno-<opt> to turn off -f<opt>) :
+ -fbitfields Emulate bit fields in structs [off]
+ -flongdouble Treat 'long double' as 'double' [off]
+ -fstruct-passing Support passing structs and unions by value as function
+ results or function arguments [off]
+ -fstruct-return Like -fstruct-passing (deprecated)
+ -fvararg-calls Support calls to variable-argument functions [on]
+ -funprototyped Support calls to old-style functions without prototypes [on]
+ -fpacked-structs Emulate packed structs [off]
+ -finline-asm Support inline 'asm' statements [off]
+ -fall Activate all language support options above
+ -fnone Turn off all language support options above
+|}^
DebugInit.debugging_help ^
-"Optimization options: (use -fno-<opt> to turn off -f<opt>)\n\
-\ -O Optimize the compiled code [on by default]\n\
-\ -O0 Do not optimize the compiled code\n\
-\ -O1 -O2 -O3 Synonymous for -O\n\
-\ -Os Optimize for code size in preference to code speed\n\
-\ -ftailcalls Optimize function calls in tail position [on]\n\
-\ -fconst-prop Perform global constant propagation [on]\n\
-\ -ffloat-const-prop <n> Control constant propagation of floats\n\
-\ (<n>=0: none, <n>=1: limited, <n>=2: full; default is full)\n\
-\ -fcse Perform common subexpression elimination [on]\n\
-\ -fredundancy Perform redundancy elimination [on]\n\
-Code generation options: (use -fno-<opt> to turn off -f<opt>)\n\
-\ -ffpu Use FP registers for some integer operations [on]\n\
-\ -fsmall-data <n> Set maximal size <n> for allocation in small data area\n\
-\ -fsmall-const <n> Set maximal size <n> for allocation in small constant area\n\
-\ -falign-functions <n> Set alignment (in bytes) of function entry points\n\
-\ -falign-branch-targets <n> Set alignment (in bytes) of branch targets\n\
-\ -falign-cond-branches <n> Set alignment (in bytes) of conditional branches\n" ^
+{|Optimization options: (use -fno-<opt> to turn off -f<opt>)
+ -O Optimize the compiled code [on by default]
+ -O0 Do not optimize the compiled code
+ -O1 -O2 -O3 Synonymous for -O
+ -Os Optimize for code size in preference to code speed
+ -ftailcalls Optimize function calls in tail position [on]
+ -fconst-prop Perform global constant propagation [on]
+ -ffloat-const-prop <n> Control constant propagation of floats
+ (<n>=0: none, <n>=1: limited, <n>=2: full; default is full)
+ -fcse Perform common subexpression elimination [on]
+ -fredundancy Perform redundancy elimination [on]
+Code generation options: (use -fno-<opt> to turn off -f<opt>)
+ -ffpu Use FP registers for some integer operations [on]
+ -fsmall-data <n> Set maximal size <n> for allocation in small data area
+ -fsmall-const <n> Set maximal size <n> for allocation in small constant area
+ -falign-functions <n> Set alignment (in bytes) of function entry points
+ -falign-branch-targets <n> Set alignment (in bytes) of branch targets
+ -falign-cond-branches <n> Set alignment (in bytes) of conditional branches
+|} ^
target_help ^
assembler_help ^
linker_help ^
-"Tracing options:\n\
-\ -dprepro Save C file after preprocessing in <file>.i\n\
-\ -dparse Save C file after parsing and elaboration in <file>.parsed.c\n\
-\ -dc Save generated Compcert C in <file>.compcert.c\n\
-\ -dclight Save generated Clight in <file>.light.c\n\
-\ -dcminor Save generated Cminor in <file>.cm\n\
-\ -drtl Save RTL at various optimization points in <file>.rtl.<n>\n\
-\ -dltl Save LTL after register allocation in <file>.ltl\n\
-\ -dmach Save generated Mach code in <file>.mach\n\
-\ -dasm Save generated assembly in <file>.s\n\
-\ -dall Save all generated intermediate files in <file>.<ext>\n\
-\ -sdump Save info for post-linking validation in <file>.json\n\
-\ -doptions Save the compiler configurations in <file>.opt.json\n\
-General options:\n\
-\ -stdlib <dir> Set the path of the Compcert run-time library\n\
-\ -v Print external commands before invoking them\n\
-\ -timings Show the time spent in various compiler passes\n\
-\ -version Print the version string and exit\n\
-\ -target <value> Generate code for the given target\n\
-\ -conf <file> Read configuration from file\n\
-\ @<file> Read command line options from <file>\n" ^
+{|Tracing options:
+ -dprepro Save C file after preprocessing in <file>.i
+ -dparse Save C file after parsing and elaboration in <file>.parsed.c
+ -dc Save generated Compcert C in <file>.compcert.c
+ -dclight Save generated Clight in <file>.light.c
+ -dcminor Save generated Cminor in <file>.cm
+ -drtl Save RTL at various optimization points in <file>.rtl.<n>
+ -dltl Save LTL after register allocation in <file>.ltl
+ -dmach Save generated Mach code in <file>.mach
+ -dasm Save generated assembly in <file>.s
+ -dall Save all generated intermediate files in <file>.<ext>
+ -sdump Save info for post-linking validation in <file>.json
+ -doptions Save the compiler configurations in <file>.opt.json
+General options:
+ -stdlib <dir> Set the path of the Compcert run-time library
+ -v Print external commands before invoking them
+ -timings Show the time spent in various compiler passes
+ -version Print the version string and exit
+ -target <value> Generate code for the given target
+ -conf <file> Read configuration from file
+ @<file> Read command line options from <file>
+|} ^
Cerrors.warning_help ^
-"Interpreter mode:\n\
-\ -interp Execute given .c files using the reference interpreter\n\
-\ -quiet Suppress diagnostic messages for the interpreter\n\
-\ -trace Have the interpreter produce a detailed trace of reductions\n\
-\ -random Randomize execution order\n\
-\ -all Simulate all possible execution orders\n"
+ {|Interpreter mode:
+ -interp Execute given .c files using the reference interpreter
+ -quiet Suppress diagnostic messages for the interpreter
+ -trace Have the interpreter produce a detailed trace of reductions
+ -random Randomize execution order
+ -all Simulate all possible execution orders
+|}
let print_usage_and_exit () =
printf "%s" usage_string; exit 0
@@ -498,6 +504,8 @@ let cmdline_actions =
push_action process_s_file s; incr num_source_files; incr num_input_files);
Suffix ".S", Self (fun s ->
push_action process_S_file s; incr num_source_files; incr num_input_files);
+ Suffix ".sx", Self (fun s ->
+ push_action process_S_file s; incr num_source_files; incr num_input_files);
Suffix ".o", Self (fun s -> push_linker_arg s; incr num_input_files);
Suffix ".a", Self (fun s -> push_linker_arg s; incr num_input_files);
(* GCC compatibility: .o.ext files and .so files are also object files *)
@@ -532,6 +540,7 @@ let _ =
| _ -> assert false
end;
Builtins.set C2C.builtins;
+ Cutil.declare_attributes C2C.attributes;
CPragmas.initialize();
parse_cmdline cmdline_actions;
DebugInit.init (); (* Initialize the debug functions *)
@@ -552,3 +561,5 @@ let _ =
if Cerrors.check_errors () then exit 2
with Sys_error msg ->
eprintf "I/O error: %s.\n" msg; exit 2
+ | e ->
+ Cerrors.crash e
diff --git a/driver/Frontend.ml b/driver/Frontend.ml
index 043d4e5a..41ca3bb8 100644
--- a/driver/Frontend.ml
+++ b/driver/Frontend.ml
@@ -128,37 +128,39 @@ let prepro_actions = [
@ (if gnu_system then gnu_prepro_actions else [])
let gnu_prepro_help =
-"\ -M Ouput a rule suitable for make describing the\n\
-\ dependencies of the main source file\n\
-\ -MM Like -M but do not mention system header files\n\
-\ -MF <file> Specifies file <file> as output file for -M or -MM\n\
-\ -MG Assumes missing header files are generated for -M\n\
-\ -MP Add a phony target for each dependency other than\n\
-\ the main file\n\
-\ -MT <target> Change the target of the rule emitted by dependency\n\
-\ generation\n\
-\ -MQ <target> Like -MT but quotes <target>\n\
-\ -nostdinc Do not search the standard system directories for\n\
-\ header files\n\
-\ -imacros <file> Like -include but throws output produced by\n\
-\ preprocessing of <file> away\n\
-\ -idirafter <dir> Search <dir> for header files after all directories\n\
-\ specified with -I and the standard system directories\n\
-\ -isystem <dir> Search <dir> for header files after all directories\n\
-\ specified by -I but before the standard system directories\n\
-\ -iquote <dir> Like -isystem but only for headers included with\n\
-\ quotes\n\
-\ -P Do not generate linemarkers\n\
-\ -C Do not discard comments\n\
-\ -CC Do not discard comments, including during macro\n\
-\ expansion\n"
+{| -M Ouput a rule suitable for make describing the
+ dependencies of the main source file
+ -MM Like -M but do not mention system header files
+ -MF <file> Specifies file <file> as output file for -M or -MM
+ -MG Assumes missing header files are generated for -M
+ -MP Add a phony target for each dependency other than
+ the main file
+ -MT <target> Change the target of the rule emitted by dependency
+ generation
+ -MQ <target> Like -MT but quotes <target>
+ -nostdinc Do not search the standard system directories for
+ header files
+ -imacros <file> Like -include but throws output produced by
+ preprocessing of <file> away
+ -idirafter <dir> Search <dir> for header files after all directories
+ specified with -I and the standard system directories
+ -isystem <dir> Search <dir> for header files after all directories
+ specified by -I but before the standard system directories
+ -iquote <dir> Like -isystem but only for headers included with
+ quotes
+ -P Do not generate linemarkers
+ -C Do not discard comments
+ -CC Do not discard comments, including during macro
+ expansion
+|}
-let prepro_help = "Preprocessing options:\n\
-\ -I<dir> Add <dir> to search path for #include files\n\
-\ -include <file> Process <file> as if #include \"<file>\" appears at the first\n\
-\ line of the primary source file.\n\
-\ -D<symb>=<val> Define preprocessor symbol\n\
-\ -U<symb> Undefine preprocessor symbol\n\
-\ -Wp,<opt> Pass option <opt> to the preprocessor\n\
-\ -Xpreprocessor <opt> Pass option <opt> to the preprocessor\n"
+let prepro_help = {|Preprocessing options:
+ -I<dir> Add <dir> to search path for #include files
+ -include <file> Process <file> as if #include "<file>" appears at the first
+ line of the primary source file.
+ -D<symb>=<val> Define preprocessor symbol
+ -U<symb> Undefine preprocessor symbol
+ -Wp,<opt> Pass option <opt> to the preprocessor
+ -Xpreprocessor <opt> Pass option <opt> to the preprocessor
+|}
^ (if gnu_system then gnu_prepro_help else "")
diff --git a/driver/Interp.ml b/driver/Interp.ml
index 1e328a70..6760e76c 100644
--- a/driver/Interp.ml
+++ b/driver/Interp.ml
@@ -12,7 +12,7 @@
(* Interpreting CompCert C sources *)
-open !Format
+open Format
open Camlcoq
open AST
open Integers
@@ -20,8 +20,8 @@ open Values
open Memory
open Globalenvs
open Events
-open !Ctypes
-open !Csyntax
+open Ctypes
+open Csyntax
open Csem
(* Configuration *)
@@ -389,7 +389,7 @@ let do_external_function id sg ge w args m =
extract_string m b ofs >>= fun fmt ->
let fmt' = do_printf m fmt args' in
let len = coqint_of_camlint (Int32.of_int (String.length fmt')) in
- print_string fmt';
+ Format.print_string fmt';
flush stdout;
convert_external_args ge args sg.sig_args >>= fun eargs ->
Some(((w, [Event_syscall(id, eargs, EVint len)]), Vint len), m)
@@ -598,8 +598,8 @@ let change_main_function p old_main old_main_ty =
fn_params = []; fn_vars = []; fn_body = body } in
let new_main_id = intern_string "___main" in
{ prog_main = new_main_id;
- Ctypes.prog_defs = (new_main_id, Gfun(Internal new_main_fn)) :: p.Ctypes.prog_defs;
- prog_public = p.prog_public;
+ Ctypes.prog_defs = (new_main_id, Gfun(Ctypes.Internal new_main_fn)) :: p.Ctypes.prog_defs;
+ Ctypes.prog_public = p.Ctypes.prog_public;
prog_types = p.prog_types;
prog_comp_env = p.prog_comp_env }
@@ -609,17 +609,17 @@ let rec find_main_function name = function
| (id, Gvar v) :: gdl -> find_main_function name gdl
let fixup_main p =
- match find_main_function p.Ctypes.prog_main p.prog_defs with
+ match find_main_function p.Ctypes.prog_main p.Ctypes.prog_defs with
| None ->
fprintf err_formatter "ERROR: no main() function@.";
None
| Some main_fd ->
match type_of_fundef main_fd with
- | Tfunction(Tnil, Tint(I32, Signed, _), _) ->
+ | Tfunction(Tnil, Ctypes.Tint(I32, Signed, _), _) ->
Some p
- | Tfunction(Tcons(Tint _, Tcons(Tpointer(Tpointer(Tint(I8,_,_),_),_), Tnil)),
- Tint _, _) as ty ->
- Some (change_main_function p p.prog_main ty)
+ | Tfunction(Tcons(Ctypes.Tint _, Tcons(Tpointer(Tpointer(Ctypes.Tint(I8,_,_),_),_), Tnil)),
+ Ctypes.Tint _, _) as ty ->
+ Some (change_main_function p p.Ctypes.prog_main ty)
| _ ->
fprintf err_formatter "ERROR: wrong type for main() function@.";
None
diff --git a/driver/Linker.ml b/driver/Linker.ml
index 2f767023..5e14cfd4 100644
--- a/driver/Linker.ml
+++ b/driver/Linker.ml
@@ -35,27 +35,30 @@ let linker exe_name files =
let gnu_linker_help =
-" -nostartfiles Do not use the standard system startup files when\n\
-\ linking\n\
-\ -nodefaultlibs Do not use the standard system libraries when\n\
-\ linking\n\
-\ -nostdlib Do not use the standard system startup files or\n\
-\ libraries when linking\n"
+{| -nostartfiles Do not use the standard system startup files when
+ linking
+ -nodefaultlibs Do not use the standard system libraries when
+ linking
+ -nostdlib Do not use the standard system startup files or
+ libraries when linking
+|}
let linker_help =
-"Linking options:\n\
-\ -l<lib> Link library <lib>\n\
-\ -L<dir> Add <dir> to search path for libraries\n" ^
+{|Linking options:
+ -l<lib> Link library <lib>
+ -L<dir> Add <dir> to search path for libraries
+|} ^
(if gnu_system then gnu_linker_help else "") ^
-" -s Remove all symbol table and relocation information from the\n\
-\ executable\n\
-\ -static Prevent linking with the shared libraries\n\
-\ -T <file> Use <file> as linker command file\n\
-\ -Wl,<opt> Pass option <opt> to the linker\n\
-\ -WUl,<opt> Pass option <opt> to the gcc or dcc used for linking\n\
-\ -Xlinker <opt> Pass <opt> as an option to the linker\n\
-\ -u <symb> Pretend the symbol <symb> is undefined to force linking of\n\
-\ library modules to define it.\n"
+{| -s Remove all symbol table and relocation information from the
+ executable
+ -static Prevent linking with the shared libraries
+ -T <file> Use <file> as linker command file
+ -Wl,<opt> Pass option <opt> to the linker
+ -WUl,<opt> Pass option <opt> to the gcc or dcc used for linking
+ -Xlinker <opt> Pass <opt> as an option to the linker
+ -u <symb> Pretend the symbol <symb> is undefined to force linking of
+ library modules to define it.
+|}
let linker_actions =
[ Prefix "-l", Self push_linker_arg;
diff --git a/exportclight/ExportClight.ml b/exportclight/ExportClight.ml
index c4e373c0..003e97ee 100644
--- a/exportclight/ExportClight.ml
+++ b/exportclight/ExportClight.ml
@@ -18,9 +18,9 @@
open Format
open Camlcoq
open AST
-open !Ctypes
-open !Cop
-open !Clight
+open Ctypes
+open Cop
+open Clight
(* Options, lists, pairs *)
@@ -154,7 +154,7 @@ let rec typ p t =
and rtyp p = function
| Tvoid -> fprintf p "tvoid"
- | Tint(sz, sg, _) ->
+ | Ctypes.Tint(sz, sg, _) ->
fprintf p "%s" (
match sz, sg with
| I8, Signed -> "tschar"
@@ -164,12 +164,12 @@ and rtyp p = function
| I32, Signed -> "tint"
| I32, Unsigned -> "tuint"
| IBool, _ -> "tbool")
- | Tlong(sg, _) ->
+ | Ctypes.Tlong(sg, _) ->
fprintf p "%s" (
match sg with
| Signed -> "tlong"
| Unsigned -> "tulong")
- | Tfloat(sz, _) ->
+ | Ctypes.Tfloat(sz, _) ->
fprintf p "%s" (
match sz with
| F32 -> "tfloat"
@@ -279,7 +279,7 @@ let name_binop = function
| Oshl -> "Oshl"
| Oshr -> "Oshr"
| Oeq -> "Oeq"
- | One -> "One"
+ | Cop.One -> "One"
| Olt -> "Olt"
| Ogt -> "Ogt"
| Ole -> "Ole"
@@ -541,14 +541,14 @@ let print_program p prog =
fprintf p "@[<v 0>";
fprintf p "%s" prologue;
define_idents p;
- List.iter (print_globdef p) prog.prog_defs;
+ List.iter (print_globdef p) prog.Ctypes.prog_defs;
fprintf p "Definition composites : list composite_definition :=@ ";
print_list print_composite_definition p prog.prog_types;
fprintf p ".@ @ ";
fprintf p "Definition prog : Clight.program := {|@ ";
- fprintf p "prog_defs :=@ %a;@ " (print_list print_ident_globdef) prog.prog_defs;
- fprintf p "prog_public :=@ %a;@ " (print_list ident) prog.prog_public;
- fprintf p "prog_main := %a;@ " ident prog.prog_main;
+ fprintf p "prog_defs :=@ %a;@ " (print_list print_ident_globdef) prog.Ctypes.prog_defs;
+ fprintf p "prog_public :=@ %a;@ " (print_list ident) prog.Ctypes.prog_public;
+ fprintf p "prog_main := %a;@ " ident prog.Ctypes.prog_main;
fprintf p "prog_types := composites;@ ";
fprintf p "prog_comp_env := make_composite_env composites;@ ";
fprintf p "prog_comp_env_eq := refl_equal _@ ";
diff --git a/extraction/extraction.v b/extraction/extraction.v
index ffa06ddf..9c4c724f 100644
--- a/extraction/extraction.v
+++ b/extraction/extraction.v
@@ -40,6 +40,10 @@ Require Import ExtrOcamlString.
(* Coqlib *)
Extract Inlined Constant Coqlib.proj_sumbool => "(fun x -> x)".
+(* Datatypes *)
+Extract Inlined Constant Datatypes.fst => "fst".
+Extract Inlined Constant Datatypes.snd => "snd".
+
(* Decidable *)
Extraction Inline DecidableClass.Decidable_witness DecidableClass.decide
@@ -124,7 +128,7 @@ Extract Constant Cabs.cabsloc =>
byteno: int;
ident : int;
}".
-Extract Constant Cabs.string => "String.t".
+Extract Inlined Constant Cabs.string => "String.t".
Extract Constant Cabs.char_code => "int64".
(* Int31 *)
diff --git a/powerpc/TargetPrinter.ml b/powerpc/TargetPrinter.ml
index 3d4db98f..68cd001b 100644
--- a/powerpc/TargetPrinter.ml
+++ b/powerpc/TargetPrinter.ml
@@ -14,7 +14,6 @@
open Printf
open Fileinfo
-open !Datatypes
open Maps
open Camlcoq
open Sections
diff --git a/runtime/include/stddef.h b/runtime/include/stddef.h
index 5bdff564..452497c3 100644
--- a/runtime/include/stddef.h
+++ b/runtime/include/stddef.h
@@ -114,7 +114,7 @@ typedef signed int wchar_t;
#endif
#if defined(_STDDEF_H) && !defined(offsetof)
-#define offsetof(ty,member) ((size_t) &((ty*) NULL)->member)
+#define offsetof(ty,member) (__builtin_offsetof(ty,member))
#endif
#endif
diff --git a/test/regression/attribs1.c b/test/regression/attribs1.c
index 808610b7..0650b189 100644
--- a/test/regression/attribs1.c
+++ b/test/regression/attribs1.c
@@ -24,7 +24,7 @@ __attribute((__section__("myconst"))) const int e = 12;
const char filler4 = 1;
__attribute((__section__("myconst"))) const int f = 34;
-__attribute((__section__("mycode"))) int myfunc(int x) { return x + 1; }
+__attribute((__section__("mycode"))) int * myfunc(int * x) { return x + 1; }
/* Alignment with typedefs and structs */
diff --git a/x86/TargetPrinter.ml b/x86/TargetPrinter.ml
index b5aeefae..4a576df3 100644
--- a/x86/TargetPrinter.ml
+++ b/x86/TargetPrinter.ml
@@ -13,7 +13,6 @@
(* Printing x86-64 assembly code in asm syntax *)
open Printf
-open !Datatypes
open Camlcoq
open Sections
open AST
@@ -169,7 +168,7 @@ module MacOS_System : SYSTEM =
if i then ".const" else "COMM"
| Section_string -> ".const"
| Section_literal -> ".literal8"
- | Section_jumptable -> ".const"
+ | Section_jumptable -> ".text" (* needed in 64 bits, not a problem in 32 bits *)
| Section_user(s, wr, ex) ->
sprintf ".section \"%s\", %s, %s"
(if wr then "__DATA" else "__TEXT") s
@@ -244,9 +243,9 @@ module Target(System: SYSTEM):TARGET =
let addressing_gen ireg oc (Addrmode(base, shift, cst)) =
begin match cst with
- | Coq_inl n ->
+ | Datatypes.Coq_inl n ->
fprintf oc "%s" (Z.to_string n)
- | Coq_inr(id, ofs) ->
+ | Datatypes.Coq_inr(id, ofs) ->
if Archi.ptr64 then begin
(* RIP-relative addressing *)
let ofs' = Z.to_int64 ofs in