OSDN Git Service

* builtins.c (expand_builtin_saveregs): Remove static, remove exp
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jul 1999 01:21:03 +0000 (01:21 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jul 1999 01:21:03 +0000 (01:21 +0000)
        and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
        (expand_builtin_next_arg): Accept ARGLIST not EXP.
        (stabilize_va_list): New function.
        (std_expand_builtin_va_start): New function.
        (expand_builtin_va_start): New function.
        (get_varargs_alias_set): New function.
        (std_expand_builtin_va_arg): New function.
        (expand_builtin_va_arg): New function.
        (expand_builtin_va_end): New function.
        (expand_builtin_va_copy): New function.
        (expand_builtin): Call them.
        * c-common.c (c_common_nodes_and_builtins): Build __builtin_va_list,
        __builtin_{varargs_start,stdarg_start,end,copy}.
        (build_va_arg): New function.
        * c-common.h (CTI_PTR_TYPE, ptr_type_node): Delete.
        (build_va_arg): Declare.
        * c-decl.c (ptr_type_node, va_list_type_node): New.
        * c-parse.gperf (__builtin_va_arg): New.
        * c-parse.in (VA_ARG): New token.
        (unary_expr): Recognize it.
        * expr.c (expand_expr): Expand VA_ARG_EXPR.
        * expr.h (std_expand_builtin_va_start): Declare.
        (std_expand_builtin_va_arg): Declare.
        (expand_builtin_va_arg): Declare.
        (get_varargs_alias_set): Declare.
        * tree.def (VA_ARG_EXPR): New.
        * tree.h (BUILT_IN_VARARGS_START): New.
        (BUILT_IN_STDARG_START, BUILT_IN_VA_END): New.
        (ptr_type_node, va_list_type_node): Declare.
        * tm.texi (EXPAND_BUILTIN_SAVEREGS): Kill unused ARGLIST argument.
        * m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
        * m88k.h, m88k.c: Likewise.
        * mn10300.h, mn10300.c: Likewise.
        * pa.h, pa.c: Likewise.
        * rs6000.h, rs6000.c: Likewise.
        * sh.h, sh.c: Likewise.
        * sparc.h, sparc.c: Likewise.

        * emit-rtl.c (operand_subword): Copy alias set.
        (change_address): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28243 138bc75d-0d04-0410-961f-82ee72b054a4

17 files changed:
gcc/ChangeLog
gcc/builtins.c
gcc/c-common.c
gcc/c-common.h
gcc/c-decl.c
gcc/c-gperf.h
gcc/c-parse.c
gcc/c-parse.gperf
gcc/c-parse.h
gcc/c-parse.in
gcc/c-parse.y
gcc/emit-rtl.c
gcc/expr.c
gcc/expr.h
gcc/tm.texi
gcc/tree.def
gcc/tree.h

index 645d23d..a243a37 100644 (file)
@@ -1,3 +1,47 @@
+Sun Jul 25 18:15:39 1999  Richard Henderson  <rth@cygnus.com>
+
+       * builtins.c (expand_builtin_saveregs): Remove static, remove exp
+       and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
+       (expand_builtin_next_arg): Accept ARGLIST not EXP.
+       (stabilize_va_list): New function.
+       (std_expand_builtin_va_start): New function.
+       (expand_builtin_va_start): New function.
+       (get_varargs_alias_set): New function.
+       (std_expand_builtin_va_arg): New function.
+       (expand_builtin_va_arg): New function.
+       (expand_builtin_va_end): New function.
+       (expand_builtin_va_copy): New function.
+       (expand_builtin): Call them.
+       * c-common.c (c_common_nodes_and_builtins): Build __builtin_va_list,
+       __builtin_{varargs_start,stdarg_start,end,copy}.
+       (build_va_arg): New function.
+       * c-common.h (CTI_PTR_TYPE, ptr_type_node): Delete.
+       (build_va_arg): Declare.
+       * c-decl.c (ptr_type_node, va_list_type_node): New.
+       * c-parse.gperf (__builtin_va_arg): New.
+       * c-parse.in (VA_ARG): New token.
+       (unary_expr): Recognize it.
+       * expr.c (expand_expr): Expand VA_ARG_EXPR.
+       * expr.h (std_expand_builtin_va_start): Declare.
+       (std_expand_builtin_va_arg): Declare.
+       (expand_builtin_va_arg): Declare.
+       (get_varargs_alias_set): Declare.
+       * tree.def (VA_ARG_EXPR): New.
+       * tree.h (BUILT_IN_VARARGS_START): New.
+       (BUILT_IN_STDARG_START, BUILT_IN_VA_END): New.
+       (ptr_type_node, va_list_type_node): Declare.
+       * tm.texi (EXPAND_BUILTIN_SAVEREGS): Kill unused ARGLIST argument.
+       * m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
+       * m88k.h, m88k.c: Likewise.
+       * mn10300.h, mn10300.c: Likewise.
+       * pa.h, pa.c: Likewise.
+       * rs6000.h, rs6000.c: Likewise.
+       * sh.h, sh.c: Likewise.
+       * sparc.h, sparc.c: Likewise.
+
+       * emit-rtl.c (operand_subword): Copy alias set.
+       (change_address): Likewise.
+
 Sun Jul 25 15:04:37 1999  Jeffrey A Law  (law@cygnus.com)
 
        * pa.c (compute_frame_size): Scan all the used callee saved registers,
index 0a833fc..6d622ff 100644 (file)
@@ -73,9 +73,11 @@ static void expand_builtin_return    PROTO((rtx));
 static rtx expand_builtin_classify_type        PROTO((tree));
 static rtx expand_builtin_mathfn       PROTO((tree, rtx, rtx));
 static rtx expand_builtin_constant_p   PROTO((tree));
-static rtx expand_builtin_saveregs     PROTO((tree, rtx, int));
 static rtx expand_builtin_args_info    PROTO((tree));
 static rtx expand_builtin_next_arg     PROTO((tree));
+static rtx expand_builtin_va_start     PROTO((int, tree));
+static rtx expand_builtin_va_end       PROTO((tree));
+static rtx expand_builtin_va_copy      PROTO((tree));
 static rtx expand_builtin_memcmp       PROTO((tree, tree, rtx));
 static rtx expand_builtin_strcmp       PROTO((tree, rtx));
 static rtx expand_builtin_memcpy       PROTO((tree));
@@ -1672,68 +1674,53 @@ expand_builtin_strcmp (exp, target)
 }
 #endif
 
-/* Expand expression EXP, which is a call to __builtin_saveregs,
-   generating the result in TARGET, if that's convenient.
-   IGNORE is nonzero if the value is to be ignored.  */
-static rtx
-expand_builtin_saveregs (exp, target, ignore)
-     tree exp;
-     rtx target;
-     int ignore;
+/* Expand a call to __builtin_saveregs, generating the result in TARGET,
+   if that's convenient.  */
+rtx
+expand_builtin_saveregs ()
 {
-  enum machine_mode value_mode = TYPE_MODE (TREE_TYPE (exp));
+  rtx val, seq;
 
   /* Don't do __builtin_saveregs more than once in a function.
      Save the result of the first call and reuse it.  */
   if (saveregs_value != 0)
     return saveregs_value;
-  {
-    /* When this function is called, it means that registers must be
-       saved on entry to this function.  So we migrate the
-       call to the first insn of this function.  */
-    rtx temp;
-    rtx seq;
 
-    /* Now really call the function.  `expand_call' does not call
-       expand_builtin, so there is no danger of infinite recursion here.  */
-    start_sequence ();
+  /* When this function is called, it means that registers must be
+     saved on entry to this function.  So we migrate the call to the
+     first insn of this function.  */
+
+  start_sequence ();
 
 #ifdef EXPAND_BUILTIN_SAVEREGS
-    /* Do whatever the machine needs done in this case.  */
-    temp = EXPAND_BUILTIN_SAVEREGS (arglist);
+  /* Do whatever the machine needs done in this case.  */
+  val = EXPAND_BUILTIN_SAVEREGS ();
 #else
-    /* The register where the function returns its value
-       is likely to have something else in it, such as an argument.
-       So preserve that register around the call.  */
-
-    if (value_mode != VOIDmode)
-      {
-       rtx valreg = hard_libcall_value (value_mode);
-       rtx saved_valreg = gen_reg_rtx (value_mode);
-
-       emit_move_insn (saved_valreg, valreg);
-       temp = expand_call (exp, target, ignore);
-       emit_move_insn (valreg, saved_valreg);
-      }
-    else
-      /* Generate the call, putting the value in a pseudo.  */
-      temp = expand_call (exp, target, ignore);
+  /* ??? We used to try and build up a call to the out of line function,
+     guessing about what registers needed saving etc.  This became much
+     harder with __builtin_va_start, since we don't have a tree for a
+     call to __builtin_saveregs to fall back on.  There was exactly one
+     port (i860) that used this code, and I'm unconvinced it could actually
+     handle the general case.  So we no longer try to handle anything
+     weird and make the backend absorb the evil.  */
+
+  error ("__builtin_saveregs not supported by this target");
+  val = const0_rtx;
 #endif
 
-    seq = get_insns ();
-    end_sequence ();
+  seq = get_insns ();
+  end_sequence ();
 
-    saveregs_value = temp;
+  saveregs_value = val;
 
-    /* Put the sequence after the NOTE that starts the function.
-       If this is inside a SEQUENCE, make the outer-level insn
-       chain current, so the code is placed at the start of the
-       function.  */
-    push_topmost_sequence ();
-    emit_insns_before (seq, NEXT_INSN (get_insns ()));
-    pop_topmost_sequence ();
-    return temp;
-  }
+  /* Put the sequence after the NOTE that starts the function.  If this
+     is inside a SEQUENCE, make the outer-level insn chain current, so
+     the code is placed at the start of the function.  */
+  push_topmost_sequence ();
+  emit_insns_after (seq, get_insns ());
+  pop_topmost_sequence ();
+
+  return val;
 }
 
 /* __builtin_args_info (N) returns word N of the arg space info
@@ -1785,18 +1772,17 @@ expand_builtin_args_info (exp)
   result = build (CONSTRUCTOR, type, NULL_TREE, nreverse (elts));
   TREE_CONSTANT (result) = 1;
   TREE_STATIC (result) = 1;
-  result = build (INDIRECT_REF, build_pointer_type (type), result);
+  result = build1 (INDIRECT_REF, build_pointer_type (type), result);
   TREE_CONSTANT (result) = 1;
   return expand_expr (result, NULL_RTX, VOIDmode, EXPAND_MEMORY_USE_BAD);
 #endif
 }
 
-/* Expand expression EXP, which is a call to __builtin_next_arg.  */
+/* Expand ARGLIST, from a call to __builtin_next_arg.  */
 static rtx
-expand_builtin_next_arg (exp)
-     tree exp;
+expand_builtin_next_arg (arglist)
+     tree arglist;
 {
-  tree arglist = TREE_OPERAND (exp, 1);
   tree fntype = TREE_TYPE (current_function_decl);
 
   if ((TYPE_ARG_TYPES (fntype) == 0
@@ -1836,6 +1822,230 @@ expand_builtin_next_arg (exp)
                       NULL_RTX, 0, OPTAB_LIB_WIDEN);
 }
 
+/* Make it easier for the backends by protecting the valist argument
+   from multiple evaluations.  */
+
+static tree
+stabilize_va_list (valist, was_ptr)
+     tree valist;
+     int was_ptr;
+{
+  int is_array = TREE_CODE (va_list_type_node) == ARRAY_TYPE;
+
+  if (was_ptr)
+    {
+      /* If stdarg.h took the address of an array-type valist that was passed
+         as a parameter, we'll have taken the address of the parameter itself
+         rather than the array as we'd intended.  Undo this mistake.  */
+      if (is_array
+         && TREE_CODE (valist) == ADDR_EXPR
+         && TREE_CODE (TREE_TYPE (TREE_OPERAND (valist, 0))) == POINTER_TYPE)
+       valist = TREE_OPERAND (valist, 0);
+
+      if (TREE_SIDE_EFFECTS (valist))
+       valist = save_expr (valist);
+
+      if (! is_array)
+        valist = fold (build1 (INDIRECT_REF, va_list_type_node, valist));
+    }
+  else if (TREE_SIDE_EFFECTS (valist))
+    {
+      if (is_array)
+       valist = save_expr (valist);
+      else
+       {
+          valist = build1 (ADDR_EXPR, build_pointer_type (va_list_type_node),
+                          valist);
+         TREE_SIDE_EFFECTS (valist) = 1;
+         valist = save_expr (valist);
+         valist = fold (build1 (INDIRECT_REF, va_list_type_node, valist));
+       }
+    }
+
+  return valist;
+}
+
+/* The "standard" implementation of va_start: just assign `nextarg' to
+   the variable.  */
+void
+std_expand_builtin_va_start (stdarg_p, valist, nextarg)
+     int stdarg_p ATTRIBUTE_UNUSED;
+     tree valist;
+     rtx nextarg;
+{
+  tree t;
+
+  t = build (MODIFY_EXPR, TREE_TYPE (valist), valist,
+            make_tree (ptr_type_node, nextarg));
+  TREE_SIDE_EFFECTS (t) = 1;
+
+  expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
+}
+
+/* Expand ARGLIST, which from a call to __builtin_stdarg_va_start or
+   __builtin_varargs_va_start, depending on STDARG_P.  */
+static rtx
+expand_builtin_va_start (stdarg_p, arglist)
+     int stdarg_p;
+     tree arglist;
+{
+  rtx nextarg;
+  tree chain = arglist, valist;
+
+  if (stdarg_p)
+    nextarg = expand_builtin_next_arg (chain = TREE_CHAIN (arglist));
+  else
+    nextarg = expand_builtin_next_arg (NULL_TREE);
+
+  if (TREE_CHAIN (chain))
+    error ("too many arguments to function `va_start'");
+
+  valist = stabilize_va_list (TREE_VALUE (arglist), 1);
+
+#ifdef EXPAND_BUILTIN_VA_START
+  EXPAND_BUILTIN_VA_START (stdarg_p, valist, nextarg);
+#else
+  std_expand_builtin_va_start (stdarg_p, valist, nextarg);
+#endif
+
+  return const0_rtx;
+}
+
+/* Allocate an alias set for use in storing and reading from the varargs
+   spill area.  */
+int
+get_varargs_alias_set ()
+{
+  static int set = -1;
+  if (set == -1)
+    set = new_alias_set ();
+  return set;
+}
+
+/* The "standard" implementation of va_arg: read the value from the
+   current (padded) address and increment by the (padded) size.  */
+rtx
+std_expand_builtin_va_arg (valist, type)
+     tree valist, type;
+{
+  tree addr_tree, t;
+  HOST_WIDE_INT align;
+  HOST_WIDE_INT rounded_size;
+  rtx addr;
+
+  /* Compute the rounded size of the type.  */
+  align = PARM_BOUNDARY / BITS_PER_UNIT;
+  rounded_size = (((TREE_INT_CST_LOW (TYPE_SIZE (type)) / BITS_PER_UNIT
+                   + align - 1) / align) * align);
+
+  /* Get AP.  */
+  addr_tree = valist;
+  if (BYTES_BIG_ENDIAN)
+    {
+      /* Small args are padded downward.  */
+
+      HOST_WIDE_INT adj;
+      adj = TREE_INT_CST_LOW (TYPE_SIZE (type)) / BITS_PER_UNIT;
+      if (rounded_size > align)
+       adj = rounded_size;
+
+      addr_tree = build (PLUS_EXPR, TREE_TYPE (addr_tree), addr_tree,
+                        build_int_2 (rounded_size - adj, 0));
+    }
+
+  addr = expand_expr (addr_tree, NULL_RTX, Pmode, EXPAND_NORMAL);
+  addr = copy_to_reg (addr);
+
+  /* Compute new value for AP.  */
+  t = build (MODIFY_EXPR, TREE_TYPE (valist), valist,
+            build (PLUS_EXPR, TREE_TYPE (valist), valist,
+                   build_int_2 (rounded_size, 0)));
+  TREE_SIDE_EFFECTS (t) = 1;
+  expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
+
+  return addr;
+}
+
+/* Expand __builtin_va_arg, which is not really a builtin function, but
+   a very special sort of operator.  */
+rtx
+expand_builtin_va_arg (valist, type)
+     tree valist, type;
+{
+  rtx addr, result;
+
+  if (TYPE_MAIN_VARIANT (TREE_TYPE (valist))
+      != TYPE_MAIN_VARIANT (va_list_type_node))
+    {
+      error ("first argument to `__builtin_va_arg' not of type `va_list'");
+      addr = const0_rtx;
+    }
+  else
+    {
+      /* Make it easier for the backends by protecting the valist argument
+         from multiple evaluations.  */
+      valist = stabilize_va_list (valist, 0);
+
+#ifdef EXPAND_BUILTIN_VA_ARG
+      addr = EXPAND_BUILTIN_VA_ARG (valist, type);
+#else
+      addr = std_expand_builtin_va_arg (valist, type);
+#endif
+    }
+
+  result = gen_rtx_MEM (TYPE_MODE (type), addr);
+  MEM_ALIAS_SET (result) = get_varargs_alias_set ();
+
+  return result;
+}
+
+/* Expand ARGLIST, from a call to __builtin_va_end.  */
+static rtx
+expand_builtin_va_end (arglist)
+     tree arglist ATTRIBUTE_UNUSED;
+{
+#ifdef EXPAND_BUILTIN_VA_END
+  tree valist = TREE_VALUE (arglist, 0);
+  valist = stabilize_va_list (valist, 0);
+  EXPAND_BUILTIN_VA_END(arglist);
+#endif
+
+  return const0_rtx;
+}
+
+/* Expand ARGLIST, from a call to __builtin_va_copy.  We do this as a 
+   builtin rather than just as an assignment in stdarg.h because of the
+   nastiness of array-type va_list types.  */
+static rtx
+expand_builtin_va_copy (arglist)
+     tree arglist;
+{
+  tree dst, src, t;
+
+  dst = TREE_VALUE (arglist);
+  src = TREE_VALUE (TREE_CHAIN (arglist));
+
+  dst = stabilize_va_list (dst, 1);
+  src = stabilize_va_list (src, 0);
+
+  if (TREE_CODE (va_list_type_node) != ARRAY_TYPE)
+    {
+      t = build (MODIFY_EXPR, va_list_type_node, dst, src);
+      TREE_SIDE_EFFECTS (t) = 1;
+      expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
+    }
+  else
+    {
+      emit_block_move (expand_expr (dst, NULL_RTX, Pmode, EXPAND_NORMAL),
+                      expand_expr (src, NULL_RTX, Pmode, EXPAND_NORMAL),
+                      expand_expr (TYPE_SIZE (va_list_type_node), NULL_RTX,
+                                   VOIDmode, EXPAND_NORMAL),
+                      TYPE_ALIGN (va_list_type_node) / BITS_PER_UNIT);
+    }
+
+  return const0_rtx;
+}
+
 /* Expand a call to one of the builtin functions __builtin_frame_address or
    __builtin_return_address.  */
 static rtx
@@ -2031,14 +2241,14 @@ expand_builtin (exp, target, subtarget, mode, ignore)
       return const0_rtx;
 
     case BUILT_IN_SAVEREGS:
-      return expand_builtin_saveregs (exp, target, ignore);
+      return expand_builtin_saveregs ();
 
     case BUILT_IN_ARGS_INFO:
       return expand_builtin_args_info (exp);
 
       /* Return the address of the first anonymous stack arg.  */
     case BUILT_IN_NEXT_ARG:
-      return expand_builtin_next_arg (exp);
+      return expand_builtin_next_arg (arglist);
 
     case BUILT_IN_CLASSIFY_TYPE:
       return expand_builtin_classify_type (arglist);
@@ -2186,6 +2396,14 @@ expand_builtin (exp, target, subtarget, mode, ignore)
                                TREE_VALUE (TREE_CHAIN (arglist)),
                                TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))));
       return const0_rtx;
+    case BUILT_IN_VARARGS_START:
+      return expand_builtin_va_start (0, arglist);
+    case BUILT_IN_STDARG_START:
+      return expand_builtin_va_start (1, arglist);
+    case BUILT_IN_VA_END:
+      return expand_builtin_va_end (arglist);
+    case BUILT_IN_VA_COPY:
+      return expand_builtin_va_copy (arglist);
 
     default:                   /* just do library call, if unknown builtin */
       error ("built-in function `%s' not currently supported",
index fca0123..50a27fe 100644 (file)
@@ -3434,6 +3434,16 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
   tree long_ftype_long;
   /* Either char* or void*.  */
   tree traditional_ptr_type_node;
+  tree va_list_ptr_type_node;
+
+#ifdef BUILD_VA_LIST_TYPE
+  BUILD_VA_LIST_TYPE(va_list_type_node);
+#else
+  va_list_type_node = ptr_type_node;
+#endif
+  pushdecl (build_decl (TYPE_DECL, get_identifier ("__builtin_va_list"),
+                       va_list_type_node));
+  va_list_ptr_type_node = build_pointer_type (va_list_type_node);
 
   endlink = void_list_node;
   int_endlink = tree_cons (NULL_TREE, integer_type_node, endlink);
@@ -3608,6 +3618,37 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
   builtin_function ("__builtin_return", void_ftype_ptr,
                    BUILT_IN_RETURN, NULL_PTR);
 
+  /* Support for varargs.h and stdarg.h.  */
+  builtin_function ("__builtin_varargs_start",
+                   build_function_type (void_type_node,
+                                        tree_cons (NULL_TREE,
+                                                   va_list_ptr_type_node,
+                                                   endlink)),
+                   BUILT_IN_VARARGS_START, NULL_PTR);
+
+  builtin_function ("__builtin_stdarg_start",
+                   build_function_type (void_type_node,
+                                        tree_cons (NULL_TREE,
+                                                   va_list_ptr_type_node,
+                                                   NULL_TREE)),
+                   BUILT_IN_STDARG_START, NULL_PTR);
+
+  builtin_function ("__builtin_va_end",
+                   build_function_type (void_type_node,
+                                        tree_cons (NULL_TREE,
+                                                   va_list_type_node,
+                                                   endlink)),
+                   BUILT_IN_VA_END, NULL_PTR);
+
+  builtin_function ("__builtin_va_copy",
+                   build_function_type (void_type_node,
+                                        tree_cons (NULL_TREE,
+                                                   va_list_ptr_type_node,
+                                                   tree_cons (NULL_TREE,
+                                                     va_list_type_node,
+                                                     endlink))),
+                   BUILT_IN_VA_COPY, NULL_PTR);
+
   /* Currently under experimentation.  */
   builtin_function ("__builtin_memcpy", memcpy_ftype, BUILT_IN_MEMCPY,
                    "memcpy");
@@ -3712,3 +3753,10 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                    NULL_PTR);
 #endif
 }
+
+tree
+build_va_arg (expr, type)
+     tree expr, type;
+{
+  return build1 (VA_ARG_EXPR, type, expr);
+}
index 0290c8f..ec4a556 100644 (file)
@@ -63,7 +63,6 @@ enum c_tree_index
     CTI_STRING_TYPE,
     CTI_CONST_STRING_TYPE,
 
-    CTI_PTR_TYPE,
     CTI_CONST_PTR_TYPE,
     CTI_PTRDIFF_TYPE,
 
@@ -126,7 +125,6 @@ extern tree c_global_trees[CTI_MAX];
 #define boolean_true_node              c_global_trees[CTI_BOOLEAN_TRUE]
 #define boolean_false_node             c_global_trees[CTI_BOOLEAN_FALSE]
 
-#define ptr_type_node                  c_global_trees[CTI_PTR_TYPE]
 #define const_ptr_type_node            c_global_trees[CTI_CONST_PTR_TYPE]
 #define ptrdiff_type_node              c_global_trees[CTI_PTRDIFF_TYPE]
 
@@ -190,3 +188,5 @@ extern tree builtin_function                        PROTO((const char *, tree, enum built_in_function
 /* Build tree nodes and builtin functions common to both C and C++ language
    frontends.  */
 extern void c_common_nodes_and_builtins                PROTO((int, int, int));
+
+extern tree build_va_arg                       PROTO((tree, tree));
index 0a4e7aa..fd57334 100644 (file)
@@ -119,6 +119,12 @@ tree char_type_node;
 tree integer_type_node;
 tree unsigned_type_node;
 
+/* These can't be part of the above array, since they are declared
+   individially in tree.h and used by the target routines.  */
+
+tree ptr_type_node;
+tree va_list_type_node;
+
 /* Two expressions that are constants with value zero.
    The first is of type `int', the second of type `void *'.  */
 
index 0b79d11..481d402 100644 (file)
@@ -1,14 +1,14 @@
-/* C code produced by gperf version 2.7.1 (19981006 egcs) */
-/* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ./c-parse.gperf  */
+/* C code produced by gperf version 2.7 */
+/* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ../../../egcs/gcc/c-parse.gperf  */
 /* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf  */ 
 struct resword { const char *name; short token; enum rid rid; };
 
-#define TOTAL_KEYWORDS 83
+#define TOTAL_KEYWORDS 84
 #define MIN_WORD_LENGTH 2
 #define MAX_WORD_LENGTH 20
 #define MIN_HASH_VALUE 8
-#define MAX_HASH_VALUE 141
-/* maximum key range = 134, duplicates = 0 */
+#define MAX_HASH_VALUE 173
+/* maximum key range = 166, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -20,32 +20,32 @@ hash (str, len)
 {
   static unsigned char asso_values[] =
     {
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142,  35, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142,   1, 142,  90,   1,  28,
-       40,   6,   1,  24,   3,  13, 142,  36,  60,  14,
-       49,   3,   6, 142,  19,   8,   1,  50,  33,  11,
-        2,  23,   4, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-      142, 142, 142, 142, 142, 142
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174,  35, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174,   1, 174,  97,  19,  28,
+       40,   6,   1,  53,   3,  13, 174,   5,  67,  18,
+       49,   3,   6, 174,  19,   8,   1,   4,  33,   2,
+        2,  23,   4, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+      174, 174, 174, 174, 174, 174
     };
   register int hval = len;
 
@@ -83,16 +83,16 @@ static struct resword wordlist[] =
     {"__imag__", IMAGPART, NORID},
     {"else", ELSE, NORID},
     {"__inline__", SCSPEC, RID_INLINE},
-    {"byref", TYPE_QUAL, RID_BYREF},
+    {"while", WHILE, NORID},
     {"__iterator__", SCSPEC, RID_ITERATOR},
     {"__inline", SCSPEC, RID_INLINE},
     {"__real__", REALPART, NORID},
     {"switch", SWITCH, NORID},
     {"__restrict", TYPE_QUAL, RID_RESTRICT},
-    {"goto", GOTO, NORID},
+    {"enum", ENUM, NORID},
     {"__restrict__", TYPE_QUAL, RID_RESTRICT},
     {"struct", STRUCT, NORID},
-    {"while", WHILE, NORID},
+    {"break", BREAK, NORID},
     {"restrict", TYPE_QUAL, RID_RESTRICT},
     {"__const", TYPE_QUAL, RID_CONST},
     {"oneway", TYPE_QUAL, RID_ONEWAY},
@@ -101,20 +101,21 @@ static struct resword wordlist[] =
     {"__complex__", TYPESPEC, RID_COMPLEX},
     {"for", FOR, NORID},
     {"__iterator", SCSPEC, RID_ITERATOR},
-    {"__imag", IMAGPART, NORID},
+    {"byref", TYPE_QUAL, RID_BYREF},
     {"do", DO, NORID},
     {"case", CASE, NORID},
     {"__volatile__", TYPE_QUAL, RID_VOLATILE},
-    {"break", BREAK, NORID},
+    {"", 0, 0},
     {"default", DEFAULT, NORID},
     {"__volatile", TYPE_QUAL, RID_VOLATILE},
     {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
     {"@defs", DEFS, NORID},
     {"id", OBJECTNAME, RID_ID},
-    {"", 0, 0},
+    {"double", TYPESPEC, RID_DOUBLE},
     {"__signed", TYPESPEC, RID_SIGNED},
-    {"bycopy", TYPE_QUAL, RID_BYCOPY},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"", 0, 0}, {"", 0, 0},
+    {"unsigned", TYPESPEC, RID_UNSIGNED},
+    {"goto", GOTO, NORID},
     {"extern", SCSPEC, RID_EXTERN},
     {"", 0, 0},
     {"in", TYPE_QUAL, RID_IN},
@@ -123,53 +124,59 @@ static struct resword wordlist[] =
     {"", 0, 0},
     {"@private", PRIVATE, NORID},
     {"@selector", SELECTOR, NORID},
-    {"register", SCSPEC, RID_REGISTER},
-    {"__label__", LABEL, NORID},
-    {"", 0, 0}, {"", 0, 0},
-    {"enum", ENUM, NORID},
+    {"", 0, 0},
+    {"union", UNION, NORID},
+    {"", 0, 0},
+    {"__imag", IMAGPART, NORID},
+    {"@public", PUBLIC, NORID},
     {"return", RETURN, NORID},
-    {"", 0, 0}, {"", 0, 0},
-    {"signed", TYPESPEC, RID_SIGNED},
+    {"bycopy", TYPE_QUAL, RID_BYCOPY},
+    {"", 0, 0},
+    {"__label__", LABEL, NORID},
     {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
     {"const", TYPE_QUAL, RID_CONST},
-    {"", 0, 0},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"__builtin_va_arg", VA_ARG, NORID},
+    {"void", TYPESPEC, RID_VOID},
+    {"continue", CONTINUE, NORID},
     {"inline", SCSPEC, RID_INLINE},
     {"__real", REALPART, NORID},
     {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-    {"void", TYPESPEC, RID_VOID},
-    {"continue", CONTINUE, NORID},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
     {"@encode", ENCODE, NORID},
+    {"", 0, 0},
+    {"register", SCSPEC, RID_REGISTER},
+    {"@interface", INTERFACE, NORID},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"@protected", PROTECTED, NORID},
     {"auto", SCSPEC, RID_AUTO},
     {"__asm__", ASM_KEYWORD, NORID},
-    {"@interface", INTERFACE, NORID},
+    {"signed", TYPESPEC, RID_SIGNED},
     {"__alignof", ALIGNOF, NORID},
-    {"double", TYPESPEC, RID_DOUBLE},
+    {"", 0, 0},
     {"__alignof__", ALIGNOF, NORID},
-    {"@protected", PROTECTED, NORID},
+    {"", 0, 0},
     {"__attribute__", ATTRIBUTE, NORID},
-    {"unsigned", TYPESPEC, RID_UNSIGNED},
+    {"", 0, 0},
     {"volatile", TYPE_QUAL, RID_VOLATILE},
     {"__attribute", ATTRIBUTE, NORID},
     {"@class", CLASS, NORID},
-    {"__asm", ASM_KEYWORD, NORID},
-    {"", 0, 0}, {"", 0, 0},
     {"@implementation", IMPLEMENTATION, NORID},
     {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-    {"union", UNION, NORID},
-    {"", 0, 0}, {"", 0, 0},
-    {"@public", PUBLIC, NORID},
-    {"asm", ASM_KEYWORD, NORID},
+    {"__asm", ASM_KEYWORD, NORID},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"@end", END, NORID},
     {"", 0, 0},
     {"@protocol", PROTOCOL, NORID},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-    {"@end", END, NORID},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"asm", ASM_KEYWORD, NORID},
+    {"", 0, 0}, {"", 0, 0},
     {"static", SCSPEC, RID_STATIC},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-    {"long", TYPESPEC, RID_LONG},
-    {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-    {"char", TYPESPEC, RID_CHAR}
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"char", TYPESPEC, RID_CHAR},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+    {"long", TYPESPEC, RID_LONG}
   };
 
 #ifdef __GNUC__
index 85a7003..2641487 100644 (file)
@@ -1,42 +1,43 @@
 
 /*  A Bison parser, made from c-parse.y
- by  GNU Bison version 1.25
+ by  GNU Bison version 1.27
   */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
-#define        IDENTIFIER      258
-#define        TYPENAME        259
-#define        SCSPEC  260
-#define        TYPESPEC        261
-#define        TYPE_QUAL       262
-#define        CONSTANT        263
-#define        STRING  264
-#define        ELLIPSIS        265
-#define        SIZEOF  266
-#define        ENUM    267
-#define        STRUCT  268
-#define        UNION   269
-#define        IF      270
-#define        ELSE    271
-#define        WHILE   272
-#define        DO      273
-#define        FOR     274
-#define        SWITCH  275
-#define        CASE    276
-#define        DEFAULT 277
-#define        BREAK   278
-#define        CONTINUE        279
-#define        RETURN  280
-#define        GOTO    281
-#define        ASM_KEYWORD     282
-#define        TYPEOF  283
-#define        ALIGNOF 284
-#define        ATTRIBUTE       285
-#define        EXTENSION       286
-#define        LABEL   287
-#define        REALPART        288
-#define        IMAGPART        289
+#define        IDENTIFIER      257
+#define        TYPENAME        258
+#define        SCSPEC  259
+#define        TYPESPEC        260
+#define        TYPE_QUAL       261
+#define        CONSTANT        262
+#define        STRING  263
+#define        ELLIPSIS        264
+#define        SIZEOF  265
+#define        ENUM    266
+#define        STRUCT  267
+#define        UNION   268
+#define        IF      269
+#define        ELSE    270
+#define        WHILE   271
+#define        DO      272
+#define        FOR     273
+#define        SWITCH  274
+#define        CASE    275
+#define        DEFAULT 276
+#define        BREAK   277
+#define        CONTINUE        278
+#define        RETURN  279
+#define        GOTO    280
+#define        ASM_KEYWORD     281
+#define        TYPEOF  282
+#define        ALIGNOF 283
+#define        ATTRIBUTE       284
+#define        EXTENSION       285
+#define        LABEL   286
+#define        REALPART        287
+#define        IMAGPART        288
+#define        VA_ARG  289
 #define        ASSIGN  290
 #define        OROR    291
 #define        ANDAND  292
@@ -134,26 +135,26 @@ extern void yyprint                       PROTO ((FILE *, int, YYSTYPE));
 
 
 
-#define        YYFINAL         692
+#define        YYFINAL         698
 #define        YYFLAG          -32768
-#define        YYNTBASE        84
+#define        YYNTBASE        85
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 241)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 242)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,    80,     2,     2,     2,    52,    43,     2,    59,
-    76,    50,    48,    81,    49,    58,    51,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    38,    77,     2,
-    36,     2,    37,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,    81,     2,     2,     2,    53,    44,     2,    60,
+    77,    51,    49,    82,    50,    59,    52,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,    39,    78,     2,
+    37,     2,    38,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-    60,     2,    83,    42,     2,     2,     2,     2,     2,     2,
+    61,     2,    84,    43,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,    82,    41,    78,    79,     2,     2,     2,     2,
+     2,     2,    83,    42,    79,    80,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -166,13 +167,13 @@ static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    39,    40,    44,    45,    46,    47,    53,    54,    55,    56,
-    57,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75
+     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    40,    41,    45,    46,    47,    48,    54,    55,    56,    57,
+    58,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76
 };
 
 #if YYDEBUG != 0
@@ -182,175 +183,176 @@ static const short yyprhs[] = {     0,
     55,    63,    68,    69,    70,    78,    83,    84,    85,    92,
     96,    98,   100,   102,   104,   106,   108,   110,   112,   114,
    116,   117,   119,   121,   125,   127,   130,   133,   136,   139,
-   142,   147,   150,   155,   158,   161,   163,   165,   167,   172,
-   173,   181,   183,   187,   191,   195,   199,   203,   207,   211,
-   215,   219,   223,   227,   231,   232,   237,   238,   243,   244,
-   245,   253,   254,   260,   264,   268,   270,   272,   274,   278,
-   282,   283,   288,   293,   298,   302,   306,   309,   312,   314,
-   317,   318,   320,   323,   327,   329,   331,   334,   337,   342,
-   347,   350,   353,   357,   359,   361,   364,   367,   368,   369,
-   374,   379,   383,   387,   390,   393,   396,   399,   403,   404,
-   407,   410,   413,   416,   420,   421,   424,   427,   429,   431,
-   434,   437,   439,   441,   444,   447,   450,   454,   455,   458,
-   460,   462,   464,   469,   474,   476,   478,   480,   482,   486,
-   488,   492,   493,   498,   499,   506,   510,   511,   518,   522,
-   523,   525,   527,   530,   537,   539,   543,   544,   546,   551,
-   558,   563,   565,   567,   569,   571,   573,   574,   579,   581,
-   582,   585,   587,   591,   595,   598,   599,   604,   606,   607,
-   612,   614,   616,   618,   621,   624,   630,   634,   635,   636,
-   642,   643,   644,   650,   652,   654,   658,   662,   667,   671,
-   675,   679,   681,   685,   690,   695,   699,   703,   707,   709,
-   713,   717,   721,   726,   731,   735,   739,   741,   743,   746,
-   748,   751,   753,   756,   757,   765,   771,   774,   775,   783,
-   789,   792,   793,   802,   803,   811,   814,   815,   817,   818,
-   820,   822,   825,   826,   830,   833,   837,   839,   843,   845,
-   847,   850,   852,   856,   861,   868,   874,   876,   880,   882,
-   884,   888,   891,   894,   895,   897,   899,   902,   903,   906,
-   910,   914,   917,   921,   926,   930,   933,   937,   940,   944,
-   946,   948,   951,   954,   955,   957,   960,   961,   962,   964,
-   966,   969,   973,   975,   978,   980,   983,   990,   996,  1002,
-  1005,  1008,  1013,  1014,  1019,  1020,  1021,  1025,  1030,  1034,
-  1036,  1038,  1040,  1042,  1045,  1046,  1051,  1053,  1057,  1058,
-  1059,  1067,  1073,  1076,  1077,  1078,  1079,  1092,  1093,  1100,
-  1103,  1106,  1109,  1113,  1120,  1129,  1140,  1153,  1157,  1162,
-  1164,  1166,  1167,  1174,  1178,  1184,  1187,  1191,  1192,  1194,
-  1195,  1197,  1198,  1200,  1202,  1206,  1211,  1213,  1217,  1218,
-  1221,  1224,  1225,  1230,  1233,  1234,  1236,  1238,  1242,  1244,
-  1248,  1253,  1258,  1263,  1268,  1273,  1274,  1277,  1279,  1282,
-  1284,  1288,  1290,  1294
+   142,   147,   150,   155,   158,   161,   168,   170,   172,   174,
+   179,   180,   188,   190,   194,   198,   202,   206,   210,   214,
+   218,   222,   226,   230,   234,   238,   239,   244,   245,   250,
+   251,   252,   260,   261,   267,   271,   275,   277,   279,   281,
+   285,   289,   290,   295,   300,   305,   309,   313,   316,   319,
+   321,   324,   325,   327,   330,   334,   336,   338,   341,   344,
+   349,   354,   357,   360,   364,   366,   368,   371,   374,   375,
+   376,   381,   386,   390,   394,   397,   400,   403,   406,   410,
+   411,   414,   417,   420,   423,   427,   428,   431,   434,   436,
+   438,   441,   444,   446,   448,   451,   454,   457,   461,   462,
+   465,   467,   469,   471,   476,   481,   483,   485,   487,   489,
+   493,   495,   499,   500,   505,   506,   513,   517,   518,   525,
+   529,   530,   532,   534,   537,   544,   546,   550,   551,   553,
+   558,   565,   570,   572,   574,   576,   578,   580,   581,   586,
+   588,   589,   592,   594,   598,   602,   605,   606,   611,   613,
+   614,   619,   621,   623,   625,   628,   631,   637,   641,   642,
+   643,   649,   650,   651,   657,   659,   661,   665,   669,   674,
+   678,   682,   686,   688,   692,   697,   702,   706,   710,   714,
+   716,   720,   724,   728,   733,   738,   742,   746,   748,   750,
+   753,   755,   758,   760,   763,   764,   772,   778,   781,   782,
+   790,   796,   799,   800,   809,   810,   818,   821,   822,   824,
+   825,   827,   829,   832,   833,   837,   840,   844,   846,   850,
+   852,   854,   857,   859,   863,   868,   875,   881,   883,   887,
+   889,   891,   895,   898,   901,   902,   904,   906,   909,   910,
+   913,   917,   921,   924,   928,   933,   937,   940,   944,   947,
+   951,   953,   955,   958,   961,   962,   964,   967,   968,   969,
+   971,   973,   976,   980,   982,   985,   987,   990,   997,  1003,
+  1009,  1012,  1015,  1020,  1021,  1026,  1027,  1028,  1032,  1037,
+  1041,  1043,  1045,  1047,  1049,  1052,  1053,  1058,  1060,  1064,
+  1065,  1066,  1074,  1080,  1083,  1084,  1085,  1086,  1099,  1100,
+  1107,  1110,  1113,  1116,  1120,  1127,  1136,  1147,  1160,  1164,
+  1169,  1171,  1173,  1174,  1181,  1185,  1191,  1194,  1198,  1199,
+  1201,  1202,  1204,  1205,  1207,  1209,  1213,  1218,  1220,  1224,
+  1225,  1228,  1231,  1232,  1237,  1240,  1241,  1243,  1245,  1249,
+  1251,  1255,  1260,  1265,  1270,  1275,  1280,  1281,  1284,  1286,
+  1289,  1291,  1295,  1297,  1301
 };
 
 static const short yyrhs[] = {    -1,
-    85,     0,     0,    86,    88,     0,     0,    85,    87,    88,
-     0,    90,     0,    89,     0,    27,    59,    99,    76,    77,
-     0,   240,    88,     0,   122,   136,    77,     0,   129,   122,
-   136,    77,     0,   125,   122,   135,    77,     0,   129,    77,
-     0,   125,    77,     0,     1,    77,     0,     1,    78,     0,
-    77,     0,     0,     0,   125,   122,   164,    91,   116,    92,
-   198,     0,   125,   122,   164,     1,     0,     0,     0,   129,
-   122,   167,    93,   116,    94,   198,     0,   129,   122,   167,
-     1,     0,     0,     0,   122,   167,    95,   116,    96,   198,
-     0,   122,   167,     1,     0,     3,     0,     4,     0,    43,
-     0,    49,     0,    48,     0,    54,     0,    55,     0,    79,
-     0,    80,     0,   101,     0,     0,   101,     0,   107,     0,
-   101,    81,   107,     0,   113,     0,    50,   105,     0,   240,
-   105,     0,    98,   105,     0,    40,    97,     0,   103,   102,
-     0,   103,    59,   185,    76,     0,   104,   102,     0,   104,
-    59,   185,    76,     0,    33,   105,     0,    34,   105,     0,
-    11,     0,    29,     0,   102,     0,    59,   185,    76,   105,
-     0,     0,    59,   185,    76,    82,   106,   150,    78,     0,
-   105,     0,   107,    48,   107,     0,   107,    49,   107,     0,
-   107,    50,   107,     0,   107,    51,   107,     0,   107,    52,
-   107,     0,   107,    46,   107,     0,   107,    47,   107,     0,
-   107,    45,   107,     0,   107,    44,   107,     0,   107,    43,
-   107,     0,   107,    41,   107,     0,   107,    42,   107,     0,
-     0,   107,    40,   108,   107,     0,     0,   107,    39,   109,
-   107,     0,     0,     0,   107,    37,   110,    99,    38,   111,
-   107,     0,     0,   107,    37,   112,    38,   107,     0,   107,
-    36,   107,     0,   107,    35,   107,     0,     3,     0,     8,
-     0,   115,     0,    59,    99,    76,     0,    59,     1,    76,
-     0,     0,    59,   114,   200,    76,     0,   113,    59,   100,
-    76,     0,   113,    60,    99,    83,     0,   113,    58,    97,
-     0,   113,    57,    97,     0,   113,    54,     0,   113,    55,
-     0,     9,     0,   115,     9,     0,     0,   118,     0,   118,
-    10,     0,   205,   206,   119,     0,   117,     0,   193,     0,
-   118,   117,     0,   117,   193,     0,   127,   122,   135,    77,
-     0,   130,   122,   136,    77,     0,   127,    77,     0,   130,
-    77,     0,   205,   206,   124,     0,   120,     0,   193,     0,
-   121,   120,     0,   120,   193,     0,     0,     0,   125,   122,
-   135,    77,     0,   129,   122,   136,    77,     0,   125,   122,
-   158,     0,   129,   122,   161,     0,   125,    77,     0,   129,
-    77,     0,   240,   124,     0,   133,   126,     0,   129,   133,
-   126,     0,     0,   126,   134,     0,   126,     5,     0,   126,
-   143,     0,   133,   128,     0,   130,   133,   128,     0,     0,
-   128,   134,     0,   128,     5,     0,   130,     0,   143,     0,
-   129,   130,     0,   129,   143,     0,     7,     0,     5,     0,
-   130,     7,     0,   130,     5,     0,   133,   132,     0,   187,
-   133,   132,     0,     0,   132,   134,     0,     6,     0,   171,
-     0,     4,     0,    28,    59,    99,    76,     0,    28,    59,
-   185,    76,     0,     6,     0,     7,     0,   171,     0,   138,
-     0,   135,    81,   138,     0,   140,     0,   136,    81,   138,
-     0,     0,    27,    59,   115,    76,     0,     0,   164,   137,
-   142,    36,   139,   148,     0,   164,   137,   142,     0,     0,
-   167,   137,   142,    36,   141,   148,     0,   167,   137,   142,
-     0,     0,   143,     0,   144,     0,   143,   144,     0,    30,
-    59,    59,   145,    76,    76,     0,   146,     0,   145,    81,
-   146,     0,     0,   147,     0,   147,    59,     3,    76,     0,
-   147,    59,     3,    81,   101,    76,     0,   147,    59,   100,
-    76,     0,    97,     0,     5,     0,     6,     0,     7,     0,
-   107,     0,     0,    82,   149,   150,    78,     0,     1,     0,
-     0,   151,   176,     0,   152,     0,   151,    81,   152,     0,
-   156,    36,   154,     0,   157,   154,     0,     0,    97,    38,
-   153,   154,     0,   154,     0,     0,    82,   155,   150,    78,
-     0,   107,     0,     1,     0,   157,     0,   156,   157,     0,
-    58,    97,     0,    60,   107,    10,   107,    83,     0,    60,
-   107,    83,     0,     0,     0,   164,   159,   116,   160,   200,
-     0,     0,     0,   167,   162,   116,   163,   200,     0,   165,
-     0,   167,     0,    59,   165,    76,     0,   165,    59,   235,
-     0,   165,    60,    99,    83,     0,   165,    60,    83,     0,
-    50,   188,   165,     0,   143,   123,   165,     0,     4,     0,
-   166,    59,   235,     0,   166,    60,    50,    83,     0,   166,
-    60,    99,    83,     0,   166,    60,    83,     0,    50,   188,
-   166,     0,   143,   123,   166,     0,     4,     0,   167,    59,
-   235,     0,    59,   167,    76,     0,    50,   188,   167,     0,
-   167,    60,    50,    83,     0,   167,    60,    99,    83,     0,
-   167,    60,    83,     0,   143,   123,   167,     0,     3,     0,
-    13,     0,    13,   143,     0,    14,     0,    14,   143,     0,
-    12,     0,    12,   143,     0,     0,   168,    97,    82,   172,
-   178,    78,   142,     0,   168,    82,   178,    78,   142,     0,
-   168,    97,     0,     0,   169,    97,    82,   173,   178,    78,
-   142,     0,   169,    82,   178,    78,   142,     0,   169,    97,
-     0,     0,   170,    97,    82,   174,   183,   177,    78,   142,
-     0,     0,   170,    82,   175,   183,   177,    78,   142,     0,
-   170,    97,     0,     0,    81,     0,     0,    81,     0,   179,
-     0,   179,   180,     0,     0,   179,   180,    77,     0,   179,
-    77,     0,   131,   122,   181,     0,   131,     0,   187,   122,
-   181,     0,   187,     0,     1,     0,   240,   180,     0,   182,
-     0,   181,    81,   182,     0,   205,   206,   164,   142,     0,
-   205,   206,   164,    38,   107,   142,     0,   205,   206,    38,
-   107,   142,     0,   184,     0,   183,    81,   184,     0,     1,
-     0,    97,     0,    97,    36,   107,     0,   131,   186,     0,
-   187,   186,     0,     0,   189,     0,     7,     0,   187,     7,
-     0,     0,   188,     7,     0,    59,   189,    76,     0,    50,
-   188,   189,     0,    50,   188,     0,   189,    59,   228,     0,
-   189,    60,    99,    83,     0,   189,    60,    83,     0,    59,
-   228,     0,    60,    99,    83,     0,    60,    83,     0,   143,
-   123,   189,     0,   191,     0,   208,     0,   191,   208,     0,
-   191,   193,     0,     0,   190,     0,     1,    77,     0,     0,
-     0,   196,     0,   197,     0,   196,   197,     0,    32,   239,
-    77,     0,   200,     0,     1,   200,     0,    82,     0,   199,
-    78,     0,   199,   194,   195,   121,   192,    78,     0,   199,
-   194,   195,     1,    78,     0,   199,   194,   195,   190,    78,
-     0,   202,   207,     0,   202,     1,     0,    15,    59,    99,
-    76,     0,     0,    18,   204,   207,    17,     0,     0,     0,
-   205,   206,   210,     0,   205,   206,   221,   207,     0,   205,
-   206,   209,     0,   210,     0,   221,     0,   200,     0,   218,
-     0,    99,    77,     0,     0,   201,    16,   211,   207,     0,
-   201,     0,   201,    16,     1,     0,     0,     0,    17,   212,
-    59,    99,    76,   213,   207,     0,   203,    59,    99,    76,
-    77,     0,   203,     1,     0,     0,     0,     0,    19,    59,
-   223,    77,   214,   223,    77,   215,   223,    76,   216,   207,
-     0,     0,    20,    59,    99,    76,   217,   207,     0,    23,
-    77,     0,    24,    77,     0,    25,    77,     0,    25,    99,
-    77,     0,    27,   222,    59,    99,    76,    77,     0,    27,
-   222,    59,    99,    38,   224,    76,    77,     0,    27,   222,
-    59,    99,    38,   224,    38,   224,    76,    77,     0,    27,
-   222,    59,    99,    38,   224,    38,   224,    38,   227,    76,
-    77,     0,    26,    97,    77,     0,    26,    50,    99,    77,
-     0,    77,     0,   219,     0,     0,    19,    59,   113,    76,
-   220,   207,     0,    21,   107,    38,     0,    21,   107,    10,
-   107,    38,     0,    22,    38,     0,    97,    38,   142,     0,
-     0,     7,     0,     0,    99,     0,     0,   225,     0,   226,
-     0,   225,    81,   226,     0,     9,    59,    99,    76,     0,
-   115,     0,   227,    81,   115,     0,     0,   229,   230,     0,
-   232,    76,     0,     0,   233,    77,   231,   230,     0,     1,
-    76,     0,     0,    10,     0,   233,     0,   233,    81,    10,
-     0,   234,     0,   233,    81,   234,     0,   125,   122,   166,
-   142,     0,   125,   122,   167,   142,     0,   125,   122,   186,
-   142,     0,   129,   122,   167,   142,     0,   129,   122,   186,
-   142,     0,     0,   236,   237,     0,   230,     0,   238,    76,
-     0,     3,     0,   238,    81,     3,     0,    97,     0,   239,
-    81,    97,     0,    31,     0
+    86,     0,     0,    87,    89,     0,     0,    86,    88,    89,
+     0,    91,     0,    90,     0,    27,    60,   100,    77,    78,
+     0,   241,    89,     0,   123,   137,    78,     0,   130,   123,
+   137,    78,     0,   126,   123,   136,    78,     0,   130,    78,
+     0,   126,    78,     0,     1,    78,     0,     1,    79,     0,
+    78,     0,     0,     0,   126,   123,   165,    92,   117,    93,
+   199,     0,   126,   123,   165,     1,     0,     0,     0,   130,
+   123,   168,    94,   117,    95,   199,     0,   130,   123,   168,
+     1,     0,     0,     0,   123,   168,    96,   117,    97,   199,
+     0,   123,   168,     1,     0,     3,     0,     4,     0,    44,
+     0,    50,     0,    49,     0,    55,     0,    56,     0,    80,
+     0,    81,     0,   102,     0,     0,   102,     0,   108,     0,
+   102,    82,   108,     0,   114,     0,    51,   106,     0,   241,
+   106,     0,    99,   106,     0,    41,    98,     0,   104,   103,
+     0,   104,    60,   186,    77,     0,   105,   103,     0,   105,
+    60,   186,    77,     0,    33,   106,     0,    34,   106,     0,
+    35,    60,   108,    82,   186,    77,     0,    11,     0,    29,
+     0,   103,     0,    60,   186,    77,   106,     0,     0,    60,
+   186,    77,    83,   107,   151,    79,     0,   106,     0,   108,
+    49,   108,     0,   108,    50,   108,     0,   108,    51,   108,
+     0,   108,    52,   108,     0,   108,    53,   108,     0,   108,
+    47,   108,     0,   108,    48,   108,     0,   108,    46,   108,
+     0,   108,    45,   108,     0,   108,    44,   108,     0,   108,
+    42,   108,     0,   108,    43,   108,     0,     0,   108,    41,
+   109,   108,     0,     0,   108,    40,   110,   108,     0,     0,
+     0,   108,    38,   111,   100,    39,   112,   108,     0,     0,
+   108,    38,   113,    39,   108,     0,   108,    37,   108,     0,
+   108,    36,   108,     0,     3,     0,     8,     0,   116,     0,
+    60,   100,    77,     0,    60,     1,    77,     0,     0,    60,
+   115,   201,    77,     0,   114,    60,   101,    77,     0,   114,
+    61,   100,    84,     0,   114,    59,    98,     0,   114,    58,
+    98,     0,   114,    55,     0,   114,    56,     0,     9,     0,
+   116,     9,     0,     0,   119,     0,   119,    10,     0,   206,
+   207,   120,     0,   118,     0,   194,     0,   119,   118,     0,
+   118,   194,     0,   128,   123,   136,    78,     0,   131,   123,
+   137,    78,     0,   128,    78,     0,   131,    78,     0,   206,
+   207,   125,     0,   121,     0,   194,     0,   122,   121,     0,
+   121,   194,     0,     0,     0,   126,   123,   136,    78,     0,
+   130,   123,   137,    78,     0,   126,   123,   159,     0,   130,
+   123,   162,     0,   126,    78,     0,   130,    78,     0,   241,
+   125,     0,   134,   127,     0,   130,   134,   127,     0,     0,
+   127,   135,     0,   127,     5,     0,   127,   144,     0,   134,
+   129,     0,   131,   134,   129,     0,     0,   129,   135,     0,
+   129,     5,     0,   131,     0,   144,     0,   130,   131,     0,
+   130,   144,     0,     7,     0,     5,     0,   131,     7,     0,
+   131,     5,     0,   134,   133,     0,   188,   134,   133,     0,
+     0,   133,   135,     0,     6,     0,   172,     0,     4,     0,
+    28,    60,   100,    77,     0,    28,    60,   186,    77,     0,
+     6,     0,     7,     0,   172,     0,   139,     0,   136,    82,
+   139,     0,   141,     0,   137,    82,   139,     0,     0,    27,
+    60,   116,    77,     0,     0,   165,   138,   143,    37,   140,
+   149,     0,   165,   138,   143,     0,     0,   168,   138,   143,
+    37,   142,   149,     0,   168,   138,   143,     0,     0,   144,
+     0,   145,     0,   144,   145,     0,    30,    60,    60,   146,
+    77,    77,     0,   147,     0,   146,    82,   147,     0,     0,
+   148,     0,   148,    60,     3,    77,     0,   148,    60,     3,
+    82,   102,    77,     0,   148,    60,   101,    77,     0,    98,
+     0,     5,     0,     6,     0,     7,     0,   108,     0,     0,
+    83,   150,   151,    79,     0,     1,     0,     0,   152,   177,
+     0,   153,     0,   152,    82,   153,     0,   157,    37,   155,
+     0,   158,   155,     0,     0,    98,    39,   154,   155,     0,
+   155,     0,     0,    83,   156,   151,    79,     0,   108,     0,
+     1,     0,   158,     0,   157,   158,     0,    59,    98,     0,
+    61,   108,    10,   108,    84,     0,    61,   108,    84,     0,
+     0,     0,   165,   160,   117,   161,   201,     0,     0,     0,
+   168,   163,   117,   164,   201,     0,   166,     0,   168,     0,
+    60,   166,    77,     0,   166,    60,   236,     0,   166,    61,
+   100,    84,     0,   166,    61,    84,     0,    51,   189,   166,
+     0,   144,   124,   166,     0,     4,     0,   167,    60,   236,
+     0,   167,    61,    51,    84,     0,   167,    61,   100,    84,
+     0,   167,    61,    84,     0,    51,   189,   167,     0,   144,
+   124,   167,     0,     4,     0,   168,    60,   236,     0,    60,
+   168,    77,     0,    51,   189,   168,     0,   168,    61,    51,
+    84,     0,   168,    61,   100,    84,     0,   168,    61,    84,
+     0,   144,   124,   168,     0,     3,     0,    13,     0,    13,
+   144,     0,    14,     0,    14,   144,     0,    12,     0,    12,
+   144,     0,     0,   169,    98,    83,   173,   179,    79,   143,
+     0,   169,    83,   179,    79,   143,     0,   169,    98,     0,
+     0,   170,    98,    83,   174,   179,    79,   143,     0,   170,
+    83,   179,    79,   143,     0,   170,    98,     0,     0,   171,
+    98,    83,   175,   184,   178,    79,   143,     0,     0,   171,
+    83,   176,   184,   178,    79,   143,     0,   171,    98,     0,
+     0,    82,     0,     0,    82,     0,   180,     0,   180,   181,
+     0,     0,   180,   181,    78,     0,   180,    78,     0,   132,
+   123,   182,     0,   132,     0,   188,   123,   182,     0,   188,
+     0,     1,     0,   241,   181,     0,   183,     0,   182,    82,
+   183,     0,   206,   207,   165,   143,     0,   206,   207,   165,
+    39,   108,   143,     0,   206,   207,    39,   108,   143,     0,
+   185,     0,   184,    82,   185,     0,     1,     0,    98,     0,
+    98,    37,   108,     0,   132,   187,     0,   188,   187,     0,
+     0,   190,     0,     7,     0,   188,     7,     0,     0,   189,
+     7,     0,    60,   190,    77,     0,    51,   189,   190,     0,
+    51,   189,     0,   190,    60,   229,     0,   190,    61,   100,
+    84,     0,   190,    61,    84,     0,    60,   229,     0,    61,
+   100,    84,     0,    61,    84,     0,   144,   124,   190,     0,
+   192,     0,   209,     0,   192,   209,     0,   192,   194,     0,
+     0,   191,     0,     1,    78,     0,     0,     0,   197,     0,
+   198,     0,   197,   198,     0,    32,   240,    78,     0,   201,
+     0,     1,   201,     0,    83,     0,   200,    79,     0,   200,
+   195,   196,   122,   193,    79,     0,   200,   195,   196,     1,
+    79,     0,   200,   195,   196,   191,    79,     0,   203,   208,
+     0,   203,     1,     0,    15,    60,   100,    77,     0,     0,
+    18,   205,   208,    17,     0,     0,     0,   206,   207,   211,
+     0,   206,   207,   222,   208,     0,   206,   207,   210,     0,
+   211,     0,   222,     0,   201,     0,   219,     0,   100,    78,
+     0,     0,   202,    16,   212,   208,     0,   202,     0,   202,
+    16,     1,     0,     0,     0,    17,   213,    60,   100,    77,
+   214,   208,     0,   204,    60,   100,    77,    78,     0,   204,
+     1,     0,     0,     0,     0,    19,    60,   224,    78,   215,
+   224,    78,   216,   224,    77,   217,   208,     0,     0,    20,
+    60,   100,    77,   218,   208,     0,    23,    78,     0,    24,
+    78,     0,    25,    78,     0,    25,   100,    78,     0,    27,
+   223,    60,   100,    77,    78,     0,    27,   223,    60,   100,
+    39,   225,    77,    78,     0,    27,   223,    60,   100,    39,
+   225,    39,   225,    77,    78,     0,    27,   223,    60,   100,
+    39,   225,    39,   225,    39,   228,    77,    78,     0,    26,
+    98,    78,     0,    26,    51,   100,    78,     0,    78,     0,
+   220,     0,     0,    19,    60,   114,    77,   221,   208,     0,
+    21,   108,    39,     0,    21,   108,    10,   108,    39,     0,
+    22,    39,     0,    98,    39,   143,     0,     0,     7,     0,
+     0,   100,     0,     0,   226,     0,   227,     0,   226,    82,
+   227,     0,     9,    60,   100,    77,     0,   116,     0,   228,
+    82,   116,     0,     0,   230,   231,     0,   233,    77,     0,
+     0,   234,    78,   232,   231,     0,     1,    77,     0,     0,
+    10,     0,   234,     0,   234,    82,    10,     0,   235,     0,
+   234,    82,   235,     0,   126,   123,   167,   143,     0,   126,
+   123,   168,   143,     0,   126,   123,   187,   143,     0,   130,
+   123,   168,   143,     0,   130,   123,   187,   143,     0,     0,
+   237,   238,     0,   231,     0,   239,    77,     0,     3,     0,
+   239,    82,     3,     0,    98,     0,   240,    82,    98,     0,
+    31,     0
 };
 
 #endif
@@ -362,42 +364,42 @@ static const short yyrline[] = { 0,
    313,   318,   323,   329,   331,   336,   341,   347,   349,   354,
    361,   363,   366,   368,   370,   372,   374,   376,   378,   382,
    386,   389,   392,   395,   399,   401,   404,   407,   411,   439,
-   445,   448,   451,   454,   456,   460,   464,   468,   470,   473,
-   477,   504,   506,   508,   510,   512,   514,   516,   518,   520,
-   522,   524,   526,   528,   530,   534,   536,   540,   542,   545,
-   549,   551,   558,   561,   569,   580,   679,   680,   682,   688,
-   690,   704,   727,   729,   731,   735,   741,   743,   748,   750,
-   755,   757,   758,   768,   773,   775,   776,   777,   784,   790,
-   795,   798,   806,   811,   813,   814,   815,   822,   833,   837,
-   843,   848,   853,   858,   860,   862,   871,   874,   878,   880,
-   882,   887,   891,   894,   898,   901,   903,   915,   918,   920,
-   922,   926,   930,   932,   935,   948,   951,   955,   957,   965,
-   966,   967,   971,   973,   979,   980,   981,   984,   986,   989,
-   991,   994,   997,  1003,  1010,  1012,  1019,  1026,  1029,  1036,
-  1039,  1043,  1046,  1050,  1055,  1058,  1062,  1065,  1067,  1069,
-  1071,  1078,  1080,  1081,  1082,  1087,  1089,  1094,  1102,  1107,
-  1111,  1114,  1116,  1121,  1123,  1124,  1127,  1127,  1130,  1133,
-  1135,  1137,  1140,  1142,  1145,  1151,  1153,  1157,  1168,  1176,
-  1180,  1191,  1199,  1206,  1208,  1213,  1216,  1221,  1223,  1225,
-  1232,  1234,  1242,  1248,  1253,  1255,  1257,  1264,  1266,  1272,
-  1278,  1280,  1282,  1287,  1289,  1296,  1298,  1301,  1304,  1308,
-  1311,  1315,  1318,  1322,  1327,  1329,  1333,  1335,  1337,  1339,
-  1343,  1345,  1348,  1351,  1354,  1357,  1361,  1363,  1366,  1368,
-  1373,  1376,  1381,  1383,  1385,  1399,  1406,  1411,  1417,  1422,
-  1424,  1429,  1431,  1435,  1439,  1443,  1453,  1455,  1460,  1465,
-  1468,  1472,  1475,  1479,  1482,  1485,  1488,  1492,  1495,  1499,
-  1503,  1505,  1507,  1509,  1511,  1513,  1515,  1517,  1521,  1529,
-  1537,  1539,  1541,  1545,  1547,  1550,  1553,  1564,  1566,  1571,
-  1573,  1576,  1590,  1593,  1596,  1598,  1600,  1608,  1616,  1627,
-  1632,  1635,  1649,  1658,  1662,  1666,  1670,  1676,  1680,  1685,
-  1688,  1693,  1696,  1697,  1714,  1719,  1722,  1734,  1736,  1746,
-  1756,  1757,  1765,  1768,  1780,  1784,  1801,  1811,  1820,  1825,
-  1830,  1835,  1839,  1843,  1854,  1861,  1868,  1875,  1886,  1892,
-  1895,  1900,  1923,  1957,  1988,  2019,  2034,  2048,  2052,  2056,
-  2059,  2064,  2066,  2069,  2071,  2075,  2080,  2083,  2089,  2094,
-  2099,  2101,  2110,  2111,  2117,  2119,  2129,  2131,  2135,  2138,
-  2144,  2154,  2163,  2172,  2182,  2196,  2201,  2206,  2208,  2217,
-  2220,  2225,  2228,  2232
+   445,   448,   451,   454,   456,   458,   462,   466,   470,   472,
+   475,   479,   506,   508,   510,   512,   514,   516,   518,   520,
+   522,   524,   526,   528,   530,   532,   536,   538,   542,   544,
+   547,   551,   553,   560,   563,   571,   582,   681,   682,   684,
+   690,   692,   706,   729,   731,   733,   737,   743,   745,   750,
+   752,   757,   759,   760,   770,   775,   777,   778,   779,   786,
+   792,   797,   800,   808,   813,   815,   816,   817,   824,   835,
+   839,   845,   850,   855,   860,   862,   864,   873,   876,   880,
+   882,   884,   889,   893,   896,   900,   903,   905,   917,   920,
+   922,   924,   928,   932,   934,   937,   950,   953,   957,   959,
+   967,   968,   969,   973,   975,   981,   982,   983,   986,   988,
+   991,   993,   996,   999,  1005,  1012,  1014,  1021,  1028,  1031,
+  1038,  1041,  1045,  1048,  1052,  1057,  1060,  1064,  1067,  1069,
+  1071,  1073,  1080,  1082,  1083,  1084,  1089,  1091,  1096,  1104,
+  1109,  1113,  1116,  1118,  1123,  1125,  1126,  1129,  1129,  1132,
+  1135,  1137,  1139,  1142,  1144,  1147,  1153,  1155,  1159,  1170,
+  1178,  1182,  1193,  1201,  1208,  1210,  1215,  1218,  1223,  1225,
+  1227,  1234,  1236,  1244,  1250,  1255,  1257,  1259,  1266,  1268,
+  1274,  1280,  1282,  1284,  1289,  1291,  1298,  1300,  1303,  1306,
+  1310,  1313,  1317,  1320,  1324,  1329,  1331,  1335,  1337,  1339,
+  1341,  1345,  1347,  1350,  1353,  1356,  1359,  1363,  1365,  1368,
+  1370,  1375,  1378,  1383,  1385,  1387,  1401,  1408,  1413,  1419,
+  1424,  1426,  1431,  1433,  1437,  1441,  1445,  1455,  1457,  1462,
+  1467,  1470,  1474,  1477,  1481,  1484,  1487,  1490,  1494,  1497,
+  1501,  1505,  1507,  1509,  1511,  1513,  1515,  1517,  1519,  1523,
+  1531,  1539,  1541,  1543,  1547,  1549,  1552,  1555,  1566,  1568,
+  1573,  1575,  1578,  1592,  1595,  1598,  1600,  1602,  1610,  1618,
+  1629,  1634,  1637,  1651,  1660,  1664,  1668,  1672,  1678,  1682,
+  1687,  1690,  1695,  1698,  1699,  1716,  1721,  1724,  1736,  1738,
+  1748,  1758,  1759,  1767,  1770,  1782,  1786,  1803,  1813,  1822,
+  1827,  1832,  1837,  1841,  1845,  1856,  1863,  1870,  1877,  1888,
+  1894,  1897,  1902,  1925,  1959,  1990,  2021,  2036,  2050,  2054,
+  2058,  2061,  2066,  2068,  2071,  2073,  2077,  2082,  2085,  2091,
+  2096,  2101,  2103,  2112,  2113,  2119,  2121,  2131,  2133,  2137,
+  2140,  2146,  2156,  2165,  2174,  2184,  2198,  2203,  2208,  2210,
+  2219,  2222,  2227,  2230,  2234
 };
 #endif
 
@@ -408,9 +410,9 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 "TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
 "ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
 "BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","ATTRIBUTE",
-"EXTENSION","LABEL","REALPART","IMAGPART","ASSIGN","'='","'?'","':'","OROR",
-"ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT","'+'",
-"'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT",
+"EXTENSION","LABEL","REALPART","IMAGPART","VA_ARG","ASSIGN","'='","'?'","':'",
+"OROR","ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT",
+"'+'","'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT",
 "'.'","'('","'['","INTERFACE","IMPLEMENTATION","END","SELECTOR","DEFS","ENCODE",
 "CLASSNAME","PUBLIC","PRIVATE","PROTECTED","PROTOCOL","OBJECTNAME","CLASS","ALIAS",
 "OBJC_STRING","')'","';'","'}'","'~'","'!'","','","'{'","']'","program","extdefs",
@@ -442,47 +444,47 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 #endif
 
 static const short yyr1[] = {     0,
-    84,    84,    86,    85,    87,    85,    88,    88,    88,    88,
-    89,    89,    89,    89,    89,    89,    89,    89,    91,    92,
-    90,    90,    93,    94,    90,    90,    95,    96,    90,    90,
-    97,    97,    98,    98,    98,    98,    98,    98,    98,    99,
-   100,   100,   101,   101,   102,   102,   102,   102,   102,   102,
-   102,   102,   102,   102,   102,   103,   104,   105,   105,   106,
-   105,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-   107,   107,   107,   107,   108,   107,   109,   107,   110,   111,
-   107,   112,   107,   107,   107,   113,   113,   113,   113,   113,
-   114,   113,   113,   113,   113,   113,   113,   113,   115,   115,
-   116,   116,   116,   117,   118,   118,   118,   118,   119,   119,
-   119,   119,   120,   121,   121,   121,   121,   122,   123,   124,
-   124,   124,   124,   124,   124,   124,   125,   125,   126,   126,
-   126,   126,   127,   127,   128,   128,   128,   129,   129,   129,
-   129,   130,   130,   130,   130,   131,   131,   132,   132,   133,
-   133,   133,   133,   133,   134,   134,   134,   135,   135,   136,
-   136,   137,   137,   139,   138,   138,   141,   140,   140,   142,
-   142,   143,   143,   144,   145,   145,   146,   146,   146,   146,
-   146,   147,   147,   147,   147,   148,   149,   148,   148,   150,
-   150,   151,   151,   152,   152,   153,   152,   152,   155,   154,
-   154,   154,   156,   156,   157,   157,   157,   159,   160,   158,
-   162,   163,   161,   164,   164,   165,   165,   165,   165,   165,
-   165,   165,   166,   166,   166,   166,   166,   166,   166,   167,
-   167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
-   169,   170,   170,   172,   171,   171,   171,   173,   171,   171,
-   171,   174,   171,   175,   171,   171,   176,   176,   177,   177,
-   178,   178,   179,   179,   179,   180,   180,   180,   180,   180,
-   180,   181,   181,   182,   182,   182,   183,   183,   183,   184,
-   184,   185,   185,   186,   186,   187,   187,   188,   188,   189,
-   189,   189,   189,   189,   189,   189,   189,   189,   189,   190,
-   191,   191,   191,   192,   192,   193,   194,   195,   195,   196,
-   196,   197,   198,   198,   199,   200,   200,   200,   200,   201,
-   201,   202,   204,   203,   205,   206,   207,   207,   208,   209,
-   209,   210,   210,   210,   211,   210,   210,   210,   212,   213,
-   210,   210,   210,   214,   215,   216,   210,   217,   210,   210,
-   210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-   218,   220,   219,   221,   221,   221,   221,   222,   222,   223,
-   223,   224,   224,   225,   225,   226,   227,   227,   229,   228,
-   230,   231,   230,   230,   232,   232,   232,   232,   233,   233,
-   234,   234,   234,   234,   234,   236,   235,   237,   237,   238,
-   238,   239,   239,   240
+    85,    85,    87,    86,    88,    86,    89,    89,    89,    89,
+    90,    90,    90,    90,    90,    90,    90,    90,    92,    93,
+    91,    91,    94,    95,    91,    91,    96,    97,    91,    91,
+    98,    98,    99,    99,    99,    99,    99,    99,    99,   100,
+   101,   101,   102,   102,   103,   103,   103,   103,   103,   103,
+   103,   103,   103,   103,   103,   103,   104,   105,   106,   106,
+   107,   106,   108,   108,   108,   108,   108,   108,   108,   108,
+   108,   108,   108,   108,   108,   109,   108,   110,   108,   111,
+   112,   108,   113,   108,   108,   108,   114,   114,   114,   114,
+   114,   115,   114,   114,   114,   114,   114,   114,   114,   116,
+   116,   117,   117,   117,   118,   119,   119,   119,   119,   120,
+   120,   120,   120,   121,   122,   122,   122,   122,   123,   124,
+   125,   125,   125,   125,   125,   125,   125,   126,   126,   127,
+   127,   127,   127,   128,   128,   129,   129,   129,   130,   130,
+   130,   130,   131,   131,   131,   131,   132,   132,   133,   133,
+   134,   134,   134,   134,   134,   135,   135,   135,   136,   136,
+   137,   137,   138,   138,   140,   139,   139,   142,   141,   141,
+   143,   143,   144,   144,   145,   146,   146,   147,   147,   147,
+   147,   147,   148,   148,   148,   148,   149,   150,   149,   149,
+   151,   151,   152,   152,   153,   153,   154,   153,   153,   156,
+   155,   155,   155,   157,   157,   158,   158,   158,   160,   161,
+   159,   163,   164,   162,   165,   165,   166,   166,   166,   166,
+   166,   166,   166,   167,   167,   167,   167,   167,   167,   167,
+   168,   168,   168,   168,   168,   168,   168,   168,   169,   169,
+   170,   170,   171,   171,   173,   172,   172,   172,   174,   172,
+   172,   172,   175,   172,   176,   172,   172,   177,   177,   178,
+   178,   179,   179,   180,   180,   180,   181,   181,   181,   181,
+   181,   181,   182,   182,   183,   183,   183,   184,   184,   184,
+   185,   185,   186,   186,   187,   187,   188,   188,   189,   189,
+   190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
+   191,   192,   192,   192,   193,   193,   194,   195,   196,   196,
+   197,   197,   198,   199,   199,   200,   201,   201,   201,   201,
+   202,   202,   203,   205,   204,   206,   207,   208,   208,   209,
+   210,   210,   211,   211,   211,   212,   211,   211,   211,   213,
+   214,   211,   211,   211,   215,   216,   217,   211,   218,   211,
+   211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+   211,   219,   221,   220,   222,   222,   222,   222,   223,   223,
+   224,   224,   225,   225,   226,   226,   227,   228,   228,   230,
+   229,   231,   232,   231,   231,   233,   233,   233,   233,   234,
+   234,   235,   235,   235,   235,   235,   237,   236,   238,   238,
+   239,   239,   240,   240,   241
 };
 
 static const short yyr2[] = {     0,
@@ -491,721 +493,752 @@ static const short yyr2[] = {     0,
      7,     4,     0,     0,     7,     4,     0,     0,     6,     3,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
      0,     1,     1,     3,     1,     2,     2,     2,     2,     2,
-     4,     2,     4,     2,     2,     1,     1,     1,     4,     0,
-     7,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     0,     4,     0,     4,     0,     0,
-     7,     0,     5,     3,     3,     1,     1,     1,     3,     3,
-     0,     4,     4,     4,     3,     3,     2,     2,     1,     2,
-     0,     1,     2,     3,     1,     1,     2,     2,     4,     4,
-     2,     2,     3,     1,     1,     2,     2,     0,     0,     4,
-     4,     3,     3,     2,     2,     2,     2,     3,     0,     2,
-     2,     2,     2,     3,     0,     2,     2,     1,     1,     2,
-     2,     1,     1,     2,     2,     2,     3,     0,     2,     1,
-     1,     1,     4,     4,     1,     1,     1,     1,     3,     1,
-     3,     0,     4,     0,     6,     3,     0,     6,     3,     0,
-     1,     1,     2,     6,     1,     3,     0,     1,     4,     6,
-     4,     1,     1,     1,     1,     1,     0,     4,     1,     0,
-     2,     1,     3,     3,     2,     0,     4,     1,     0,     4,
-     1,     1,     1,     2,     2,     5,     3,     0,     0,     5,
-     0,     0,     5,     1,     1,     3,     3,     4,     3,     3,
-     3,     1,     3,     4,     4,     3,     3,     3,     1,     3,
-     3,     3,     4,     4,     3,     3,     1,     1,     2,     1,
-     2,     1,     2,     0,     7,     5,     2,     0,     7,     5,
-     2,     0,     8,     0,     7,     2,     0,     1,     0,     1,
-     1,     2,     0,     3,     2,     3,     1,     3,     1,     1,
-     2,     1,     3,     4,     6,     5,     1,     3,     1,     1,
-     3,     2,     2,     0,     1,     1,     2,     0,     2,     3,
-     3,     2,     3,     4,     3,     2,     3,     2,     3,     1,
-     1,     2,     2,     0,     1,     2,     0,     0,     1,     1,
-     2,     3,     1,     2,     1,     2,     6,     5,     5,     2,
-     2,     4,     0,     4,     0,     0,     3,     4,     3,     1,
-     1,     1,     1,     2,     0,     4,     1,     3,     0,     0,
-     7,     5,     2,     0,     0,     0,    12,     0,     6,     2,
-     2,     2,     3,     6,     8,    10,    12,     3,     4,     1,
-     1,     0,     6,     3,     5,     2,     3,     0,     1,     0,
-     1,     0,     1,     1,     3,     4,     1,     3,     0,     2,
-     2,     0,     4,     2,     0,     1,     1,     3,     1,     3,
-     4,     4,     4,     4,     4,     0,     2,     1,     2,     1,
-     3,     1,     3,     1
+     4,     2,     4,     2,     2,     6,     1,     1,     1,     4,
+     0,     7,     1,     3,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     3,     3,     0,     4,     0,     4,     0,
+     0,     7,     0,     5,     3,     3,     1,     1,     1,     3,
+     3,     0,     4,     4,     4,     3,     3,     2,     2,     1,
+     2,     0,     1,     2,     3,     1,     1,     2,     2,     4,
+     4,     2,     2,     3,     1,     1,     2,     2,     0,     0,
+     4,     4,     3,     3,     2,     2,     2,     2,     3,     0,
+     2,     2,     2,     2,     3,     0,     2,     2,     1,     1,
+     2,     2,     1,     1,     2,     2,     2,     3,     0,     2,
+     1,     1,     1,     4,     4,     1,     1,     1,     1,     3,
+     1,     3,     0,     4,     0,     6,     3,     0,     6,     3,
+     0,     1,     1,     2,     6,     1,     3,     0,     1,     4,
+     6,     4,     1,     1,     1,     1,     1,     0,     4,     1,
+     0,     2,     1,     3,     3,     2,     0,     4,     1,     0,
+     4,     1,     1,     1,     2,     2,     5,     3,     0,     0,
+     5,     0,     0,     5,     1,     1,     3,     3,     4,     3,
+     3,     3,     1,     3,     4,     4,     3,     3,     3,     1,
+     3,     3,     3,     4,     4,     3,     3,     1,     1,     2,
+     1,     2,     1,     2,     0,     7,     5,     2,     0,     7,
+     5,     2,     0,     8,     0,     7,     2,     0,     1,     0,
+     1,     1,     2,     0,     3,     2,     3,     1,     3,     1,
+     1,     2,     1,     3,     4,     6,     5,     1,     3,     1,
+     1,     3,     2,     2,     0,     1,     1,     2,     0,     2,
+     3,     3,     2,     3,     4,     3,     2,     3,     2,     3,
+     1,     1,     2,     2,     0,     1,     2,     0,     0,     1,
+     1,     2,     3,     1,     2,     1,     2,     6,     5,     5,
+     2,     2,     4,     0,     4,     0,     0,     3,     4,     3,
+     1,     1,     1,     1,     2,     0,     4,     1,     3,     0,
+     0,     7,     5,     2,     0,     0,     0,    12,     0,     6,
+     2,     2,     2,     3,     6,     8,    10,    12,     3,     4,
+     1,     1,     0,     6,     3,     5,     2,     3,     0,     1,
+     0,     1,     0,     1,     1,     3,     4,     1,     3,     0,
+     2,     2,     0,     4,     2,     0,     1,     1,     3,     1,
+     3,     4,     4,     4,     4,     4,     0,     2,     1,     2,
+     1,     3,     1,     3,     1
 };
 
 static const short yydefact[] = {     3,
-     5,     0,     0,     0,   152,   143,   150,   142,   242,   238,
-   240,     0,     0,     0,   404,    18,     4,     8,     7,     0,
-   118,   118,   138,   129,   139,   172,     0,     0,     0,   151,
-     0,     6,    16,    17,   243,   239,   241,     0,     0,     0,
-   237,   288,     0,     0,   160,   119,     0,    15,     0,    14,
-     0,   140,   129,   141,   145,   144,   127,   173,    31,    32,
-   263,   247,   263,   251,   254,   256,    10,    86,    87,    99,
-    56,    57,     0,     0,     0,    33,    35,    34,     0,    36,
-    37,     0,    38,    39,     0,     0,    40,    58,     0,     0,
-    62,    43,    45,    88,     0,   286,     0,   284,   148,     0,
-   284,   177,     0,     0,    11,     0,     0,    30,     0,   396,
-     0,     0,   170,   222,   288,     0,     0,   158,   119,     0,
-   214,   215,     0,     0,   128,   131,   155,   156,   130,   132,
-   157,     0,     0,   244,     0,   248,     0,   252,    54,    55,
-    49,    46,     0,     0,     0,     0,    48,     0,     0,     0,
-    50,     0,    52,     0,     0,    79,    77,    75,     0,     0,
+     5,     0,     0,     0,   153,   144,   151,   143,   243,   239,
+   241,     0,     0,     0,   405,    18,     4,     8,     7,     0,
+   119,   119,   139,   130,   140,   173,     0,     0,     0,   152,
+     0,     6,    16,    17,   244,   240,   242,     0,     0,     0,
+   238,   289,     0,     0,   161,   120,     0,    15,     0,    14,
+     0,   141,   130,   142,   146,   145,   128,   174,    31,    32,
+   264,   248,   264,   252,   255,   257,    10,    87,    88,   100,
+    57,    58,     0,     0,     0,     0,    33,    35,    34,     0,
+    36,    37,     0,    38,    39,     0,     0,    40,    59,     0,
+     0,    63,    43,    45,    89,     0,   287,     0,   285,   149,
+     0,   285,   178,     0,     0,    11,     0,     0,    30,     0,
+   397,     0,     0,   171,   223,   289,     0,     0,   159,   120,
+     0,   215,   216,     0,     0,   129,   132,   156,   157,   131,
+   133,   158,     0,     0,   245,     0,   249,     0,   253,    54,
+    55,     0,    49,    46,     0,     0,     0,     0,    48,     0,
+     0,     0,    50,     0,    52,     0,     0,    80,    78,    76,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    97,    98,     0,     0,    41,     0,   100,    47,   153,   288,
-   379,     0,   119,   282,   285,   146,   154,   287,   148,   283,
-   183,   184,   185,   182,     0,   175,   178,   289,   232,   231,
-   161,   162,   236,     0,   230,     0,     0,   235,     0,     0,
-    28,     0,   325,   106,   326,   169,   171,     0,     0,    13,
-     0,     0,    22,     0,   170,   396,     0,    12,    26,     0,
-   170,   270,   265,   118,   262,   118,     0,   263,   170,   263,
-   279,   280,   259,   277,     0,    90,    89,   315,   307,     0,
-     0,     9,    44,     0,     0,    85,    84,     0,     0,     0,
-     0,    73,    74,    72,    71,    70,    68,    69,    63,    64,
-    65,    66,    67,    96,    95,     0,    42,     0,   292,     0,
-   296,     0,   298,     0,     0,   379,     0,   149,   147,     0,
-   177,    41,     0,     0,   400,   386,   118,   118,   398,     0,
-   387,   389,   397,     0,   233,   234,   306,     0,   108,   103,
-   107,     0,   167,   220,   216,   159,   221,    20,   166,   217,
-   219,     0,    24,   246,   325,   264,   325,   271,     0,   250,
-     0,     0,   260,     0,   259,   316,   308,    92,    60,    59,
-    51,    53,     0,     0,    78,    76,    93,    94,   291,   290,
-   380,   297,   299,   293,   295,     0,   174,   176,    86,     0,
-   163,   384,   284,   284,   381,   382,     0,   399,     0,     0,
-    29,   313,   104,   118,   118,   135,     0,     0,   164,   218,
-     0,   266,   272,   326,   268,   170,   170,   281,   278,   170,
-     0,     0,     0,   309,   310,     0,    80,    83,   294,   179,
-     0,   181,   229,   288,   379,   119,   170,   170,   170,   288,
-   119,   170,   170,     0,   388,   390,   401,   314,   111,     0,
-   112,     0,   135,   133,   189,   187,   186,   168,    21,     0,
-    25,   325,     0,   245,   249,   255,   170,   402,     0,     0,
-     0,   325,     0,     0,   115,   326,   301,   311,   202,    86,
-     0,     0,   199,     0,   201,     0,   257,   192,   198,     0,
-     0,     0,     0,   292,     0,   396,     0,   391,   392,   393,
-   292,     0,   394,   395,   383,     0,     0,   162,   134,   137,
-   136,     0,   165,   273,     0,   170,   253,   312,     0,   318,
-   117,   116,   305,     0,   319,   303,   326,   302,     0,   205,
-     0,     0,   196,    61,     0,   191,     0,   204,   195,    81,
-   180,   227,   228,   223,     0,   226,     0,   109,   110,     0,
-   170,     0,   274,   403,   317,     0,   152,     0,   339,   323,
-     0,     0,     0,     0,     0,     0,     0,     0,   368,   360,
-     0,     0,   113,   118,   118,   332,   337,     0,     0,   329,
-   330,   333,   361,   331,     0,     0,   207,     0,     0,   193,
-   194,   224,   225,   188,   276,   170,     0,     0,   325,   370,
-     0,     0,   366,   350,   351,   352,     0,     0,     0,   369,
-     0,   170,   334,   124,     0,   125,     0,     0,   321,   326,
-   320,   343,     0,   126,     0,   200,   197,   275,     0,     0,
-     0,   371,    45,     0,     0,     0,   364,   353,     0,   358,
-     0,   367,     0,   122,   208,     0,   123,   211,   338,   325,
-     0,     0,   206,   322,     0,   324,   362,   344,   348,     0,
-   359,     0,   120,     0,   121,     0,   336,   327,   325,     0,
-   340,   325,   370,   325,   365,   372,     0,   209,   212,   328,
-   342,   325,   363,     0,   349,     0,     0,   373,   374,   354,
-     0,     0,   341,   345,     0,   372,     0,     0,   210,   213,
-   370,     0,     0,   355,   375,     0,   376,     0,     0,   346,
-   377,     0,   356,   325,     0,     0,   347,   357,   378,     0,
-     0,     0
+     0,     0,    98,    99,     0,     0,    41,     0,   101,    47,
+   154,   289,   380,     0,   120,   283,   286,   147,   155,   288,
+   149,   284,   184,   185,   186,   183,     0,   176,   179,   290,
+   233,   232,   162,   163,   237,     0,   231,     0,     0,   236,
+     0,     0,    28,     0,   326,   107,   327,   170,   172,     0,
+     0,    13,     0,     0,    22,     0,   171,   397,     0,    12,
+    26,     0,   171,   271,   266,   119,   263,   119,     0,   264,
+   171,   264,   280,   281,   260,   278,     0,     0,    91,    90,
+   316,   308,     0,     0,     9,    44,     0,     0,    86,    85,
+     0,     0,     0,     0,    74,    75,    73,    72,    71,    69,
+    70,    64,    65,    66,    67,    68,    97,    96,     0,    42,
+     0,   293,     0,   297,     0,   299,     0,     0,   380,     0,
+   150,   148,     0,   178,    41,     0,     0,   401,   387,   119,
+   119,   399,     0,   388,   390,   398,     0,   234,   235,   307,
+     0,   109,   104,   108,     0,   168,   221,   217,   160,   222,
+    20,   167,   218,   220,     0,    24,   247,   326,   265,   326,
+   272,     0,   251,     0,     0,   261,     0,   260,     0,   317,
+   309,    93,    61,    60,    51,    53,     0,     0,    79,    77,
+    94,    95,   292,   291,   381,   298,   300,   294,   296,     0,
+   175,   177,    87,     0,   164,   385,   285,   285,   382,   383,
+     0,   400,     0,     0,    29,   314,   105,   119,   119,   136,
+     0,     0,   165,   219,     0,   267,   273,   327,   269,   171,
+   171,   282,   279,   171,     0,     0,     0,     0,   310,   311,
+     0,    81,    84,   295,   180,     0,   182,   230,   289,   380,
+   120,   171,   171,   171,   289,   120,   171,   171,     0,   389,
+   391,   402,   315,   112,     0,   113,     0,   136,   134,   190,
+   188,   187,   169,    21,     0,    25,   326,     0,   246,   250,
+   256,   171,    56,   403,     0,     0,     0,   326,     0,     0,
+   116,   327,   302,   312,   203,    87,     0,     0,   200,     0,
+   202,     0,   258,   193,   199,     0,     0,     0,     0,   293,
+     0,   397,     0,   392,   393,   394,   293,     0,   395,   396,
+   384,     0,     0,   163,   135,   138,   137,     0,   166,   274,
+     0,   171,   254,   313,     0,   319,   118,   117,   306,     0,
+   320,   304,   327,   303,     0,   206,     0,     0,   197,    62,
+     0,   192,     0,   205,   196,    82,   181,   228,   229,   224,
+     0,   227,     0,   110,   111,     0,   171,     0,   275,   404,
+   318,     0,   153,     0,   340,   324,     0,     0,     0,     0,
+     0,     0,     0,     0,   369,   361,     0,     0,   114,   119,
+   119,   333,   338,     0,     0,   330,   331,   334,   362,   332,
+     0,     0,   208,     0,     0,   194,   195,   225,   226,   189,
+   277,   171,     0,     0,   326,   371,     0,     0,   367,   351,
+   352,   353,     0,     0,     0,   370,     0,   171,   335,   125,
+     0,   126,     0,     0,   322,   327,   321,   344,     0,   127,
+     0,   201,   198,   276,     0,     0,     0,   372,    45,     0,
+     0,     0,   365,   354,     0,   359,     0,   368,     0,   123,
+   209,     0,   124,   212,   339,   326,     0,     0,   207,   323,
+     0,   325,   363,   345,   349,     0,   360,     0,   121,     0,
+   122,     0,   337,   328,   326,     0,   341,   326,   371,   326,
+   366,   373,     0,   210,   213,   329,   343,   326,   364,     0,
+   350,     0,     0,   374,   375,   355,     0,     0,   342,   346,
+     0,   373,     0,     0,   211,   214,   371,     0,     0,   356,
+   376,     0,   377,     0,     0,   347,   378,     0,   357,   326,
+     0,     0,   348,   358,   379,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   690,
-     1,     2,     3,    17,    18,    19,   224,   378,   230,   381,
-   112,   308,   454,    85,   144,   276,    87,    88,    89,    90,
-    91,   396,    92,   261,   260,   258,   462,   259,    93,   145,
-    94,   211,   212,   213,   373,   441,   442,    20,   107,   543,
-   297,    57,   374,   424,   298,    23,    98,   186,    24,   129,
-   117,    44,   113,   118,   430,    45,   377,   216,   217,    26,
-   195,   196,   197,   428,   482,   456,   457,   458,   559,   459,
-   502,   460,   461,   614,   634,   661,   617,   636,   662,   202,
-   121,   407,   122,    27,    28,    29,    30,   238,   240,   245,
-   137,   506,   334,   132,   133,   235,   382,   383,   243,   244,
-   100,   184,   101,   103,   185,   443,   444,   494,   214,   337,
-   393,   394,   395,   371,   249,   372,   547,   548,   549,   569,
-   590,   312,   591,   447,   550,   551,   620,   568,   652,   643,
-   671,   684,   644,   552,   553,   642,   554,   581,   604,   657,
-   658,   659,   682,   281,   282,   299,   414,   300,   301,   302,
-   205,   206,   303,   304,   439,    95
+static const short yydefgoto[] = {   696,
+     1,     2,     3,    17,    18,    19,   226,   382,   232,   385,
+   113,   311,   460,    86,   146,   279,    88,    89,    90,    91,
+    92,   401,    93,   264,   263,   261,   468,   262,    94,   147,
+    95,   213,   214,   215,   377,   447,   448,    20,   108,   549,
+   300,    57,   378,   429,   301,    23,    99,   188,    24,   130,
+   118,    44,   114,   119,   435,    45,   381,   218,   219,    26,
+   197,   198,   199,   433,   488,   462,   463,   464,   565,   465,
+   508,   466,   467,   620,   640,   667,   623,   642,   668,   204,
+   122,   412,   123,    27,    28,    29,    30,   240,   242,   247,
+   138,   512,   337,   133,   134,   237,   386,   387,   245,   246,
+   101,   186,   102,   104,   187,   449,   450,   500,   216,   341,
+   398,   399,   400,   375,   252,   376,   553,   554,   555,   575,
+   596,   315,   597,   453,   556,   557,   626,   574,   658,   649,
+   677,   690,   650,   558,   559,   648,   560,   587,   610,   663,
+   664,   665,   688,   284,   285,   302,   419,   303,   304,   305,
+   207,   208,   306,   307,   445,    96
 };
 
-static const short yypact[] = {    95,
-   110,  2206,  2206,   260,-32768,-32768,-32768,-32768,    40,    40,
-    40,    57,    59,    89,-32768,-32768,-32768,-32768,-32768,    42,
-    99,  2234,    79,-32768,    40,-32768,    87,    93,   108,-32768,
-  2206,-32768,-32768,-32768,    40,    40,    40,  2068,  2002,   125,
--32768,-32768,    42,   147,-32768,    40,  1355,-32768,   257,-32768,
-    42,    79,-32768,    40,-32768,-32768,   696,-32768,-32768,-32768,
--32768,    76,-32768,   124,-32768,   132,-32768,-32768,-32768,-32768,
--32768,-32768,  2068,  2068,   373,-32768,-32768,-32768,  2068,-32768,
--32768,   721,-32768,-32768,  2068,   149,   153,-32768,  2095,  2122,
--32768,  2335,   881,   231,  2068,-32768,   186,   319,-32768,   203,
-   578,   708,   627,   304,-32768,   257,    42,-32768,   194,-32768,
-  1430,   438,    40,-32768,-32768,   257,   177,-32768,    40,   276,
-   398,   417,   188,  1417,   696,-32768,-32768,-32768,-32768,    40,
--32768,   208,   778,-32768,   214,-32768,   468,-32768,-32768,-32768,
--32768,-32768,   223,   269,   288,   312,-32768,   315,  2068,   721,
--32768,   721,-32768,  2068,  2068,   362,-32768,-32768,  2068,  2068,
-  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,  2068,
--32768,-32768,   373,   373,  2068,  2068,-32768,-32768,-32768,-32768,
-   319,  1457,    40,-32768,   426,   760,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,    50,-32768,   344,-32768,   417,-32768,
--32768,   385,   417,   419,-32768,   611,  1512,-32768,   349,   361,
--32768,   316,    70,-32768,-32768,   405,    40,   545,   323,-32768,
-   257,   257,-32768,   438,    40,-32768,  1539,-32768,-32768,   438,
-    40,-32768,-32768,   428,   370,   198,   953,-32768,    40,-32768,
--32768,   413,   383,-32768,   468,-32768,-32768,-32768,   376,   391,
-  1891,-32768,  2335,   402,   411,  2335,  2335,  2068,   443,  2068,
-  2068,  1564,  1645,  1859,  1078,   747,   838,   838,   356,   356,
--32768,-32768,-32768,-32768,-32768,   432,   153,   412,   463,   485,
--32768,   871,-32768,   434,   319,-32768,  1594,-32768,   760,   445,
-   708,  2149,    54,   448,-32768,-32768,-32768,  1036,-32768,   450,
-   197,-32768,-32768,    81,-32768,-32768,-32768,    39,-32768,-32768,
--32768,   846,-32768,   398,-32768,-32768,   398,-32768,   483,-32768,
--32768,   452,-32768,-32768,-32768,-32768,-32768,-32768,   461,-32768,
-   473,  2068,   373,   480,   383,-32768,   496,-32768,-32768,-32768,
--32768,-32768,   508,  2068,  2258,  1483,-32768,-32768,   426,-32768,
--32768,-32768,   426,-32768,-32768,   493,-32768,-32768,    85,   510,
--32768,-32768,   550,   497,-32768,-32768,  1006,-32768,   585,   288,
--32768,-32768,-32768,   512,   328,-32768,  1291,    39,-32768,-32768,
-    39,   513,-32768,-32768,   513,    40,    40,  2335,-32768,    40,
-   515,   373,   814,   496,-32768,  1111,-32768,  2351,-32768,-32768,
-  2068,-32768,-32768,-32768,   497,    40,   133,   140,    40,-32768,
-    40,   140,    40,   871,-32768,-32768,-32768,-32768,-32768,   257,
--32768,    42,-32768,   692,-32768,-32768,  2335,-32768,-32768,  1291,
--32768,-32768,   430,-32768,-32768,-32768,    40,-32768,   220,   433,
-   641,   518,   520,   894,-32768,-32768,-32768,-32768,-32768,   563,
-   373,  2068,-32768,   564,  2335,   525,   526,-32768,-32768,   326,
-  1231,  2068,   146,   500,   550,-32768,  1621,-32768,-32768,-32768,
-   423,   497,-32768,-32768,-32768,   237,   250,   112,   692,-32768,
--32768,  1111,-32768,-32768,  2068,    49,-32768,-32768,   373,-32768,
--32768,-32768,-32768,   541,-32768,-32768,-32768,-32768,  1757,-32768,
-  2245,  1111,-32768,-32768,  1171,-32768,  1346,-32768,-32768,  2351,
--32768,   504,   504,-32768,  1676,-32768,   537,-32768,-32768,   544,
-  1778,  2068,-32768,-32768,-32768,  1837,   588,   570,-32768,-32768,
-   572,   576,  2068,   598,   566,   596,  2015,   193,   633,-32768,
-   638,   601,-32768,   602,  2238,-32768,   664,   974,    66,-32768,
--32768,-32768,-32768,-32768,  1948,  2068,-32768,   604,  1346,-32768,
--32768,-32768,-32768,-32768,-32768,  1778,  2068,   624,-32768,  2068,
-  2068,  1701,-32768,-32768,-32768,-32768,   615,  2068,   616,-32768,
-   629,    40,-32768,-32768,   257,-32768,    42,  1054,-32768,-32768,
--32768,-32768,  2068,-32768,  2290,-32768,-32768,-32768,   618,  2068,
-   714,-32768,   687,   659,   662,  2068,-32768,-32768,   666,-32768,
-  2068,-32768,   271,-32768,   266,   284,-32768,   158,-32768,-32768,
-  1837,   663,-32768,-32768,   672,-32768,-32768,-32768,-32768,  2308,
--32768,    24,-32768,   438,-32768,   438,-32768,-32768,-32768,   674,
--32768,-32768,  2068,-32768,-32768,   744,   679,-32768,-32768,-32768,
--32768,-32768,-32768,   681,-32768,   700,    43,   684,-32768,-32768,
-   288,   288,-32768,-32768,  2068,   744,   691,   744,-32768,-32768,
-  2068,   702,    61,-32768,-32768,   705,-32768,   419,   706,-32768,
-   231,   176,-32768,-32768,   709,   419,-32768,-32768,   231,   787,
-   789,-32768
+static const short yypact[] = {    73,
+    98,  2393,  2393,     2,-32768,-32768,-32768,-32768,    75,    75,
+    75,    84,   110,   114,-32768,-32768,-32768,-32768,-32768,   227,
+   102,  1038,   150,-32768,    75,-32768,    81,    83,    96,-32768,
+  2393,-32768,-32768,-32768,    75,    75,    75,  2233,  2145,   141,
+-32768,-32768,   227,    54,-32768,    75,  1392,-32768,   221,-32768,
+   227,   150,-32768,    75,-32768,-32768,   594,-32768,-32768,-32768,
+-32768,   121,-32768,   145,-32768,   154,-32768,-32768,-32768,-32768,
+-32768,-32768,  2233,  2233,   182,   335,-32768,-32768,-32768,  2233,
+-32768,-32768,   830,-32768,-32768,  2233,   177,   180,-32768,  2267,
+  2301,-32768,  1917,   576,   267,  2233,-32768,   216,   138,-32768,
+   219,   568,   454,   330,   228,-32768,   221,   227,-32768,   255,
+-32768,  1490,   402,    75,-32768,-32768,   221,   112,-32768,    75,
+  1483,   333,   350,   217,  1455,   594,-32768,-32768,-32768,-32768,
+    75,-32768,   251,   697,-32768,   253,-32768,   422,-32768,-32768,
+-32768,  2233,-32768,-32768,   270,   286,   272,   294,-32768,   306,
+  2233,   830,-32768,   830,-32768,  2233,  2233,   348,-32768,-32768,
+  2233,  2233,  2233,  2233,  2233,  2233,  2233,  2233,  2233,  2233,
+  2233,  2233,-32768,-32768,   335,   335,  2233,  2233,-32768,-32768,
+-32768,-32768,   138,  1544,    75,-32768,   368,   337,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   167,-32768,   345,-32768,
+   350,-32768,-32768,   397,   350,   404,-32768,   792,  1598,-32768,
+   354,   362,-32768,   363,    66,-32768,-32768,   406,    75,   204,
+   241,-32768,   221,   221,-32768,   402,    75,-32768,  1652,-32768,
+-32768,   402,    75,-32768,-32768,   341,   373,   278,  1068,-32768,
+    75,-32768,-32768,   417,   382,-32768,   422,  2459,-32768,-32768,
+-32768,   387,   401,  2032,-32768,  1917,   407,   421,  1917,  1917,
+  2233,   434,  2233,  2233,  2001,  2116,  2200,   856,  1109,   492,
+   492,   396,   396,-32768,-32768,-32768,-32768,-32768,   425,   180,
+   395,   256,   265,-32768,   887,-32768,   408,   138,-32768,  1706,
+-32768,   337,   427,   454,  2335,    47,   429,-32768,-32768,-32768,
+  1660,-32768,   431,   276,-32768,-32768,   171,-32768,-32768,-32768,
+    65,-32768,-32768,-32768,  1577,-32768,   333,-32768,-32768,   333,
+-32768,   444,-32768,-32768,   428,-32768,-32768,-32768,-32768,-32768,
+-32768,   409,-32768,   412,  2233,   335,   420,   382,  1631,-32768,
+   482,-32768,-32768,-32768,-32768,-32768,   493,  2233,  1731,  1784,
+-32768,-32768,   368,-32768,-32768,-32768,   368,-32768,-32768,   449,
+-32768,-32768,   197,   457,-32768,-32768,    67,   155,-32768,-32768,
+  1360,-32768,   544,   272,-32768,-32768,-32768,   471,   984,-32768,
+  1327,    65,-32768,-32768,    65,   468,-32768,-32768,   468,    75,
+    75,  1917,-32768,    75,   473,   479,   335,   924,   482,-32768,
+  1144,-32768,  1678,-32768,-32768,  2233,-32768,-32768,-32768,   155,
+    75,    74,    92,    75,-32768,    75,    92,    75,   887,-32768,
+-32768,-32768,-32768,-32768,   221,-32768,   227,-32768,   673,-32768,
+-32768,  1917,-32768,-32768,  1327,-32768,-32768,   199,-32768,-32768,
+-32768,    75,-32768,-32768,   284,   390,   640,   480,   481,   730,
+-32768,-32768,-32768,-32768,-32768,   525,   335,  2233,-32768,   527,
+  1917,   497,   495,-32768,-32768,   160,  1266,  2233,   237,   414,
+    67,-32768,  1760,-32768,-32768,-32768,   210,   155,-32768,-32768,
+-32768,   300,   307,   166,   673,-32768,-32768,  1144,-32768,-32768,
+  2233,   157,-32768,-32768,   335,-32768,-32768,-32768,-32768,   504,
+-32768,-32768,-32768,-32768,  1896,-32768,  2432,  1144,-32768,-32768,
+  1205,-32768,  1383,-32768,-32768,  1678,-32768,   411,   411,-32768,
+  1814,-32768,   500,-32768,-32768,   506,  2483,  2233,-32768,-32768,
+-32768,  1977,   547,   528,-32768,-32768,   532,   533,  2233,   548,
+   517,   519,  2179,    79,   597,-32768,   570,   537,-32768,   538,
+  1606,-32768,   604,  1005,    57,-32768,-32768,-32768,-32768,-32768,
+  2090,  2233,-32768,   531,  1383,-32768,-32768,-32768,-32768,-32768,
+-32768,  2483,  2233,   561,-32768,  2233,  2233,  1840,-32768,-32768,
+-32768,-32768,   549,  2233,   552,-32768,   565,    75,-32768,-32768,
+   221,-32768,   227,  1086,-32768,-32768,-32768,-32768,  2233,-32768,
+  2414,-32768,-32768,-32768,   563,  2233,   609,-32768,   796,   560,
+   573,  2233,-32768,-32768,   578,-32768,  2233,-32768,   314,-32768,
+   415,   322,-32768,   933,-32768,-32768,  1977,   595,-32768,-32768,
+   599,-32768,-32768,-32768,-32768,  2506,-32768,    29,-32768,   402,
+-32768,   402,-32768,-32768,-32768,   605,-32768,-32768,  2233,-32768,
+-32768,   668,   610,-32768,-32768,-32768,-32768,-32768,-32768,   615,
+-32768,   622,    38,   617,-32768,-32768,   272,   272,-32768,-32768,
+  2233,   668,   619,   668,-32768,-32768,  2233,   625,    56,-32768,
+-32768,   628,-32768,   404,   630,-32768,   267,   263,-32768,-32768,
+   634,   404,-32768,-32768,   267,   706,   713,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,   103,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   -24,-32768,   -38,   516,  -110,   477,-32768,-32768,
-   -21,-32768,   255,-32768,-32768,-32768,-32768,-32768,   232,-32768,
-  -194,  -199,   591,-32768,-32768,   363,-32768,    -3,   -60,   252,
-    10,   757,-32768,   389,    19,   -14,   -90,   635,    27,  -169,
-  -390,   -49,  -114,   -68,-32768,-32768,-32768,  -171,    26,    68,
--32768,   522,-32768,   386,-32768,  -347,-32768,   325,-32768,  -405,
--32768,-32768,   406,-32768,-32768,-32768,-32768,-32768,-32768,   -42,
-   -77,   105,    -9,-32768,-32768,-32768,   -43,-32768,-32768,-32768,
--32768,-32768,   511,   -37,-32768,   612,   538,   435,   625,   546,
-   -35,   -92,   -72,   -91,  -105,   429,-32768,-32768,  -185,-32768,
--32768,-32768,   486,    16,-32768,  -125,-32768,-32768,-32768,-32768,
-   -57,  -361,  -461,   456,-32768,   261,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   283,-32768,  -503,   226,
--32768,   238,-32768,   621,-32768,  -250,-32768,-32768,-32768,   543,
-  -193,-32768,-32768,-32768,-32768,    13
+-32768,-32768,-32768,    76,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   -25,-32768,   -38,   419,  -133,   386,-32768,-32768,
+   -21,-32768,   359,-32768,-32768,-32768,-32768,-32768,   139,-32768,
+  -189,  -206,   501,-32768,-32768,   269,-32768,    20,   -75,   161,
+     4,   671,-32768,   298,     6,    -3,   -70,   539,     7,  -161,
+  -377,   -39,  -103,   -58,-32768,-32768,-32768,   200,    12,   146,
+-32768,   435,-32768,   297,-32768,  -396,-32768,   224,-32768,  -405,
+-32768,-32768,   271,-32768,-32768,-32768,-32768,-32768,-32768,   -36,
+   -57,    16,   -15,-32768,-32768,-32768,   -32,-32768,-32768,-32768,
+-32768,-32768,   398,   -30,-32768,   503,   413,   309,   511,   426,
+   -29,   -64,   -62,   -86,  -143,   296,-32768,-32768,  -167,-32768,
+-32768,-32768,   367,  -294,-32768,  -131,-32768,-32768,-32768,-32768,
+   -89,  -331,  -472,   317,-32768,   142,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   143,-32768,  -502,   101,
+-32768,    94,-32768,   488,-32768,  -235,-32768,-32768,-32768,   416,
+  -197,-32768,-32768,-32768,-32768,     8
 };
 
 
-#define        YYLAST          2403
-
-
-static const short yytable[] = {    86,
-    97,   123,    62,    64,    66,   225,   120,    52,   190,   293,
-    47,    21,    21,   131,    31,    31,   288,    49,    51,   250,
-    22,    22,   433,   218,   318,   135,   309,    25,    25,   476,
-   323,   351,   320,   104,    35,    36,    37,   201,   219,   370,
-    21,   124,   234,    31,    41,    46,   146,    54,    53,    22,
-   141,   139,   140,   319,   215,   509,    25,   142,   222,   324,
-   236,   646,   177,   147,   277,    99,   592,   330,    46,    14,
-  -102,    14,   209,   178,   119,   280,    46,   194,    14,   310,
-   666,   131,   130,    55,   499,    56,   522,   225,   279,    59,
-    60,    42,    58,   199,    -1,    59,    60,   203,   678,   647,
-    43,   561,    58,    58,    58,    32,   104,   601,    99,    -2,
-    59,    60,   242,    58,   254,    38,   255,    39,   667,   288,
-   248,    58,   285,   183,   593,   290,   183,   189,    46,   361,
-   291,   119,    46,    67,   520,   526,   679,   278,   109,   654,
-   314,   119,   131,   284,   317,   237,   234,    40,   274,   275,
-   130,  -102,   316,   597,   558,   215,   368,   134,   637,    99,
-   400,   369,    14,   475,   236,   401,   215,   676,    61,    14,
-   110,   111,   215,   349,    63,    48,    99,   650,    99,   353,
-   653,   277,   655,   102,   109,   142,    58,  -162,   322,    65,
-   663,   466,   467,  -162,   613,    59,    60,    58,   110,   111,
-   329,     5,   331,     7,   188,   136,   183,   445,   199,     9,
-    10,    11,   203,   138,   434,   435,   110,   111,   436,   343,
-   242,   511,   687,   105,   148,    13,   149,   106,   621,   340,
-   325,    25,   327,   149,  -162,   468,   469,   470,  -162,   177,
-   473,   474,   578,   119,   418,   131,   119,   119,   356,   237,
-    58,   685,   204,   220,   481,   491,   686,   221,   496,    41,
-   114,   179,   189,    99,   228,   487,   194,   384,   106,   384,
-   409,   413,   514,   366,  -269,  -269,   223,   367,   187,   -19,
-   -19,   -19,   -19,    52,    58,   231,    14,   -19,   -19,   -19,
-   463,   239,   109,   363,   364,  -162,   488,   375,   246,   280,
-   489,  -162,   109,   -19,   183,  -162,   115,    25,   242,   481,
-   183,  -162,   464,   518,   523,   116,   210,   221,   471,  -105,
-  -105,  -105,  -105,    54,    53,  -105,   519,  -105,  -105,  -105,
-   106,     5,    55,     7,    56,   446,    33,    34,   376,     9,
-    10,    11,  -162,  -105,   247,   465,  -162,   633,    14,   565,
-   472,   221,  -162,   408,   412,    13,  -162,   -19,   349,   353,
-   635,   507,   110,   111,   106,   349,   353,   438,   180,   248,
-   420,   422,   477,   546,   384,    59,    60,   181,   182,   200,
-   131,   226,   227,   451,   446,   452,   497,   251,   406,   411,
-   486,   252,    25,   429,   598,   104,   431,  -105,   315,   -82,
-   546,   423,   292,   253,   421,   168,   169,   170,   256,   257,
-   612,   109,   478,   262,   263,   264,   265,   266,   267,   268,
-   269,   270,   271,   272,   273,    41,   500,    70,   517,   198,
-   411,   306,    41,   114,   648,   131,   649,   307,   210,    25,
-   313,  -325,  -325,  -325,  -325,   119,   326,    46,   332,  -325,
-  -325,  -325,    14,   336,   199,   203,   226,   227,   119,    14,
-   542,   199,   203,   333,   524,  -325,   338,   485,   241,   198,
-    59,    60,   410,    58,   541,   110,   111,   341,    58,   115,
-   344,   405,   182,   681,   286,   287,   342,   542,   116,   406,
-   406,   689,    14,   142,   348,   546,   411,   411,   577,    41,
-   225,   541,    41,   403,  -267,  -267,   198,   347,   544,   307,
-   490,   555,   180,   579,   345,   346,   352,   545,   379,  -101,
-   357,   181,   182,   362,    25,   365,    14,   392,   599,    14,
-    52,   602,   605,   178,   380,   669,   670,   616,   386,   609,
-   585,   587,   615,   286,   287,   397,   410,    41,   114,   404,
-   387,   198,    41,   403,   622,   405,   182,   390,   405,   182,
-   350,   625,   466,   467,   544,   151,   153,   555,   512,   513,
-    54,    53,   632,   545,    14,   399,   215,   618,   215,    14,
-    25,     5,   542,     7,   188,   402,   388,   417,   419,     9,
-    10,    11,   437,   432,   115,  -304,   541,   495,   398,   404,
-   -31,   503,   504,   116,   602,    13,   505,    14,   405,   182,
-   119,   294,    46,   295,     5,     6,     7,     8,   525,   563,
-   296,   564,     9,    10,    11,   -32,   672,   180,   567,    41,
-   570,   427,   602,   198,   571,   573,   181,   182,    13,   580,
-    14,   210,   574,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
-   455,  -114,  -114,  -114,  -114,  -114,    14,  -114,  -114,  -114,
-  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
-  -114,  -114,   575,  -114,  -114,   582,    42,   583,   584,   588,
-  -114,   596,   600,  -114,   427,    43,  -385,   611,  -114,  -114,
-  -114,   608,   610,   624,  -114,  -114,   480,   127,   128,  -114,
-   126,   127,   128,     9,    10,    11,   501,     9,    10,    11,
-    59,    60,   191,   192,   193,   455,   510,  -114,  -114,  -114,
-  -114,   143,  -114,    68,     5,    14,     7,    96,    69,    70,
-   626,    71,     9,    10,    11,   628,   455,   629,   640,   521,
-   171,   172,   631,   173,   174,   175,   176,   641,    13,    72,
-   651,    15,   656,    73,    74,   660,   455,   664,   665,   455,
-    75,   455,   627,    76,   668,   127,   128,   674,    77,    78,
-    79,     9,    10,    11,    80,    81,   566,   677,   232,    82,
-   680,     5,   683,     7,    96,   688,   691,   572,   692,     9,
-    10,    11,   164,   165,   166,   167,   168,   169,   170,    83,
-    84,   603,   -91,   311,   492,    13,   594,   360,    15,   125,
-   595,   479,   358,   455,   440,   483,  -325,  -325,  -325,  -325,
-  -325,  -325,  -325,   289,  -325,  -325,  -325,  -325,  -325,   560,
-  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-  -325,  -325,  -325,  -325,  -325,   391,  -325,  -325,   328,     5,
-     6,     7,     8,  -325,   233,  -261,  -325,     9,    10,    11,
-   630,  -325,  -325,  -325,   385,   508,   484,  -325,  -325,   335,
-   493,   294,  -325,    13,     5,     6,     7,     8,   389,   448,
-   296,   638,     9,    10,    11,   166,   167,   168,   169,   170,
-  -325,   673,  -325,  -325,   210,  -325,  -325,  -325,    13,   498,
-    14,  -325,  -325,   639,  -325,   675,   354,     0,  -325,   416,
-  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-  -325,     0,  -325,     0,  -325,     0,  -325,  -325,     0,     0,
-     0,     0,     0,  -325,   171,   172,  -325,   173,   174,   175,
-   176,  -325,  -325,  -325,     0,     0,  -385,  -325,  -325,     0,
-     0,     0,  -325,   232,     0,     0,     5,     0,     7,    96,
-     0,     0,     0,     0,     9,    10,    11,     0,     0,     0,
-  -325,  -300,  -325,  -325,   589,  -325,  -325,  -325,     0,     0,
-    13,  -325,  -325,    15,  -325,     0,     0,     0,  -325,     0,
-  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,  -325,
-  -325,     0,  -325,     0,  -325,     0,  -325,  -325,     0,     5,
-     6,     7,     8,  -325,     0,   415,  -325,     9,    10,    11,
-     0,  -325,  -325,  -325,     0,     0,     0,  -325,  -325,     0,
-     0,     0,  -325,    13,     0,    14,     0,     0,     0,     5,
+#define        YYLAST          2559
+
+
+static const short yytable[] = {    87,
+    98,    62,    64,    66,    47,    21,    21,    22,    22,    31,
+    31,   124,   121,    25,    25,   253,   296,   227,    52,   321,
+    35,    36,    37,   217,   132,   326,   291,   105,    53,   220,
+   323,    46,   136,    54,    21,   125,    22,   192,    31,   283,
+    49,    51,    25,   280,   224,   100,   312,   482,   203,   355,
+   143,   140,   141,   148,    46,   179,   438,   598,   144,   221,
+   120,   515,    46,   236,   149,   374,  -103,   652,   131,    41,
+   408,   238,    -1,   211,   180,   313,   672,   196,    32,    33,
+    34,    59,    60,    59,    60,    59,    60,   434,   201,   100,
+   436,   526,   205,   132,   684,   282,    14,    -2,    59,    60,
+   227,   105,   607,    14,    14,   653,    67,   567,   191,   288,
+   185,   564,   244,   185,   673,    46,   599,   409,   120,    46,
+   505,    14,   257,   365,   258,   217,   410,   184,   120,   584,
+   291,   106,   685,   472,   473,   107,   217,   131,   353,   281,
+   100,   239,   217,    38,   357,   287,   660,   251,  -103,   277,
+   278,   111,   112,   643,    55,   132,    56,    41,   100,   603,
+   100,   280,   317,    61,   319,    63,   320,    14,   236,    39,
+    58,   532,   656,    40,   682,   659,   238,   661,    65,    48,
+    58,    58,    58,   481,    14,   669,    14,   144,   182,   222,
+   325,    58,   110,   223,   185,   528,   513,   183,   184,    58,
+   103,    41,   115,   135,   201,   415,    41,   115,   205,   332,
+   200,   334,    41,   619,   410,   184,   200,   693,   457,    25,
+   458,   244,   347,    41,   115,   111,   112,   137,    14,    41,
+   451,   120,   344,    14,   120,   120,   139,   491,   388,    14,
+   388,   142,   423,   293,   191,   100,   239,   372,   294,   116,
+    14,   360,   373,   150,   116,   328,    14,   330,   117,   132,
+   415,   151,   200,   117,   627,    58,   283,   487,   196,   410,
+   184,   116,   469,   405,   520,   179,    58,    42,   406,   497,
+   117,     5,   502,     7,   190,    14,    43,   111,   112,     9,
+    10,    11,   181,   185,   230,   189,    25,    52,   107,   185,
+   228,   229,   414,   418,   202,    13,   182,    53,   452,   396,
+   244,   379,    54,   517,   206,   183,   184,   318,   151,   367,
+   368,   380,   470,   487,   289,   290,   353,   357,   477,   233,
+    58,   241,    41,   353,   357,   471,   200,    59,    60,   691,
+   478,   354,   128,   129,   692,   100,   249,   388,     9,    10,
+    11,   413,   417,   370,   251,  -270,  -270,   371,   452,    14,
+   503,   494,   250,   212,    58,   495,  -106,  -106,  -106,  -106,
+   254,   444,  -106,   552,  -106,  -106,  -106,   524,   411,   416,
+    42,   223,    25,   255,   525,   428,   -83,   483,   107,    43,
+  -106,   639,   228,   229,   105,   223,   132,   425,   427,   641,
+   552,   492,   212,   107,   295,  -326,  -326,  -326,  -326,   111,
+   112,   484,    70,  -326,  -326,  -326,    41,   408,  -268,  -268,
+   200,   416,   243,   110,    59,    60,   322,   289,   290,  -326,
+    25,   506,   327,   654,   523,   655,   120,   309,    46,   310,
+   333,   110,   316,    14,  -163,  -106,   170,   171,   172,   120,
+   329,  -163,   132,   335,   201,   205,    59,    60,   193,   194,
+   195,   201,   205,   336,   409,   340,   548,   310,   496,   530,
+   472,   473,   348,   410,   184,   153,   155,   342,   352,   547,
+   383,   411,   411,   345,  -102,   518,   519,   390,   416,   416,
+   391,   356,  -163,   548,   687,   552,  -163,   346,   394,   144,
+   248,   351,   695,   361,   583,   366,   547,   369,   550,   256,
+   551,   384,   561,   397,   259,   260,    25,   227,   585,   265,
+   266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+   276,   402,   404,   407,   605,   675,   676,   608,   611,   180,
+   168,   169,   170,   171,   172,   615,   422,    52,   424,   437,
+   217,   442,   217,   622,   621,   443,    58,    53,  -305,   501,
+   628,    58,    54,   -31,   550,   509,   551,   631,   561,   591,
+   593,     5,    25,     7,   190,   510,   511,   624,   638,     9,
+    10,    11,   531,   569,   570,   -32,   579,   573,   548,   439,
+   440,   576,   577,   441,   580,    13,   581,    14,   127,   128,
+   129,   547,   120,   586,    46,     9,    10,    11,   588,   602,
+   608,   474,   475,   476,   589,   590,   479,   480,   182,   594,
+   606,   349,   350,    14,   617,   632,   614,   183,   184,   616,
+   173,   174,   678,   175,   176,   177,   178,   634,   608,   630,
+   212,   493,  -115,  -115,  -115,  -115,  -115,  -115,  -115,   635,
+  -115,  -115,  -115,  -115,  -115,   637,  -115,  -115,  -115,  -115,
+  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,
+  -115,   646,  -115,  -115,  -115,   647,   662,   486,   128,   129,
+  -115,   671,   657,  -115,     9,    10,    11,   666,  -115,  -115,
+  -115,   529,   670,   392,  -115,  -115,   680,   234,   674,  -115,
+     5,   683,     7,    97,   686,   697,   403,   689,     9,    10,
+    11,   694,   698,   364,   609,   314,   498,  -115,  -115,  -115,
+  -115,   600,  -115,   126,    13,   485,   571,    15,   362,   292,
+   212,   489,  -326,  -326,   566,   395,   514,  -326,  -326,   432,
+  -326,   331,   389,   499,  -326,   490,  -326,  -326,  -326,  -326,
+  -326,  -326,  -326,  -326,  -326,  -326,  -326,   338,  -326,   461,
+  -326,   393,  -326,  -326,  -326,   454,   504,   681,   644,   645,
+  -326,   604,   679,  -326,   235,  -262,   358,     0,  -326,  -326,
+  -326,     0,     0,     0,  -326,  -326,   421,   618,     0,  -326,
+     0,     0,   297,   432,   298,     5,     6,     7,     8,     0,
+     0,   299,     0,     9,    10,    11,     0,  -326,  -301,  -326,
+  -326,     0,  -326,     0,     0,     0,   507,     0,     0,    13,
+     0,    14,     0,     0,     0,   461,   516,     0,     0,     0,
+   145,     0,    68,     5,     0,     7,    97,    69,    70,     0,
+    71,     9,    10,    11,     0,     0,   461,     0,     0,   527,
+   173,   174,     0,   175,   176,   177,   178,    13,    72,     0,
+    15,     0,    73,    74,    75,     0,   461,     0,  -386,   461,
+    76,   461,   633,    77,     0,     0,     0,     0,    78,    79,
+    80,     0,     0,     0,    81,    82,   572,   297,     0,    83,
+     5,     6,     7,     8,     0,     0,   299,   578,     9,    10,
+    11,   165,   166,   167,   168,   169,   170,   171,   172,    84,
+    85,     0,   -92,     0,    13,     0,    14,     0,     0,     0,
+   601,     0,     0,   461,   446,     0,  -326,  -326,  -326,  -326,
+  -326,  -326,  -326,     0,  -326,  -326,  -326,  -326,  -326,     0,
+  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+  -326,  -326,  -326,  -326,  -326,     0,  -326,  -326,  -326,   110,
+     0,     0,  -163,  -386,  -326,     0,     0,  -326,     0,  -163,
+   636,     0,  -326,  -326,  -326,     0,     0,     0,  -326,  -326,
+     0,     0,     0,  -326,     0,     0,     0,     5,    55,     7,
+    56,     0,   111,   112,     0,     9,    10,    11,     0,     0,
+     0,  -326,     0,  -326,  -326,   595,  -326,  -326,  -326,     0,
+  -163,    13,  -326,  -326,  -163,  -326,     0,     0,     0,  -326,
+     0,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+  -326,  -326,     0,  -326,     0,  -326,     0,  -326,  -326,  -326,
+     0,     5,     6,     7,     8,  -326,     0,     0,  -326,     9,
+    10,    11,     0,  -326,  -326,  -326,     0,     0,     0,  -326,
+  -326,   426,     0,     0,  -326,    13,     0,    14,   234,     0,
+     0,     5,     0,     7,    97,     0,     0,     0,     0,     9,
+    10,    11,  -326,     0,  -326,  -326,   625,  -326,  -336,  -336,
+     0,     0,     0,  -336,  -336,    13,  -336,     0,    15,     0,
+  -336,     0,  -336,  -336,  -336,  -336,  -336,  -336,  -336,  -336,
+  -336,  -336,  -336,     0,  -336,    50,  -336,     0,  -336,  -336,
+  -336,     0,     0,     0,     0,     0,  -336,     0,     0,  -336,
+     0,     0,     0,     0,  -336,  -336,  -336,     0,     0,     0,
+  -336,  -336,     0,     0,   455,  -336,   456,    60,     0,     0,
+     0,    69,    70,     0,    71,   166,   167,   168,   169,   170,
+   171,   172,     0,  -336,     0,  -336,  -336,     0,  -336,     0,
+     0,     0,    72,     0,    15,     0,    73,    74,    75,     0,
+     0,     0,     0,     0,    76,     0,     0,    77,     0,     0,
+     0,     0,    78,    79,    80,     0,     0,     0,    81,    82,
+     0,     0,   457,    83,   458,   455,     0,   456,    60,     0,
+     0,     0,    69,    70,     0,    71,     0,     0,     0,     0,
+     0,     0,  -191,    84,    85,     0,   459,     0,     0,     0,
+     0,     0,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,     0,     0,     0,    76,     0,     0,    77,     0,
+     0,     0,     0,    78,    79,    80,     0,     0,     0,    81,
+    82,     0,     0,   457,    83,   458,   455,     0,    68,     0,
+     0,     0,     0,    69,    70,     0,    71,     0,     0,     0,
+     0,     0,     0,  -259,    84,    85,     0,   459,     0,     0,
+     0,     0,     0,     0,    72,     0,    15,     0,    73,    74,
+    75,     0,  -204,     0,     0,     0,    76,     0,     0,    77,
+     0,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,  -204,    83,  -204,   430,     0,    68,
+     0,     0,     0,     0,    69,    70,     0,    71,     0,     0,
+     0,     0,     0,     0,     0,    84,    85,     0,   459,     0,
+     0,     0,     0,     0,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,     5,     6,     7,     8,    76,     0,   420,
+    77,     9,    10,    11,     0,    78,    79,    80,     0,     0,
+     0,    81,    82,   455,     0,    68,    83,    13,     0,    14,
+    69,    70,   109,    71,     0,   -27,   -27,   -27,   -27,     0,
+     0,     0,     0,   -27,   -27,   -27,    84,    85,     0,   431,
+     0,    72,     0,    15,     0,    73,    74,    75,   110,   -27,
+     0,  -163,     0,    76,     0,     0,    77,     0,  -163,     0,
+     0,    78,    79,    80,     0,     0,     0,    81,    82,     0,
+     0,     0,    83,     0,     0,     0,     0,     0,     0,     0,
+     0,   111,   112,     0,     0,   231,     0,     0,   -23,   -23,
+   -23,   -23,    84,    85,     0,   459,   -23,   -23,   -23,  -163,
+     0,     0,     0,  -163,   -27,     0,     0,     0,     0,     0,
+     0,   110,   -23,   225,  -163,     0,   -19,   -19,   -19,   -19,
+     0,  -163,    68,     0,   -19,   -19,   -19,    69,    70,     0,
+    71,     0,     0,     0,     0,     0,     0,     0,     0,   110,
+   -19,     0,  -163,     0,   111,   112,     0,     0,    72,  -163,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+    76,     0,  -163,    77,     0,     0,  -163,   -23,    78,    79,
+   209,     0,     0,     0,    81,    82,    68,     0,     0,    83,
+     0,    69,    70,     0,    71,     0,     0,     0,     0,     0,
+  -163,     0,     0,     0,  -163,   -19,     0,     0,     0,    84,
+    85,     0,    72,   210,    15,     0,    73,    74,    75,     0,
+     5,     6,     7,     8,    76,     0,     0,    77,     9,    10,
+    11,     0,    78,    79,    80,     0,     0,     0,    81,    82,
+    68,     0,     0,    83,    13,    69,    70,     0,    71,     5,
      6,     7,     8,     0,     0,     0,     0,     9,    10,    11,
-  -325,     0,  -325,  -325,   619,  -325,  -335,  -335,     0,     0,
-     0,  -335,  -335,    13,  -335,    14,     0,     0,  -335,     0,
-  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,
-  -335,     0,  -335,     0,  -335,     0,  -335,  -335,     0,     0,
-     0,     0,     0,  -335,     0,     0,  -335,     0,     0,     0,
-     0,  -335,  -335,  -335,     0,     0,     0,  -335,  -335,     0,
-     0,   449,  -335,   450,    60,     0,     0,     0,    69,    70,
-     0,    71,   163,   164,   165,   166,   167,   168,   169,   170,
-  -335,     0,  -335,  -335,     0,  -335,     0,     0,     0,    72,
-     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,     0,     0,   451,    82,
-   452,   449,     0,   450,    60,     0,     0,     0,    69,    70,
-     0,    71,     0,     0,     0,     0,     0,     0,  -190,    83,
-    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
-     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,     0,     0,   451,    82,
-   452,   449,     0,    68,     0,     0,     0,     0,    69,    70,
-     0,    71,     0,     0,     0,     0,     0,     0,  -258,    83,
-    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
-     0,    15,     0,    73,    74,     0,  -203,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,     0,     0,  -203,    82,
-  -203,   425,     0,    68,     0,     0,     0,     0,    69,    70,
-     0,    71,     0,     0,     0,     0,     0,     0,     0,    83,
-    84,     0,   453,     0,     0,     0,     0,     0,     0,    72,
-     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,   449,     0,    68,    82,
-     0,     0,     0,    69,    70,   108,    71,     0,   -27,   -27,
-   -27,   -27,     0,     0,     0,     0,   -27,   -27,   -27,    83,
-    84,     0,   426,     0,    72,     0,    15,     0,    73,    74,
-     0,   109,   -27,     0,  -162,    75,     0,     0,    76,     0,
-  -162,     0,     0,    77,    78,    79,     0,     0,     0,    80,
-    81,     0,     0,     0,    82,     0,     0,     0,     0,     0,
-     0,     0,     0,   110,   111,     0,     0,   229,     0,     0,
-   -23,   -23,   -23,   -23,    83,    84,     0,   453,   -23,   -23,
-   -23,  -162,    68,     0,     0,  -162,   -27,    69,    70,     0,
-    71,     0,     0,   109,   -23,     0,  -162,     0,     0,     0,
-     0,     0,  -162,     0,     0,     0,     0,     0,    72,    68,
-    15,     0,    73,    74,    69,    70,     0,    71,     0,    75,
-     0,     0,    76,     0,     0,   110,   111,    77,    78,   207,
-     0,     0,     0,    80,    81,    72,     0,    15,    82,    73,
-    74,     0,     0,  -162,     0,     0,    75,  -162,   -23,    76,
-     0,     0,     0,     0,    77,    78,    79,     0,    83,    84,
-    80,    81,   208,     0,    68,    82,     0,     0,     0,    69,
-    70,     0,    71,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,    83,    84,     0,     0,   283,
-    72,    68,    15,     0,    73,    74,    69,    70,     0,    71,
-     0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
-    78,    79,     0,     0,     0,    80,    81,    72,     0,    15,
-    82,    73,    74,     0,     0,     0,     0,     0,    75,     0,
-     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
-    83,    84,    80,    81,   305,     0,    68,    82,     0,     0,
-     0,    69,    70,     0,    71,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,     0,    83,    84,     0,
-     0,   321,    72,    68,    15,     0,    73,    74,    69,    70,
-     0,    71,     0,    75,     0,     0,    76,     0,     0,     0,
-     0,    77,    78,    79,     0,     0,     0,    80,    81,    72,
-     0,    15,    82,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-   515,     0,    83,    84,    80,    81,   355,     0,    68,    82,
-     0,     0,     0,    69,    70,     0,    71,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,     0,     0,    83,
-    84,     0,     0,   516,    72,     0,    15,     0,    73,    74,
-   606,     0,     0,     0,     0,    75,     0,     0,    76,     0,
-     0,     0,     0,    77,    78,    79,     0,     0,     0,    80,
-    81,     0,     0,     0,    82,   154,   155,   156,   607,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,     0,    83,    84,     0,     0,   562,   450,
-   527,     6,     7,     8,    69,    70,     0,    71,     9,    10,
-    11,   528,     0,   529,   530,   531,   532,   533,   534,   535,
-   536,   537,   538,   539,    13,    72,    14,    15,     0,    73,
-    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
-     0,     0,     0,     0,    77,    78,    79,    14,     0,     0,
-    80,    81,   154,   155,   156,    82,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     0,     0,     0,   540,     0,    83,    84,     0,   248,   450,
+     0,     0,     0,    84,    85,     0,    72,   286,    15,     0,
+    73,    74,    75,    13,     5,    14,     7,    97,    76,     0,
+     0,    77,     9,    10,    11,     0,    78,    79,    80,     0,
+     0,     0,    81,    82,    68,     0,     0,    83,    13,    69,
+    70,     0,    71,     5,     6,     7,     8,     0,     0,     0,
+     0,     9,    10,    11,     0,     0,     0,    84,    85,     0,
+    72,   308,    15,   592,    73,    74,    75,    13,     0,    14,
+     0,     0,    76,     0,     0,    77,     0,     0,     0,     0,
+    78,    79,    80,     0,     0,     0,    81,    82,    68,     0,
+     0,    83,     0,    69,    70,   158,    71,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,    84,    85,     0,    72,   324,    15,     0,    73,    74,
+    75,     0,     0,     0,     0,     0,    76,     0,     0,    77,
+     0,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,    68,     0,     0,    83,     0,    69,    70,     0,
+    71,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,     0,    84,    85,     0,    72,   359,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+    76,     0,     0,    77,     0,     0,     0,     0,    78,    79,
+   521,     0,     0,     0,    81,    82,    68,     0,     0,    83,
+     0,    69,    70,     0,    71,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,     0,     0,    84,
+    85,     0,    72,   522,    15,     0,    73,    74,    75,   612,
+     0,     0,     0,     0,    76,     0,     0,    77,     0,     0,
+     0,     0,    78,    79,    80,     0,     0,     0,    81,    82,
+     0,     0,     0,    83,     0,   156,   157,   158,   613,   159,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,    84,    85,     0,     0,   568,   456,   533,
+     6,     7,     8,    69,    70,     0,    71,     9,    10,    11,
+   534,     0,   535,   536,   537,   538,   539,   540,   541,   542,
+   543,   544,   545,    13,    72,    14,    15,     0,    73,    74,
+    75,     0,     0,     0,     0,     0,    76,     0,     0,    77,
+     0,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,   156,   157,   158,    83,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     0,     0,     0,   546,     0,    84,    85,     0,   251,   456,
     60,     0,     0,     0,    69,    70,     0,    71,     0,     0,
-     0,   528,     0,   529,   530,   531,   532,   533,   534,   535,
-   536,   537,   538,   539,     0,    72,     0,    15,     0,    73,
-    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
-     0,     0,     0,     0,    77,    78,    79,     0,     0,     0,
-    80,    81,     0,    68,     0,    82,     0,     0,    69,    70,
-     0,    71,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,     0,     0,   540,     0,    83,    84,     0,   248,    72,
-     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,     0,     0,     0,    82,
-    68,     5,     6,     7,     8,    69,    70,     0,    71,     9,
-    10,    11,     0,     0,     0,     0,     0,     0,     0,    83,
-    84,     0,   339,     0,     0,    13,    72,    14,    15,     0,
-    73,    74,     0,     0,     0,     0,     0,    75,     0,     0,
-    76,     0,     0,     0,     0,    77,    78,    79,     0,     0,
-     0,    80,    81,     0,    68,     5,    82,     7,    96,    69,
-    70,     0,    71,     9,    10,    11,     0,    68,     0,     0,
-     0,     0,    69,    70,     0,    71,    83,    84,     0,    13,
-    72,     0,    15,     0,    73,    74,     0,     0,     0,     0,
-     0,    75,     0,    72,    76,    15,     0,    73,    74,    77,
-    78,    79,     0,     0,    75,    80,    81,    76,     0,     0,
-    82,     0,    77,    78,    79,     0,     0,     0,    80,    81,
-    68,     0,     0,    82,     0,    69,    70,     0,    71,     0,
-    83,    84,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   576,     0,    83,    84,     0,    72,    68,    15,     0,
-    73,    74,    69,    70,     0,    71,     0,    75,     0,     0,
-    76,     0,     0,     0,     0,    77,    78,    79,     0,     0,
-     0,    80,    81,    72,    68,    15,    82,    73,    74,    69,
-    70,     0,    71,     0,    75,     0,     0,    76,     0,     0,
-     0,     0,    77,    78,    79,     0,    83,    84,    80,    81,
-    72,   359,    15,   150,    73,    74,    69,    70,     0,    71,
-     0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
-    78,    79,     0,    83,    84,    80,    81,    72,     0,    15,
-   152,    73,    74,     0,     0,     0,     0,     0,    75,     0,
-     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
-    83,    84,    80,    81,     0,     0,     4,    82,  -118,     5,
-     6,     7,     8,     0,     0,     0,     0,     9,    10,    11,
-     0,     0,     0,     0,     0,     0,     0,    83,    84,     0,
-     0,     0,    12,    13,     0,    14,    15,     5,     6,     7,
-     8,     5,     6,     7,     8,     9,    10,    11,     0,     9,
-    10,    11,     0,     0,   556,  -118,     0,     0,     0,     0,
-     0,    13,     0,    14,  -118,    13,     0,    14,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
-   155,   156,    16,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-    50,     0,     0,     0,   586,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   154,   155,   156,   557,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   154,   155,   156,   645,   157,   158,   159,   160,
+     0,   534,     0,   535,   536,   537,   538,   539,   540,   541,
+   542,   543,   544,   545,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,     0,     0,     0,     0,    76,     0,     0,
+    77,     0,     0,     0,     0,    78,    79,    80,     0,     0,
+     0,    81,    82,     0,    68,     0,    83,     0,     0,    69,
+    70,     0,    71,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   546,     0,    84,    85,     0,   251,
+    72,     0,    15,     0,    73,    74,    75,     0,     0,     0,
+     0,     0,    76,     0,     0,    77,     0,     0,     0,     0,
+    78,    79,    80,     0,     0,     0,    81,    82,     0,     0,
+     0,    83,    68,     5,     6,     7,     8,    69,    70,     0,
+    71,     9,    10,    11,     0,     0,     0,     0,     0,     0,
+     0,    84,    85,     0,   343,     0,     0,    13,    72,    14,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+    76,     0,     0,    77,     0,     0,     0,     0,    78,    79,
+    80,     0,     0,     0,    81,    82,     0,    68,     5,    83,
+     7,    97,    69,    70,     0,    71,     9,    10,    11,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,    84,
+    85,     0,    13,    72,     0,    15,     0,    73,    74,    75,
+     0,    68,     0,     0,     0,    76,    69,    70,    77,    71,
+     0,     0,     0,    78,    79,    80,     0,     0,     0,    81,
+    82,     0,     0,     0,    83,     0,     0,    72,     0,    15,
+     0,    73,    74,    75,     0,     0,     0,     0,     0,    76,
+     0,     0,    77,     0,    84,    85,     0,    78,    79,    80,
+     0,     0,     0,    81,    82,    68,     0,     0,    83,     0,
+    69,    70,     0,    71,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,     0,     0,     0,   582,     0,    84,    85,
+     0,    72,     0,    15,     0,    73,    74,    75,     0,    68,
+     0,     0,     0,    76,    69,    70,    77,    71,     0,     0,
+     0,    78,    79,    80,     0,     0,     0,    81,    82,     0,
+     0,     0,    83,     0,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,    68,     0,     0,     0,    76,    69,    70,
+    77,    71,    84,    85,     0,    78,    79,    80,     0,     0,
+     0,    81,    82,     0,     0,     0,   152,     0,     0,    72,
+     0,    15,     0,    73,    74,    75,     0,   363,     0,     0,
+     0,    76,    69,    70,    77,    71,    84,    85,     0,    78,
+    79,    80,     0,     0,     0,    81,    82,     0,     0,     0,
+   154,     0,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,     0,     0,     0,    76,     0,     0,    77,     0,
+    84,    85,     0,    78,    79,    80,     0,     0,     0,    81,
+    82,     0,     0,     4,    83,  -119,     5,     6,     7,     8,
+     0,     0,     0,     0,     9,    10,    11,     0,     0,     0,
+     0,     0,     0,     0,    84,    85,     0,     0,     0,    12,
+    13,     0,    14,    15,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   562,     0,  -119,     0,     0,     0,     0,     0,   156,
+   157,   158,  -119,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   156,   157,   158,
+    16,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,   171,   172,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   156,   157,   158,   629,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
-   155,   156,   623,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   156,     0,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170
+   171,   172,    14,     0,     0,   563,     0,     0,   156,   157,
+   158,     0,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,   171,   172,     0,     0,     0,     0,
+   339,   156,   157,   158,   651,   159,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172
 };
 
 static const short yycheck[] = {    38,
-    39,    51,    27,    28,    29,   120,    49,    22,   101,   204,
-    20,     2,     3,    57,     2,     3,   186,    21,    22,   145,
-     2,     3,   384,   115,   224,    63,   212,     2,     3,   420,
-   230,   282,   226,    43,     9,    10,    11,   106,   116,     1,
-    31,    51,   133,    31,     3,    20,    82,    22,    22,    31,
-    75,    73,    74,   225,   112,   461,    31,    79,   119,   231,
-   133,    38,     9,    85,   175,    39,     1,   239,    43,    30,
-     1,    30,   111,    95,    49,   181,    51,   102,    30,    10,
-    38,   125,    57,     5,   446,     7,    38,   202,   180,     3,
-     4,    50,    25,   103,     0,     3,     4,   107,    38,    76,
-    59,   507,    35,    36,    37,     3,   116,   569,    82,     0,
-     3,     4,   137,    46,   150,    59,   152,    59,    76,   289,
-    82,    54,   183,    98,    59,    76,   101,   101,   103,    76,
-    81,   106,   107,    31,   482,   497,    76,   176,    27,   643,
-   218,   116,   186,   182,   222,   133,   237,    59,   173,   174,
-   125,    82,   221,   559,   502,   213,    76,    82,   620,   133,
-    76,    81,    30,   414,   237,    81,   224,   671,    82,    30,
-    59,    60,   230,   279,    82,    77,   150,   639,   152,   285,
-   642,   292,   644,    59,    27,   207,   119,    30,   227,    82,
-   652,    59,    60,    36,   585,     3,     4,   130,    59,    60,
-   238,     4,   240,     6,     7,    82,   181,   393,   218,    12,
-    13,    14,   222,    82,   386,   387,    59,    60,   390,   258,
-   245,    76,   684,    77,    76,    28,    81,    81,   590,   251,
-   234,   206,   236,    81,    77,   407,   408,   409,    81,     9,
-   412,   413,    50,   218,   370,   289,   221,   222,   287,   237,
-   183,    76,    59,    77,   424,   441,    81,    81,   444,     3,
-     4,    76,   236,   237,    77,   437,   291,   325,    81,   327,
-   363,   364,   466,    77,    77,    78,     1,    81,    76,     4,
-     5,     6,     7,   298,   217,    78,    30,    12,    13,    14,
-   401,    78,    27,   297,   298,    30,    77,   312,    76,   405,
-    81,    36,    27,    28,   279,    30,    50,   282,   333,   479,
-   285,    36,   404,    77,   486,    59,     1,    81,   410,     4,
-     5,     6,     7,   298,   298,    10,    77,    12,    13,    14,
-    81,     4,     5,     6,     7,   393,    77,    78,   312,    12,
-    13,    14,    77,    28,    76,   406,    81,    77,    30,   521,
-   411,    81,    77,   363,   364,    28,    81,    82,   464,   465,
-    77,    36,    59,    60,    81,   471,   472,   392,    50,    82,
-   374,   375,   422,   499,   432,     3,     4,    59,    60,    76,
-   424,    59,    60,    58,   442,    60,   444,    76,   363,   364,
-   433,    77,   367,   378,   566,   405,   381,    82,    76,    38,
-   526,   375,    59,   149,    77,    50,    51,    52,   154,   155,
-   582,    27,   422,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,     3,   451,     9,   467,     7,
-   405,    83,     3,     4,   634,   479,   636,    77,     1,   414,
-    36,     4,     5,     6,     7,   420,    77,   422,    36,    12,
-    13,    14,    30,    78,   464,   465,    59,    60,   433,    30,
-   499,   471,   472,    81,   489,    28,    76,    38,     1,     7,
-     3,     4,    50,   406,   499,    59,    60,    76,   411,    50,
-    38,    59,    60,   678,    59,    60,    76,   526,    59,   464,
-   465,   686,    30,   515,    83,   621,   471,   472,   537,     3,
-   615,   526,     3,     4,    77,    78,     7,    76,   499,    77,
-    78,   499,    50,   538,   260,   261,    83,   499,    36,    82,
-    76,    59,    60,    76,   499,    76,    30,    32,   567,    30,
-   545,   570,   571,   555,    83,   661,   662,   587,    78,   578,
-   544,   545,   585,    59,    60,    38,    50,     3,     4,    50,
-    78,     7,     3,     4,   593,    59,    60,    78,    59,    60,
-    76,   600,    59,    60,   555,    89,    90,   555,   464,   465,
-   545,   545,   611,   555,    30,    83,   634,   587,   636,    30,
-   555,     4,   621,     6,     7,    76,   332,     3,    77,    12,
-    13,    14,    78,    81,    50,    78,   621,    78,   344,    50,
-    38,    38,    78,    59,   643,    28,    81,    30,    59,    60,
-   585,     1,   587,     3,     4,     5,     6,     7,    78,    83,
-    10,    78,    12,    13,    14,    38,   665,    50,    59,     3,
-    59,   377,   671,     7,    59,    38,    59,    60,    28,     7,
-    30,     1,    77,     3,     4,     5,     6,     7,     8,     9,
-   396,    11,    12,    13,    14,    15,    30,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    77,    33,    34,    38,    50,    77,    77,    16,
-    40,    78,    59,    43,   430,    59,    76,    59,    48,    49,
-    50,    77,    77,    76,    54,    55,     5,     6,     7,    59,
-     5,     6,     7,    12,    13,    14,   452,    12,    13,    14,
-     3,     4,     5,     6,     7,   461,   462,    77,    78,    79,
-    80,     1,    82,     3,     4,    30,     6,     7,     8,     9,
-    17,    11,    12,    13,    14,    77,   482,    76,    76,   485,
-    54,    55,    77,    57,    58,    59,    60,    76,    28,    29,
-    77,    31,     9,    33,    34,    77,   502,    77,    59,   505,
-    40,   507,    76,    43,    81,     6,     7,    77,    48,    49,
-    50,    12,    13,    14,    54,    55,   522,    76,     1,    59,
-    76,     4,    77,     6,     7,    77,     0,   533,     0,    12,
-    13,    14,    46,    47,    48,    49,    50,    51,    52,    79,
-    80,   570,    82,   213,   442,    28,   555,   292,    31,    53,
-   556,   423,   291,   559,     1,   430,     3,     4,     5,     6,
-     7,     8,     9,   189,    11,    12,    13,    14,    15,   505,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,   335,    33,    34,   237,     4,
-     5,     6,     7,    40,    77,    78,    43,    12,    13,    14,
-   606,    48,    49,    50,   327,   460,   432,    54,    55,   245,
-   442,     1,    59,    28,     4,     5,     6,     7,   333,   394,
-    10,   621,    12,    13,    14,    48,    49,    50,    51,    52,
-    77,   666,    79,    80,     1,    82,     3,     4,    28,   444,
-    30,     8,     9,   621,    11,   668,   286,    -1,    15,   367,
+    39,    27,    28,    29,    20,     2,     3,     2,     3,     2,
+     3,    51,    49,     2,     3,   147,   206,   121,    22,   226,
+     9,    10,    11,   113,    57,   232,   188,    43,    22,   116,
+   228,    20,    63,    22,    31,    51,    31,   102,    31,   183,
+    21,    22,    31,   177,   120,    39,   214,   425,   107,   285,
+    76,    73,    74,    83,    43,     9,   388,     1,    80,   117,
+    49,   467,    51,   134,    86,     1,     1,    39,    57,     3,
+     4,   134,     0,   112,    96,    10,    39,   103,     3,    78,
+    79,     3,     4,     3,     4,     3,     4,   382,   104,    83,
+   385,   488,   108,   126,    39,   182,    30,     0,     3,     4,
+   204,   117,   575,    30,    30,    77,    31,   513,   102,   185,
+    99,   508,   138,   102,    77,   104,    60,    51,   107,   108,
+   452,    30,   152,    77,   154,   215,    60,    61,   117,    51,
+   292,    78,    77,    60,    61,    82,   226,   126,   282,   178,
+   134,   134,   232,    60,   288,   184,   649,    83,    83,   175,
+   176,    60,    61,   626,     5,   188,     7,     3,   152,   565,
+   154,   295,   220,    83,   223,    83,   224,    30,   239,    60,
+    25,   503,   645,    60,   677,   648,   239,   650,    83,    78,
+    35,    36,    37,   419,    30,   658,    30,   209,    51,    78,
+   229,    46,    27,    82,   183,    39,    37,    60,    61,    54,
+    60,     3,     4,    83,   220,    51,     3,     4,   224,   240,
+     7,   242,     3,   591,    60,    61,     7,   690,    59,   208,
+    61,   247,   261,     3,     4,    60,    61,    83,    30,     3,
+   398,   220,   254,    30,   223,   224,    83,    39,   328,    30,
+   330,    60,   374,    77,   238,   239,   239,    77,    82,    51,
+    30,   290,    82,    77,    51,   236,    30,   238,    60,   292,
+    51,    82,     7,    60,   596,   120,   410,   429,   294,    60,
+    61,    51,   406,    77,   472,     9,   131,    51,    82,   447,
+    60,     4,   450,     6,     7,    30,    60,    60,    61,    12,
+    13,    14,    77,   282,    78,    77,   285,   301,    82,   288,
+    60,    61,   367,   368,    77,    28,    51,   301,   398,   339,
+   336,   315,   301,    77,    60,    60,    61,    77,    82,   300,
+   301,   315,   409,   485,    60,    61,   470,   471,   415,    79,
+   185,    79,     3,   477,   478,   411,     7,     3,     4,    77,
+   416,    77,     6,     7,    82,   339,    77,   437,    12,    13,
+    14,   367,   368,    78,    83,    78,    79,    82,   448,    30,
+   450,    78,    77,     1,   219,    82,     4,     5,     6,     7,
+    77,   397,    10,   505,    12,    13,    14,    78,   367,   368,
+    51,    82,   371,    78,    78,   379,    39,   427,    82,    60,
+    28,    78,    60,    61,   410,    82,   429,   378,   379,    78,
+   532,   438,     1,    82,    60,     4,     5,     6,     7,    60,
+    61,   427,     9,    12,    13,    14,     3,     4,    78,    79,
+     7,   410,     1,    27,     3,     4,   227,    60,    61,    28,
+   419,   457,   233,   640,   473,   642,   425,    84,   427,    78,
+   241,    27,    37,    30,    30,    83,    51,    52,    53,   438,
+    78,    37,   485,    37,   470,   471,     3,     4,     5,     6,
+     7,   477,   478,    82,    51,    79,   505,    78,    79,   495,
+    60,    61,    39,    60,    61,    90,    91,    77,    84,   505,
+    37,   470,   471,    77,    83,   470,   471,    79,   477,   478,
+    79,    84,    78,   532,   684,   627,    82,    77,    79,   521,
+   142,    77,   692,    77,   543,    77,   532,    77,   505,   151,
+   505,    84,   505,    32,   156,   157,   505,   621,   544,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,    39,    84,    77,   573,   667,   668,   576,   577,   561,
+    49,    50,    51,    52,    53,   584,     3,   551,    78,    82,
+   640,    79,   642,   593,   591,    77,   411,   551,    79,    79,
+   599,   416,   551,    39,   561,    39,   561,   606,   561,   550,
+   551,     4,   561,     6,     7,    79,    82,   593,   617,    12,
+    13,    14,    79,    84,    79,    39,    39,    60,   627,   390,
+   391,    60,    60,   394,    78,    28,    78,    30,     5,     6,
+     7,   627,   591,     7,   593,    12,    13,    14,    39,    79,
+   649,   412,   413,   414,    78,    78,   417,   418,    51,    16,
+    60,   263,   264,    30,    60,    17,    78,    60,    61,    78,
+    55,    56,   671,    58,    59,    60,    61,    78,   677,    77,
+     1,   442,     3,     4,     5,     6,     7,     8,     9,    77,
+    11,    12,    13,    14,    15,    78,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    31,    77,    33,    34,    35,    77,     9,     5,     6,     7,
+    41,    60,    78,    44,    12,    13,    14,    78,    49,    50,
+    51,   492,    78,   335,    55,    56,    78,     1,    82,    60,
+     4,    77,     6,     7,    77,     0,   348,    78,    12,    13,
+    14,    78,     0,   295,   576,   215,   448,    78,    79,    80,
+    81,   561,    83,    53,    28,   428,   527,    31,   294,   191,
+     1,   435,     3,     4,   511,   338,   466,     8,     9,   381,
+    11,   239,   330,   448,    15,   437,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,   247,    29,   401,
+    31,   336,    33,    34,    35,   399,   450,   674,   627,   627,
+    41,   572,   672,    44,    78,    79,   289,    -1,    49,    50,
+    51,    -1,    -1,    -1,    55,    56,   371,   588,    -1,    60,
+    -1,    -1,     1,   435,     3,     4,     5,     6,     7,    -1,
+    -1,    10,    -1,    12,    13,    14,    -1,    78,    79,    80,
+    81,    -1,    83,    -1,    -1,    -1,   458,    -1,    -1,    28,
+    -1,    30,    -1,    -1,    -1,   467,   468,    -1,    -1,    -1,
+     1,    -1,     3,     4,    -1,     6,     7,     8,     9,    -1,
+    11,    12,    13,    14,    -1,    -1,   488,    -1,    -1,   491,
+    55,    56,    -1,    58,    59,    60,    61,    28,    29,    -1,
+    31,    -1,    33,    34,    35,    -1,   508,    -1,    77,   511,
+    41,   513,    77,    44,    -1,    -1,    -1,    -1,    49,    50,
+    51,    -1,    -1,    -1,    55,    56,   528,     1,    -1,    60,
+     4,     5,     6,     7,    -1,    -1,    10,   539,    12,    13,
+    14,    46,    47,    48,    49,    50,    51,    52,    53,    80,
+    81,    -1,    83,    -1,    28,    -1,    30,    -1,    -1,    -1,
+   562,    -1,    -1,   565,     1,    -1,     3,     4,     5,     6,
+     7,     8,     9,    -1,    11,    12,    13,    14,    15,    -1,
     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    40,    54,    55,    43,    57,    58,    59,
-    60,    48,    49,    50,    -1,    -1,    76,    54,    55,    -1,
-    -1,    -1,    59,     1,    -1,    -1,     4,    -1,     6,     7,
-    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
-    77,    78,    79,    80,     1,    82,     3,     4,    -1,    -1,
-    28,     8,     9,    31,    11,    -1,    -1,    -1,    15,    -1,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,     4,
-     5,     6,     7,    40,    -1,    10,    43,    12,    13,    14,
-    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
-    -1,    -1,    59,    28,    -1,    30,    -1,    -1,    -1,     4,
+    27,    28,    29,    30,    31,    -1,    33,    34,    35,    27,
+    -1,    -1,    30,    77,    41,    -1,    -1,    44,    -1,    37,
+   612,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,
+    -1,    -1,    -1,    60,    -1,    -1,    -1,     4,     5,     6,
+     7,    -1,    60,    61,    -1,    12,    13,    14,    -1,    -1,
+    -1,    78,    -1,    80,    81,     1,    83,     3,     4,    -1,
+    78,    28,     8,     9,    82,    11,    -1,    -1,    -1,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,     4,     5,     6,     7,    41,    -1,    -1,    44,    12,
+    13,    14,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+    56,    78,    -1,    -1,    60,    28,    -1,    30,     1,    -1,
+    -1,     4,    -1,     6,     7,    -1,    -1,    -1,    -1,    12,
+    13,    14,    78,    -1,    80,    81,     1,    83,     3,     4,
+    -1,    -1,    -1,     8,     9,    28,    11,    -1,    31,    -1,
+    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    -1,    29,    78,    31,    -1,    33,    34,
+    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
+    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+    55,    56,    -1,    -1,     1,    60,     3,     4,    -1,    -1,
+    -1,     8,     9,    -1,    11,    47,    48,    49,    50,    51,
+    52,    53,    -1,    78,    -1,    80,    81,    -1,    83,    -1,
+    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,
+    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,
+    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,
+    -1,    -1,    59,    60,    61,     1,    -1,     3,     4,    -1,
+    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    -1,
+    -1,    -1,    79,    80,    81,    -1,    83,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    -1,
+    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+    56,    -1,    -1,    59,    60,    61,     1,    -1,     3,    -1,
+    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    83,    -1,    -1,
+    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
+    35,    -1,    37,    -1,    -1,    -1,    41,    -1,    -1,    44,
+    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+    55,    56,    -1,    -1,    59,    60,    61,     1,    -1,     3,
+    -1,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    80,    81,    -1,    83,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,     4,     5,     6,     7,    41,    -1,    10,
+    44,    12,    13,    14,    -1,    49,    50,    51,    -1,    -1,
+    -1,    55,    56,     1,    -1,     3,    60,    28,    -1,    30,
+     8,     9,     1,    11,    -1,     4,     5,     6,     7,    -1,
+    -1,    -1,    -1,    12,    13,    14,    80,    81,    -1,    83,
+    -1,    29,    -1,    31,    -1,    33,    34,    35,    27,    28,
+    -1,    30,    -1,    41,    -1,    -1,    44,    -1,    37,    -1,
+    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,    -1,
+    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    60,    61,    -1,    -1,     1,    -1,    -1,     4,     5,
+     6,     7,    80,    81,    -1,    83,    12,    13,    14,    78,
+    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    -1,
+    -1,    27,    28,     1,    30,    -1,     4,     5,     6,     7,
+    -1,    37,     3,    -1,    12,    13,    14,     8,     9,    -1,
+    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
+    28,    -1,    30,    -1,    60,    61,    -1,    -1,    29,    37,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    41,    -1,    78,    44,    -1,    -1,    82,    83,    49,    50,
+    51,    -1,    -1,    -1,    55,    56,     3,    -1,    -1,    60,
+    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,
+    78,    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    80,
+    81,    -1,    29,    84,    31,    -1,    33,    34,    35,    -1,
+     4,     5,     6,     7,    41,    -1,    -1,    44,    12,    13,
+    14,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,
+     3,    -1,    -1,    60,    28,     8,     9,    -1,    11,     4,
      5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
-    77,    -1,    79,    80,     1,    82,     3,     4,    -1,    -1,
-    -1,     8,     9,    28,    11,    30,    -1,    -1,    15,    -1,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
-    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
-    -1,     1,    59,     3,     4,    -1,    -1,    -1,     8,     9,
-    -1,    11,    45,    46,    47,    48,    49,    50,    51,    52,
-    77,    -1,    79,    80,    -1,    82,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
-    60,     1,    -1,     3,     4,    -1,    -1,    -1,     8,     9,
-    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
-    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
-    60,     1,    -1,     3,    -1,    -1,    -1,    -1,     8,     9,
-    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
-    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    36,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
-    60,     1,    -1,     3,    -1,    -1,    -1,    -1,     8,     9,
-    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,     1,    -1,     3,    59,
-    -1,    -1,    -1,     8,     9,     1,    11,    -1,     4,     5,
-     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    79,
-    80,    -1,    82,    -1,    29,    -1,    31,    -1,    33,    34,
-    -1,    27,    28,    -1,    30,    40,    -1,    -1,    43,    -1,
-    36,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
-    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    59,    60,    -1,    -1,     1,    -1,    -1,
-     4,     5,     6,     7,    79,    80,    -1,    82,    12,    13,
-    14,    77,     3,    -1,    -1,    81,    82,     8,     9,    -1,
-    11,    -1,    -1,    27,    28,    -1,    30,    -1,    -1,    -1,
-    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    29,     3,
-    31,    -1,    33,    34,     8,     9,    -1,    11,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    59,    60,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    29,    -1,    31,    59,    33,
-    34,    -1,    -1,    77,    -1,    -1,    40,    81,    82,    43,
-    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,
-    54,    55,    83,    -1,     3,    59,    -1,    -1,    -1,     8,
-     9,    -1,    11,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    79,    80,    -1,    -1,    83,
-    29,     3,    31,    -1,    33,    34,     8,     9,    -1,    11,
-    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
-    49,    50,    -1,    -1,    -1,    54,    55,    29,    -1,    31,
-    59,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
-    79,    80,    54,    55,    83,    -1,     3,    59,    -1,    -1,
-    -1,     8,     9,    -1,    11,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    -1,    79,    80,    -1,
-    -1,    83,    29,     3,    31,    -1,    33,    34,     8,     9,
-    -1,    11,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
-    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    29,
-    -1,    31,    59,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    79,    80,    54,    55,    83,    -1,     3,    59,
-    -1,    -1,    -1,     8,     9,    -1,    11,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    -1,    -1,    79,
-    80,    -1,    -1,    83,    29,    -1,    31,    -1,    33,    34,
-    10,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
-    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
-    55,    -1,    -1,    -1,    59,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    -1,    79,    80,    -1,    -1,    83,     3,
-     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
-    14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
-    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
-    -1,    -1,    -1,    -1,    48,    49,    50,    30,    -1,    -1,
-    54,    55,    35,    36,    37,    59,    39,    40,    41,    42,
+    -1,    -1,    -1,    80,    81,    -1,    29,    84,    31,    -1,
+    33,    34,    35,    28,     4,    30,     6,     7,    41,    -1,
+    -1,    44,    12,    13,    14,    -1,    49,    50,    51,    -1,
+    -1,    -1,    55,    56,     3,    -1,    -1,    60,    28,     8,
+     9,    -1,    11,     4,     5,     6,     7,    -1,    -1,    -1,
+    -1,    12,    13,    14,    -1,    -1,    -1,    80,    81,    -1,
+    29,    84,    31,    78,    33,    34,    35,    28,    -1,    30,
+    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+    49,    50,    51,    -1,    -1,    -1,    55,    56,     3,    -1,
+    -1,    60,    -1,     8,     9,    38,    11,    40,    41,    42,
     43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    -1,    -1,    -1,    77,    -1,    79,    80,    -1,    82,     3,
+    53,    80,    81,    -1,    29,    84,    31,    -1,    33,    34,
+    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
+    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+    55,    56,     3,    -1,    -1,    60,    -1,     8,     9,    -1,
+    11,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    53,    -1,    80,    81,    -1,    29,    84,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,
+    51,    -1,    -1,    -1,    55,    56,     3,    -1,    -1,    60,
+    -1,     8,     9,    -1,    11,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    -1,    -1,    80,
+    81,    -1,    29,    84,    31,    -1,    33,    34,    35,    10,
+    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,
+    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,
+    -1,    -1,    -1,    60,    -1,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    80,    81,    -1,    -1,    84,     3,     4,
+     5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    31,    -1,    33,    34,
+    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
+    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
+    55,    56,    36,    37,    38,    60,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    -1,    -1,    -1,    78,    -1,    80,    81,    -1,    83,     3,
      4,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,
     -1,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
     24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
-    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
-    54,    55,    -1,     3,    -1,    59,    -1,    -1,     8,     9,
-    -1,    11,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    -1,    -1,    77,    -1,    79,    80,    -1,    82,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
-     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    -1,    82,    -1,    -1,    28,    29,    30,    31,    -1,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
-    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
-    -1,    54,    55,    -1,     3,     4,    59,     6,     7,     8,
-     9,    -1,    11,    12,    13,    14,    -1,     3,    -1,    -1,
-    -1,    -1,     8,     9,    -1,    11,    79,    80,    -1,    28,
-    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    40,    -1,    29,    43,    31,    -1,    33,    34,    48,
-    49,    50,    -1,    -1,    40,    54,    55,    43,    -1,    -1,
-    59,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
-     3,    -1,    -1,    59,    -1,     8,     9,    -1,    11,    -1,
-    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    77,    -1,    79,    80,    -1,    29,     3,    31,    -1,
-    33,    34,     8,     9,    -1,    11,    -1,    40,    -1,    -1,
-    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
-    -1,    54,    55,    29,     3,    31,    59,    33,    34,     8,
-     9,    -1,    11,    -1,    40,    -1,    -1,    43,    -1,    -1,
-    -1,    -1,    48,    49,    50,    -1,    79,    80,    54,    55,
-    29,     3,    31,    59,    33,    34,     8,     9,    -1,    11,
-    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
-    49,    50,    -1,    79,    80,    54,    55,    29,    -1,    31,
-    59,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
-    79,    80,    54,    55,    -1,    -1,     1,    59,     3,     4,
-     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,
-    -1,    -1,    27,    28,    -1,    30,    31,     4,     5,     6,
-     7,     4,     5,     6,     7,    12,    13,    14,    -1,    12,
-    13,    14,    -1,    -1,    10,    50,    -1,    -1,    -1,    -1,
-    -1,    28,    -1,    30,    59,    28,    -1,    30,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
-    36,    37,    77,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    77,    -1,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    35,    36,    37,    83,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    35,    36,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
-    36,    37,    83,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    37,    -1,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52
+    34,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
+    44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+    -1,    55,    56,    -1,     3,    -1,    60,    -1,    -1,     8,
+     9,    -1,    11,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    53,    78,    -1,    80,    81,    -1,    83,
+    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
+    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+    49,    50,    51,    -1,    -1,    -1,    55,    56,    -1,    -1,
+    -1,    60,     3,     4,     5,     6,     7,     8,     9,    -1,
+    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    80,    81,    -1,    83,    -1,    -1,    28,    29,    30,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,
+    51,    -1,    -1,    -1,    55,    56,    -1,     3,     4,    60,
+     6,     7,     8,     9,    -1,    11,    12,    13,    14,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    80,
+    81,    -1,    28,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,     3,    -1,    -1,    -1,    41,     8,     9,    44,    11,
+    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+    56,    -1,    -1,    -1,    60,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    41,
+    -1,    -1,    44,    -1,    80,    81,    -1,    49,    50,    51,
+    -1,    -1,    -1,    55,    56,     3,    -1,    -1,    60,    -1,
+     8,     9,    -1,    11,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    -1,    -1,    -1,    78,    -1,    80,    81,
+    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,     3,
+    -1,    -1,    -1,    41,     8,     9,    44,    11,    -1,    -1,
+    -1,    49,    50,    51,    -1,    -1,    -1,    55,    56,    -1,
+    -1,    -1,    60,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,     3,    -1,    -1,    -1,    41,     8,     9,
+    44,    11,    80,    81,    -1,    49,    50,    51,    -1,    -1,
+    -1,    55,    56,    -1,    -1,    -1,    60,    -1,    -1,    29,
+    -1,    31,    -1,    33,    34,    35,    -1,     3,    -1,    -1,
+    -1,    41,     8,     9,    44,    11,    80,    81,    -1,    49,
+    50,    51,    -1,    -1,    -1,    55,    56,    -1,    -1,    -1,
+    60,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    -1,
+    80,    81,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+    56,    -1,    -1,     1,    60,     3,     4,     5,     6,     7,
+    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,    27,
+    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    10,    -1,    51,    -1,    -1,    -1,    -1,    -1,    36,
+    37,    38,    60,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    36,    37,    38,
+    78,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    36,    37,    38,    84,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    30,    -1,    -1,    84,    -1,    -1,    36,    37,
+    38,    -1,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    -1,
+    82,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/lib/bison.simple"
+/* This file comes from bison-1.27.  */
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1222,46 +1255,66 @@ static const short yycheck[] = {    38,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-#ifndef alloca
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else /* alloca not defined */
 #ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
 #define alloca __builtin_alloca
 #else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
 #include <alloca.h>
 #else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0 /* No need for malloc.h, which pollutes the namespace;
+        instead, just don't use alloca.  */
 #include <malloc.h>
+#endif
 #else /* not MSDOS, or __TURBOC__ */
 #if defined(_AIX)
-#include <malloc.h>
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
  #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
+#define YYSTACK_USE_ALLOCA
+#else /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
+                and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
 #endif /* __hpux */
+#endif
 #endif /* not _AIX */
 #endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
+#endif /* not sparc */
+#endif /* not GNU C */
+#endif /* alloca not defined */
+#endif /* YYSTACK_USE_ALLOCA not defined */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
+#else
+#define YYSTACK_ALLOC malloc
+#endif
 
 /* Note: there must be only one dollar sign in this file.
    It is replaced by the list of actions, each action
@@ -1271,8 +1324,8 @@ void *alloca ();
 #define yyclearin      (yychar = YYEMPTY)
 #define YYEMPTY                -2
 #define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT        goto yyabortlab
 #define YYERROR                goto yyerrlab1
 /* Like YYERROR except do call yyerror.
    This remains here temporarily to ease the
@@ -1353,12 +1406,12 @@ int yydebug;                    /*  nonzero means print parse trace     */
 #ifndef YYMAXDEPTH
 #define YYMAXDEPTH 10000
 #endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
 \f
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
+
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
 #else                          /* not GNU C or C++ */
@@ -1370,7 +1423,7 @@ static void
 __yy_memcpy (to, from, count)
      char *to;
      char *from;
-     int count;
+     unsigned int count;
 {
   register char *f = from;
   register char *t = to;
@@ -1385,10 +1438,10 @@ __yy_memcpy (to, from, count)
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
-__yy_memcpy (char *to, char *from, int count)
+__yy_memcpy (char *to, char *from, unsigned int count)
 {
-  register char *f = from;
   register char *t = to;
+  register char *f = from;
   register int i = count;
 
   while (i-- > 0)
@@ -1398,7 +1451,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/lib/bison.simple"
+#line 216 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -1419,6 +1472,15 @@ __yy_memcpy (char *to, char *from, int count)
 #define YYPARSE_PARAM_DECL
 #endif /* not YYPARSE_PARAM */
 
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse (void *);
+#else
+int yyparse (void);
+#endif
+#endif
+
 int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
@@ -1447,6 +1509,7 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
+  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -1531,18 +1594,32 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
        {
          yyerror("parser stack overflow");
+         if (yyfree_stacks)
+           {
+             free (yyss);
+             free (yyvs);
+#ifdef YYLSP_NEEDED
+             free (yyls);
+#endif
+           }
          return 2;
        }
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
+#ifndef YYSTACK_USE_ALLOCA
+      yyfree_stacks = 1;
+#endif
+      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1,
+                  size * (unsigned int) sizeof (*yyssp));
+      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
+                  size * (unsigned int) sizeof (*yyvsp));
 #ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
+      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1,
+                  size * (unsigned int) sizeof (*yylsp));
 #endif
 #endif /* no yyoverflow */
 
@@ -1963,26 +2040,30 @@ case 55:
 { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
     break;}
 case 56:
-#line 461 "c-parse.y"
-{ skip_evaluation++; ;
+#line 459 "c-parse.y"
+{ yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ;
     break;}
 case 57:
-#line 465 "c-parse.y"
+#line 463 "c-parse.y"
+{ skip_evaluation++; ;
+    break;}
+case 58:
+#line 467 "c-parse.y"
 { skip_evaluation++; ;
     break;}
-case 59:
-#line 471 "c-parse.y"
+case 60:
+#line 473 "c-parse.y"
 { tree type = groktypename (yyvsp[-2].ttype);
                  yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
     break;}
-case 60:
-#line 474 "c-parse.y"
+case 61:
+#line 476 "c-parse.y"
 { start_init (NULL_TREE, NULL, 0);
                  yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
                  really_start_incremental_init (yyvsp[-2].ttype); ;
     break;}
-case 61:
-#line 478 "c-parse.y"
+case 62:
+#line 480 "c-parse.y"
 { char *name;
                  tree result = pop_init_level (0);
                  tree type = yyvsp[-5].ttype;
@@ -2008,10 +2089,6 @@ case 61:
                    }
                ;
     break;}
-case 63:
-#line 507 "c-parse.y"
-{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
-    break;}
 case 64:
 #line 509 "c-parse.y"
 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
@@ -2058,41 +2135,45 @@ case 74:
     break;}
 case 75:
 #line 531 "c-parse.y"
+{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 76:
+#line 533 "c-parse.y"
 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
                  skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
     break;}
-case 76:
-#line 534 "c-parse.y"
+case 77:
+#line 536 "c-parse.y"
 { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
                  yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
     break;}
-case 77:
-#line 537 "c-parse.y"
+case 78:
+#line 539 "c-parse.y"
 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
                  skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
     break;}
-case 78:
-#line 540 "c-parse.y"
+case 79:
+#line 542 "c-parse.y"
 { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
                  yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
     break;}
-case 79:
-#line 543 "c-parse.y"
+case 80:
+#line 545 "c-parse.y"
 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
                  skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
     break;}
-case 80:
-#line 546 "c-parse.y"
+case 81:
+#line 548 "c-parse.y"
 { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
                                      - (yyvsp[-4].ttype == boolean_false_node)); ;
     break;}
-case 81:
-#line 549 "c-parse.y"
+case 82:
+#line 551 "c-parse.y"
 { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
                  yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
     break;}
-case 82:
-#line 552 "c-parse.y"
+case 83:
+#line 554 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
                  /* Make sure first operand is calculated only once.  */
@@ -2100,13 +2181,13 @@ case 82:
                  yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
                  skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
     break;}
-case 83:
-#line 559 "c-parse.y"
+case 84:
+#line 561 "c-parse.y"
 { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
                  yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
     break;}
-case 84:
-#line 562 "c-parse.y"
+case 85:
+#line 564 "c-parse.y"
 { char class;
                  yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
                  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
@@ -2115,8 +2196,8 @@ case 84:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR);
                ;
     break;}
-case 85:
-#line 570 "c-parse.y"
+case 86:
+#line 572 "c-parse.y"
 { char class;
                  yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
                  /* This inhibits warnings in truthvalue_conversion.  */
@@ -2126,8 +2207,8 @@ case 85:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK);
                ;
     break;}
-case 86:
-#line 582 "c-parse.y"
+case 87:
+#line 584 "c-parse.y"
 {
                  yyval.ttype = lastiddecl;
                  if (!yyval.ttype || yyval.ttype == error_mark_node)
@@ -2226,24 +2307,24 @@ case 86:
                    }
                ;
     break;}
-case 88:
-#line 681 "c-parse.y"
-{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
-    break;}
 case 89:
 #line 683 "c-parse.y"
+{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+    break;}
+case 90:
+#line 685 "c-parse.y"
 { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
                  if (class == 'e' || class == '1'
                      || class == '2' || class == '<')
                    C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
                  yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 90:
-#line 689 "c-parse.y"
-{ yyval.ttype = error_mark_node; ;
-    break;}
 case 91:
 #line 691 "c-parse.y"
+{ yyval.ttype = error_mark_node; ;
+    break;}
+case 92:
+#line 693 "c-parse.y"
 { if (current_function_decl == 0)
                    {
                      error ("braced-group within expression allowed only inside a function");
@@ -2258,8 +2339,8 @@ case 91:
                  push_label_level ();
                  yyval.ttype = expand_start_stmt_expr (); ;
     break;}
-case 92:
-#line 705 "c-parse.y"
+case 93:
+#line 707 "c-parse.y"
 { tree rtl_exp;
                  if (pedantic)
                    pedwarn ("ANSI C forbids braced-groups within expressions");
@@ -2283,79 +2364,79 @@ case 92:
                    yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
-case 93:
-#line 728 "c-parse.y"
-{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
-    break;}
 case 94:
 #line 730 "c-parse.y"
-{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 95:
 #line 732 "c-parse.y"
+{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 96:
+#line 734 "c-parse.y"
 {
                    yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 96:
-#line 736 "c-parse.y"
+case 97:
+#line 738 "c-parse.y"
 {
                   tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
 
                     yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
                ;
     break;}
-case 97:
-#line 742 "c-parse.y"
-{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
-    break;}
 case 98:
 #line 744 "c-parse.y"
+{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+    break;}
+case 99:
+#line 746 "c-parse.y"
 { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
     break;}
-case 100:
-#line 751 "c-parse.y"
+case 101:
+#line 753 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 103:
-#line 760 "c-parse.y"
+case 104:
+#line 762 "c-parse.y"
 { c_mark_varargs ();
                  if (pedantic)
                    pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
     break;}
-case 104:
-#line 770 "c-parse.y"
+case 105:
+#line 772 "c-parse.y"
 { ;
     break;}
-case 109:
-#line 786 "c-parse.y"
+case 110:
+#line 788 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 110:
-#line 791 "c-parse.y"
+case 111:
+#line 793 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);     
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 111:
-#line 796 "c-parse.y"
+case 112:
+#line 798 "c-parse.y"
 { shadow_tag_warned (yyvsp[-1].ttype, 1);
                  pedwarn ("empty declaration"); ;
     break;}
-case 112:
-#line 799 "c-parse.y"
+case 113:
+#line 801 "c-parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
-case 113:
-#line 808 "c-parse.y"
+case 114:
+#line 810 "c-parse.y"
 { ;
     break;}
-case 118:
-#line 823 "c-parse.y"
+case 119:
+#line 825 "c-parse.y"
 { yyval.itype = suspend_momentary ();
                  pending_xref_error ();
                  declspec_stack = tree_cons (prefix_attributes,
@@ -2364,271 +2445,271 @@ case 118:
                  split_specs_attrs (yyvsp[0].ttype,
                                     &current_declspecs, &prefix_attributes); ;
     break;}
-case 119:
-#line 834 "c-parse.y"
+case 120:
+#line 836 "c-parse.y"
 { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
     break;}
-case 120:
-#line 839 "c-parse.y"
+case 121:
+#line 841 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 121:
-#line 844 "c-parse.y"
+case 122:
+#line 846 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 122:
-#line 849 "c-parse.y"
+case 123:
+#line 851 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 123:
-#line 854 "c-parse.y"
+case 124:
+#line 856 "c-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 124:
-#line 859 "c-parse.y"
-{ shadow_tag (yyvsp[-1].ttype); ;
-    break;}
 case 125:
 #line 861 "c-parse.y"
-{ pedwarn ("empty declaration"); ;
+{ shadow_tag (yyvsp[-1].ttype); ;
     break;}
 case 126:
 #line 863 "c-parse.y"
-{ pedantic = yyvsp[-1].itype; ;
+{ pedwarn ("empty declaration"); ;
     break;}
 case 127:
-#line 873 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 865 "c-parse.y"
+{ pedantic = yyvsp[-1].itype; ;
     break;}
 case 128:
 #line 875 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 129:
-#line 879 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 877 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
     break;}
 case 130:
 #line 881 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 131:
 #line 883 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 132:
+#line 885 "c-parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
                  yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 132:
-#line 888 "c-parse.y"
-{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
-    break;}
 case 133:
-#line 893 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 890 "c-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 134:
 #line 895 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 135:
-#line 900 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 897 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
     break;}
 case 136:
 #line 902 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 137:
 #line 904 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 138:
+#line 906 "c-parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
                  yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 138:
-#line 917 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
-    break;}
 case 139:
 #line 919 "c-parse.y"
-{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 140:
 #line 921 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 141:
 #line 923 "c-parse.y"
-{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 142:
-#line 928 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
-                 TREE_STATIC (yyval.ttype) = 1; ;
+#line 925 "c-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 143:
-#line 931 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+#line 930 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+                 TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 144:
 #line 933 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+    break;}
+case 145:
+#line 935 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
                  TREE_STATIC (yyval.ttype) = 1; ;
     break;}
-case 145:
-#line 936 "c-parse.y"
+case 146:
+#line 938 "c-parse.y"
 { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
                  yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
                  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
     break;}
-case 146:
-#line 950 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
-    break;}
 case 147:
 #line 952 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 148:
-#line 956 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 954 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
     break;}
 case 149:
 #line 958 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 150:
+#line 960 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 152:
-#line 968 "c-parse.y"
+case 153:
+#line 970 "c-parse.y"
 { /* For a typedef name, record the meaning, not the name.
                     In case of `foo foo, bar;'.  */
                  yyval.ttype = lookup_name (yyvsp[0].ttype); ;
     break;}
-case 153:
-#line 972 "c-parse.y"
-{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
-    break;}
 case 154:
 #line 974 "c-parse.y"
-{ yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
     break;}
-case 162:
-#line 996 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+case 155:
+#line 976 "c-parse.y"
+{ yyval.ttype = groktypename (yyvsp[-1].ttype); ;
     break;}
 case 163:
 #line 998 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 164:
+#line 1000 "c-parse.y"
 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
                  yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
-case 164:
-#line 1005 "c-parse.y"
+case 165:
+#line 1007 "c-parse.y"
 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
                                          yyvsp[-1].ttype, prefix_attributes);
                  start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
     break;}
-case 165:
-#line 1010 "c-parse.y"
+case 166:
+#line 1012 "c-parse.y"
 { finish_init ();
                  finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
     break;}
-case 166:
-#line 1013 "c-parse.y"
+case 167:
+#line 1015 "c-parse.y"
 { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
                                       yyvsp[0].ttype, prefix_attributes);
                  finish_decl (d, NULL_TREE, yyvsp[-1].ttype); 
                 ;
     break;}
-case 167:
-#line 1021 "c-parse.y"
+case 168:
+#line 1023 "c-parse.y"
 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
                                          yyvsp[-1].ttype, prefix_attributes);
                  start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
     break;}
-case 168:
-#line 1026 "c-parse.y"
+case 169:
+#line 1028 "c-parse.y"
 { finish_init ();
                  decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
                  finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
     break;}
-case 169:
-#line 1030 "c-parse.y"
+case 170:
+#line 1032 "c-parse.y"
 { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
                                       yyvsp[0].ttype, prefix_attributes);
                  finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 170:
-#line 1038 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
-    break;}
 case 171:
 #line 1040 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 172:
-#line 1045 "c-parse.y"
+#line 1042 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 173:
 #line 1047 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 174:
-#line 1052 "c-parse.y"
-{ yyval.ttype = yyvsp[-2].ttype; ;
+#line 1049 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 175:
-#line 1057 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1054 "c-parse.y"
+{ yyval.ttype = yyvsp[-2].ttype; ;
     break;}
 case 176:
 #line 1059 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 177:
-#line 1064 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1061 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 178:
 #line 1066 "c-parse.y"
-{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 179:
 #line 1068 "c-parse.y"
-{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 180:
 #line 1070 "c-parse.y"
-{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
     break;}
 case 181:
 #line 1072 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+    break;}
+case 182:
+#line 1074 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 187:
-#line 1090 "c-parse.y"
+case 188:
+#line 1092 "c-parse.y"
 { really_start_incremental_init (NULL_TREE);
                  /* Note that the call to clear_momentary
                     is in process_init_element.  */
                  push_momentary (); ;
     break;}
-case 188:
-#line 1095 "c-parse.y"
+case 189:
+#line 1097 "c-parse.y"
 { yyval.ttype = pop_init_level (0);
                  if (yyval.ttype == error_mark_node
                      && ! (yychar == STRING || yychar == CONSTANT))
@@ -2636,45 +2717,45 @@ case 188:
                  else
                    pop_momentary_nofree (); ;
     break;}
-case 189:
-#line 1103 "c-parse.y"
+case 190:
+#line 1105 "c-parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
-case 190:
-#line 1109 "c-parse.y"
+case 191:
+#line 1111 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids empty initializer braces"); ;
     break;}
-case 196:
-#line 1125 "c-parse.y"
+case 197:
+#line 1127 "c-parse.y"
 { set_init_label (yyvsp[-1].ttype); ;
     break;}
-case 199:
-#line 1132 "c-parse.y"
-{ push_init_level (0); ;
-    break;}
 case 200:
 #line 1134 "c-parse.y"
-{ process_init_element (pop_init_level (0)); ;
+{ push_init_level (0); ;
     break;}
 case 201:
 #line 1136 "c-parse.y"
-{ process_init_element (yyvsp[0].ttype); ;
+{ process_init_element (pop_init_level (0)); ;
     break;}
-case 205:
-#line 1147 "c-parse.y"
-{ set_init_label (yyvsp[0].ttype); ;
+case 202:
+#line 1138 "c-parse.y"
+{ process_init_element (yyvsp[0].ttype); ;
     break;}
 case 206:
-#line 1152 "c-parse.y"
-{ set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+#line 1149 "c-parse.y"
+{ set_init_label (yyvsp[0].ttype); ;
     break;}
 case 207:
 #line 1154 "c-parse.y"
-{ set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+{ set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 208:
-#line 1159 "c-parse.y"
+#line 1156 "c-parse.y"
+{ set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+    break;}
+case 209:
+#line 1161 "c-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -2684,17 +2765,17 @@ case 208:
                    }
                  reinit_parse_for_function (); ;
     break;}
-case 209:
-#line 1168 "c-parse.y"
+case 210:
+#line 1170 "c-parse.y"
 { store_parm_decls (); ;
     break;}
-case 210:
-#line 1176 "c-parse.y"
+case 211:
+#line 1178 "c-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
-case 211:
-#line 1182 "c-parse.y"
+case 212:
+#line 1184 "c-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -2704,372 +2785,372 @@ case 211:
                    }
                  reinit_parse_for_function (); ;
     break;}
-case 212:
-#line 1191 "c-parse.y"
+case 213:
+#line 1193 "c-parse.y"
 { store_parm_decls (); ;
     break;}
-case 213:
-#line 1199 "c-parse.y"
+case 214:
+#line 1201 "c-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
-case 216:
-#line 1215 "c-parse.y"
-{ yyval.ttype = yyvsp[-1].ttype; ;
-    break;}
 case 217:
 #line 1217 "c-parse.y"
-{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 218:
-#line 1222 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+#line 1219 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 219:
 #line 1224 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 220:
 #line 1226 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 221:
-#line 1233 "c-parse.y"
+#line 1228 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 222:
+#line 1235 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 223:
-#line 1244 "c-parse.y"
+case 224:
+#line 1246 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 224:
-#line 1249 "c-parse.y"
+case 225:
+#line 1251 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
                  if (! flag_isoc9x)
                    error ("`[*]' in parameter declaration only allowed in ISO C 9x");
                ;
     break;}
-case 225:
-#line 1254 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
-    break;}
 case 226:
 #line 1256 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 227:
 #line 1258 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 228:
-#line 1265 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1260 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 230:
-#line 1274 "c-parse.y"
-{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+case 229:
+#line 1267 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 231:
-#line 1279 "c-parse.y"
-{ yyval.ttype = yyvsp[-1].ttype; ;
+#line 1276 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 232:
 #line 1281 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 233:
 #line 1283 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 234:
+#line 1285 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
                  if (! flag_isoc9x)
                    error ("`[*]' in parameter declaration only allowed in ISO C 9x");
                ;
     break;}
-case 234:
-#line 1288 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
-    break;}
 case 235:
 #line 1290 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 236:
-#line 1297 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1292 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 238:
-#line 1303 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+case 237:
+#line 1299 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 239:
 #line 1305 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 240:
-#line 1310 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1307 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 241:
 #line 1312 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 242:
-#line 1317 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1314 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 243:
 #line 1319 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 244:
-#line 1324 "c-parse.y"
+#line 1321 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 245:
+#line 1326 "c-parse.y"
 { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
                  /* Start scope of tag before parsing components.  */
                ;
     break;}
-case 245:
-#line 1328 "c-parse.y"
-{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
-    break;}
 case 246:
 #line 1330 "c-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 247:
+#line 1332 "c-parse.y"
 { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 247:
-#line 1334 "c-parse.y"
-{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
-    break;}
 case 248:
 #line 1336 "c-parse.y"
-{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
     break;}
 case 249:
 #line 1338 "c-parse.y"
-{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
     break;}
 case 250:
 #line 1340 "c-parse.y"
+{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 251:
+#line 1342 "c-parse.y"
 { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 251:
-#line 1344 "c-parse.y"
-{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
-    break;}
 case 252:
 #line 1346 "c-parse.y"
+{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+    break;}
+case 253:
+#line 1348 "c-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
     break;}
-case 253:
-#line 1349 "c-parse.y"
+case 254:
+#line 1351 "c-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 254:
-#line 1352 "c-parse.y"
+case 255:
+#line 1354 "c-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (NULL_TREE); ;
     break;}
-case 255:
-#line 1355 "c-parse.y"
+case 256:
+#line 1357 "c-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 256:
-#line 1358 "c-parse.y"
+case 257:
+#line 1360 "c-parse.y"
 { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
     break;}
-case 260:
-#line 1369 "c-parse.y"
+case 261:
+#line 1371 "c-parse.y"
 { if (pedantic && ! flag_isoc9x)
                    pedwarn ("comma at end of enumerator list"); ;
     break;}
-case 261:
-#line 1375 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
-    break;}
 case 262:
 #line 1377 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
-                 pedwarn ("no semicolon at end of struct or union"); ;
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 263:
-#line 1382 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1379 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+                 pedwarn ("no semicolon at end of struct or union"); ;
     break;}
 case 264:
 #line 1384 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 265:
 #line 1386 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 266:
+#line 1388 "c-parse.y"
 { if (pedantic)
                    pedwarn ("extra semicolon in struct or union specified"); ;
     break;}
-case 266:
-#line 1401 "c-parse.y"
+case 267:
+#line 1403 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 267:
-#line 1407 "c-parse.y"
+case 268:
+#line 1409 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 268:
-#line 1412 "c-parse.y"
+case 269:
+#line 1414 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 269:
-#line 1418 "c-parse.y"
+case 270:
+#line 1420 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 270:
-#line 1423 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
-    break;}
 case 271:
 #line 1425 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 272:
+#line 1427 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 273:
-#line 1432 "c-parse.y"
+case 274:
+#line 1434 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 274:
-#line 1437 "c-parse.y"
+case 275:
+#line 1439 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 275:
-#line 1441 "c-parse.y"
+case 276:
+#line 1443 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 276:
-#line 1444 "c-parse.y"
+case 277:
+#line 1446 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 278:
-#line 1456 "c-parse.y"
+case 279:
+#line 1458 "c-parse.y"
 { if (yyvsp[-2].ttype == error_mark_node)
                    yyval.ttype = yyvsp[-2].ttype;
                  else
                    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
     break;}
-case 279:
-#line 1461 "c-parse.y"
-{ yyval.ttype = error_mark_node; ;
-    break;}
 case 280:
-#line 1467 "c-parse.y"
-{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+#line 1463 "c-parse.y"
+{ yyval.ttype = error_mark_node; ;
     break;}
 case 281:
 #line 1469 "c-parse.y"
-{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 282:
-#line 1474 "c-parse.y"
-{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 1471 "c-parse.y"
+{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 283:
 #line 1476 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 284:
-#line 1481 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1478 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 286:
-#line 1487 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+case 285:
+#line 1483 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 287:
 #line 1489 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 288:
-#line 1494 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+#line 1491 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 289:
 #line 1496 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = NULL_TREE; ;
     break;}
 case 290:
-#line 1501 "c-parse.y"
-{ yyval.ttype = yyvsp[-1].ttype; ;
+#line 1498 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 291:
-#line 1504 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 1503 "c-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 292:
 #line 1506 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 293:
 #line 1508 "c-parse.y"
-{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 294:
 #line 1510 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 295:
 #line 1512 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 296:
 #line 1514 "c-parse.y"
-{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 297:
 #line 1516 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 298:
 #line 1518 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 299:
-#line 1522 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1520 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
 case 300:
-#line 1531 "c-parse.y"
+#line 1524 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 301:
+#line 1533 "c-parse.y"
 {
                  if (pedantic && yyvsp[0].ends_in_label)
                    pedwarn ("ANSI C forbids label at end of compound statement");
                ;
     break;}
-case 302:
-#line 1540 "c-parse.y"
-{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
-    break;}
 case 303:
 #line 1542 "c-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+    break;}
+case 304:
+#line 1544 "c-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
-case 307:
-#line 1554 "c-parse.y"
+case 308:
+#line 1556 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  pushlevel (0);
                  clear_last_expr ();
@@ -3077,13 +3158,13 @@ case 307:
                  expand_start_bindings (0);
                ;
     break;}
-case 309:
-#line 1567 "c-parse.y"
+case 310:
+#line 1569 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids label declarations"); ;
     break;}
-case 312:
-#line 1578 "c-parse.y"
+case 313:
+#line 1580 "c-parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -3093,20 +3174,20 @@ case 312:
                    }
                ;
     break;}
-case 313:
-#line 1592 "c-parse.y"
+case 314:
+#line 1594 "c-parse.y"
 {;
     break;}
-case 315:
-#line 1596 "c-parse.y"
-{ compstmt_count++; ;
-    break;}
 case 316:
-#line 1599 "c-parse.y"
-{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
+#line 1598 "c-parse.y"
+{ compstmt_count++; ;
     break;}
 case 317:
 #line 1601 "c-parse.y"
+{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
+    break;}
+case 318:
+#line 1603 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), 1, 0);
                  yyval.ttype = poplevel (1, 1, 0);
@@ -3115,8 +3196,8 @@ case 317:
                  else
                    pop_momentary (); ;
     break;}
-case 318:
-#line 1609 "c-parse.y"
+case 319:
+#line 1611 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3125,8 +3206,8 @@ case 318:
                  else
                    pop_momentary (); ;
     break;}
-case 319:
-#line 1617 "c-parse.y"
+case 320:
+#line 1619 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3135,8 +3216,8 @@ case 319:
                  else
                    pop_momentary (); ;
     break;}
-case 322:
-#line 1637 "c-parse.y"
+case 323:
+#line 1639 "c-parse.y"
 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
                                       compstmt_count);
@@ -3145,8 +3226,8 @@ case 322:
                  if_stmt_line = yyvsp[-4].lineno;
                  position_after_white_space (); ;
     break;}
-case 323:
-#line 1651 "c-parse.y"
+case 324:
+#line 1653 "c-parse.y"
 { stmt_count++;
                  compstmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3155,44 +3236,44 @@ case 323:
                  expand_start_loop_continue_elsewhere (1);
                  position_after_white_space (); ;
     break;}
-case 324:
-#line 1659 "c-parse.y"
-{ expand_loop_continue_here (); ;
-    break;}
 case 325:
-#line 1663 "c-parse.y"
-{ yyval.filename = input_filename; ;
+#line 1661 "c-parse.y"
+{ expand_loop_continue_here (); ;
     break;}
 case 326:
-#line 1667 "c-parse.y"
-{ yyval.lineno = lineno; ;
+#line 1665 "c-parse.y"
+{ yyval.filename = input_filename; ;
     break;}
 case 327:
-#line 1672 "c-parse.y"
-{ ;
+#line 1669 "c-parse.y"
+{ yyval.lineno = lineno; ;
     break;}
 case 328:
-#line 1677 "c-parse.y"
+#line 1674 "c-parse.y"
 { ;
     break;}
 case 329:
-#line 1682 "c-parse.y"
-{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+#line 1679 "c-parse.y"
+{ ;
     break;}
 case 330:
-#line 1687 "c-parse.y"
-{ yyval.ends_in_label = 0; ;
+#line 1684 "c-parse.y"
+{ yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
 case 331:
 #line 1689 "c-parse.y"
-{ yyval.ends_in_label = 1; ;
+{ yyval.ends_in_label = 0; ;
     break;}
 case 332:
-#line 1695 "c-parse.y"
+#line 1691 "c-parse.y"
+{ yyval.ends_in_label = 1; ;
+    break;}
+case 333:
+#line 1697 "c-parse.y"
 { stmt_count++; ;
     break;}
-case 334:
-#line 1698 "c-parse.y"
+case 335:
+#line 1700 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
 /* It appears that this should not be done--that a non-lvalue array
@@ -3210,20 +3291,20 @@ case 334:
                  iterator_expand (yyvsp[-1].ttype);
                  clear_momentary (); ;
     break;}
-case 335:
-#line 1715 "c-parse.y"
+case 336:
+#line 1717 "c-parse.y"
 { c_expand_start_else ();
                  yyvsp[-1].itype = stmt_count;
                  position_after_white_space (); ;
     break;}
-case 336:
-#line 1719 "c-parse.y"
+case 337:
+#line 1721 "c-parse.y"
 { c_expand_end_cond ();
                  if (extra_warnings && stmt_count == yyvsp[-3].itype)
                    warning ("empty body in an else-statement"); ;
     break;}
-case 337:
-#line 1723 "c-parse.y"
+case 338:
+#line 1725 "c-parse.y"
 { c_expand_end_cond ();
                  /* This warning is here instead of in simple_if, because we
                     do not want a warning if an empty if is followed by an
@@ -3233,12 +3314,12 @@ case 337:
                    warning_with_file_and_line (if_stmt_file, if_stmt_line,
                                                "empty body in an if-statement"); ;
     break;}
-case 338:
-#line 1735 "c-parse.y"
-{ c_expand_end_cond (); ;
-    break;}
 case 339:
 #line 1737 "c-parse.y"
+{ c_expand_end_cond (); ;
+    break;}
+case 340:
+#line 1739 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
                  /* The emit_nop used to come before emit_line_note,
@@ -3249,8 +3330,8 @@ case 339:
                     We will see.  --rms, July 15, 1991.  */
                  emit_nop (); ;
     break;}
-case 340:
-#line 1747 "c-parse.y"
+case 341:
+#line 1749 "c-parse.y"
 { /* Don't start the loop till we have succeeded
                     in parsing the end test.  This is to make sure
                     that we end every loop we start.  */
@@ -3260,25 +3341,25 @@ case 340:
                                             truthvalue_conversion (yyvsp[-1].ttype));
                  position_after_white_space (); ;
     break;}
-case 341:
-#line 1756 "c-parse.y"
+case 342:
+#line 1758 "c-parse.y"
 { expand_end_loop (); ;
     break;}
-case 342:
-#line 1759 "c-parse.y"
+case 343:
+#line 1761 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_exit_loop_if_false (NULL_PTR,
                                             truthvalue_conversion (yyvsp[-2].ttype));
                  expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 343:
-#line 1766 "c-parse.y"
+case 344:
+#line 1768 "c-parse.y"
 { expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 344:
-#line 1770 "c-parse.y"
+case 345:
+#line 1772 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  /* See comment in `while' alternative, above.  */
@@ -3290,13 +3371,13 @@ case 344:
                     fn without calling expand_end_loop.  */
                ;
     break;}
-case 345:
-#line 1782 "c-parse.y"
+case 346:
+#line 1784 "c-parse.y"
 { yyvsp[0].lineno = lineno;
                  yyval.filename = input_filename; ;
     break;}
-case 346:
-#line 1785 "c-parse.y"
+case 347:
+#line 1787 "c-parse.y"
 { 
                  /* Start the loop.  Doing this after parsing
                     all the expressions ensures we will end the loop.  */
@@ -3313,8 +3394,8 @@ case 346:
                  yyvsp[-2].filename = input_filename;
                  position_after_white_space (); ;
     break;}
-case 347:
-#line 1801 "c-parse.y"
+case 348:
+#line 1803 "c-parse.y"
 { /* Emit the increment expression, with a line number.  */
                  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
                  expand_loop_continue_here ();
@@ -3326,8 +3407,8 @@ case 347:
                    pop_momentary ();
                  expand_end_loop (); ;
     break;}
-case 348:
-#line 1812 "c-parse.y"
+case 349:
+#line 1814 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_case (yyvsp[-1].ttype);
@@ -3336,42 +3417,42 @@ case 348:
                  push_momentary ();
                  position_after_white_space (); ;
     break;}
-case 349:
-#line 1820 "c-parse.y"
+case 350:
+#line 1822 "c-parse.y"
 { expand_end_case (yyvsp[-3].ttype);
                  if (yychar == CONSTANT || yychar == STRING)
                    pop_momentary_nofree ();
                  else
                    pop_momentary (); ;
     break;}
-case 350:
-#line 1826 "c-parse.y"
+case 351:
+#line 1828 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if ( ! expand_exit_something ())
                    error ("break statement not within loop or switch"); ;
     break;}
-case 351:
-#line 1831 "c-parse.y"
+case 352:
+#line 1833 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if (! expand_continue_loop (NULL_PTR))
                    error ("continue statement not within a loop"); ;
     break;}
-case 352:
-#line 1836 "c-parse.y"
+case 353:
+#line 1838 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
-case 353:
-#line 1840 "c-parse.y"
+case 354:
+#line 1842 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
                  c_expand_return (yyvsp[-1].ttype); ;
     break;}
-case 354:
-#line 1844 "c-parse.y"
+case 355:
+#line 1846 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
                  STRIP_NOPS (yyvsp[-2].ttype);
@@ -3382,32 +3463,32 @@ case 354:
                  else
                    error ("argument of `asm' is not a constant string"); ;
     break;}
-case 355:
-#line 1855 "c-parse.y"
+case 356:
+#line 1857 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
                                         yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 356:
-#line 1862 "c-parse.y"
+case 357:
+#line 1864 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                                         yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 357:
-#line 1870 "c-parse.y"
+case 358:
+#line 1872 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
                                         yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 358:
-#line 1876 "c-parse.y"
+case 359:
+#line 1878 "c-parse.y"
 { tree decl;
                  stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -3419,16 +3500,16 @@ case 358:
                    }
                ;
     break;}
-case 359:
-#line 1887 "c-parse.y"
+case 360:
+#line 1889 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids `goto *expr;'");
                  stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
     break;}
-case 362:
-#line 1902 "c-parse.y"
+case 363:
+#line 1904 "c-parse.y"
 {
            /* The value returned by this action is  */
            /*      1 if everything is OK */ 
@@ -3450,15 +3531,15 @@ case 362:
              }
          ;
     break;}
-case 363:
-#line 1923 "c-parse.y"
+case 364:
+#line 1925 "c-parse.y"
 {
            if (yyvsp[-1].itype)
              iterator_for_loop_end (yyvsp[-3].ttype);
          ;
     break;}
-case 364:
-#line 1958 "c-parse.y"
+case 365:
+#line 1960 "c-parse.y"
 { register tree value = check_case_value (yyvsp[-1].ttype);
                  register tree label
                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -3490,8 +3571,8 @@ case 364:
                    }
                  position_after_white_space (); ;
     break;}
-case 365:
-#line 1989 "c-parse.y"
+case 366:
+#line 1991 "c-parse.y"
 { register tree value1 = check_case_value (yyvsp[-3].ttype);
                  register tree value2 = check_case_value (yyvsp[-1].ttype);
                  register tree label
@@ -3523,8 +3604,8 @@ case 365:
                    }
                  position_after_white_space (); ;
     break;}
-case 366:
-#line 2020 "c-parse.y"
+case 367:
+#line 2022 "c-parse.y"
 {
                  tree duplicate;
                  register tree label
@@ -3540,8 +3621,8 @@ case 366:
                    }
                  position_after_white_space (); ;
     break;}
-case 367:
-#line 2035 "c-parse.y"
+case 368:
+#line 2037 "c-parse.y"
 { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
                  stmt_count++;
                  emit_nop ();
@@ -3552,53 +3633,53 @@ case 367:
                    }
                  position_after_white_space (); ;
     break;}
-case 368:
-#line 2050 "c-parse.y"
+case 369:
+#line 2052 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 369:
-#line 2053 "c-parse.y"
+case 370:
+#line 2055 "c-parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 370:
-#line 2058 "c-parse.y"
+case 371:
+#line 2060 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 372:
-#line 2065 "c-parse.y"
+case 373:
+#line 2067 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 375:
-#line 2072 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
-    break;}
 case 376:
-#line 2077 "c-parse.y"
-{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+#line 2074 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 377:
-#line 2082 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+#line 2079 "c-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 378:
 #line 2084 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
     break;}
 case 379:
-#line 2090 "c-parse.y"
+#line 2086 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+    break;}
+case 380:
+#line 2092 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (0); ;
     break;}
-case 380:
-#line 2094 "c-parse.y"
+case 381:
+#line 2096 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 382:
-#line 2102 "c-parse.y"
+case 383:
+#line 2104 "c-parse.y"
 { tree parm;
                  if (pedantic)
                    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -3607,20 +3688,20 @@ case 382:
                    TREE_ASM_WRITTEN (parm) = 1;
                  clear_parm_order (); ;
     break;}
-case 383:
-#line 2110 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
-    break;}
 case 384:
 #line 2112 "c-parse.y"
-{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 385:
-#line 2118 "c-parse.y"
-{ yyval.ttype = get_parm_info (0); ;
+#line 2114 "c-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
     break;}
 case 386:
 #line 2120 "c-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
+    break;}
+case 387:
+#line 2122 "c-parse.y"
 { yyval.ttype = get_parm_info (0);
                  /* Gcc used to allow this as an extension.  However, it does
                     not work for all targets, and thus has been disabled.
@@ -3631,24 +3712,24 @@ case 386:
                  error ("ANSI C requires a named argument before `...'");
                ;
     break;}
-case 387:
-#line 2130 "c-parse.y"
-{ yyval.ttype = get_parm_info (1); ;
-    break;}
 case 388:
 #line 2132 "c-parse.y"
-{ yyval.ttype = get_parm_info (0); ;
+{ yyval.ttype = get_parm_info (1); ;
     break;}
 case 389:
-#line 2137 "c-parse.y"
-{ push_parm_decl (yyvsp[0].ttype); ;
+#line 2134 "c-parse.y"
+{ yyval.ttype = get_parm_info (0); ;
     break;}
 case 390:
 #line 2139 "c-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 391:
-#line 2146 "c-parse.y"
+#line 2141 "c-parse.y"
+{ push_parm_decl (yyvsp[0].ttype); ;
+    break;}
+case 392:
+#line 2148 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3658,8 +3739,8 @@ case 391:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 392:
-#line 2155 "c-parse.y"
+case 393:
+#line 2157 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3669,8 +3750,8 @@ case 392:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 393:
-#line 2164 "c-parse.y"
+case 394:
+#line 2166 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3680,8 +3761,8 @@ case 393:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 394:
-#line 2173 "c-parse.y"
+case 395:
+#line 2175 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3691,8 +3772,8 @@ case 394:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 395:
-#line 2183 "c-parse.y"
+case 396:
+#line 2185 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3702,50 +3783,50 @@ case 395:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 396:
-#line 2197 "c-parse.y"
+case 397:
+#line 2199 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (1); ;
     break;}
-case 397:
-#line 2201 "c-parse.y"
+case 398:
+#line 2203 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 399:
-#line 2209 "c-parse.y"
+case 400:
+#line 2211 "c-parse.y"
 { tree t;
                  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
                    if (TREE_VALUE (t) == NULL_TREE)
                      error ("`...' in old-style identifier list");
                  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 400:
-#line 2219 "c-parse.y"
-{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
-    break;}
 case 401:
 #line 2221 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 402:
-#line 2227 "c-parse.y"
-{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+#line 2223 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 403:
 #line 2229 "c-parse.y"
-{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 404:
-#line 2234 "c-parse.y"
+#line 2231 "c-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 405:
+#line 2236 "c-parse.y"
 { yyval.itype = pedantic;
                  pedantic = 0; ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/lib/bison.simple"
+#line 542 "/usr/lib/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3940,6 +4021,30 @@ yyerrhandle:
 
   yystate = yyn;
   goto yynewstate;
+
+ yyacceptlab:
+  /* YYACCEPT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 0;
+
+ yyabortlab:
+  /* YYABORT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 1;
 }
-#line 2238 "c-parse.y"
+#line 2240 "c-parse.y"
 
index 888eee9..604cb64 100644 (file)
@@ -21,6 +21,7 @@ __asm, ASM_KEYWORD, NORID
 __asm__, ASM_KEYWORD, NORID
 __attribute, ATTRIBUTE, NORID
 __attribute__, ATTRIBUTE, NORID
+__builtin_va_arg, VA_ARG, NORID
 __complex, TYPESPEC, RID_COMPLEX
 __complex__, TYPESPEC, RID_COMPLEX
 __const, TYPE_QUAL, RID_CONST
index 21b3d0c..838530e 100644 (file)
@@ -1,37 +1,38 @@
 typedef union {long itype; tree ttype; enum tree_code code;
        char *filename; int lineno; int ends_in_label; } YYSTYPE;
-#define        IDENTIFIER      258
-#define        TYPENAME        259
-#define        SCSPEC  260
-#define        TYPESPEC        261
-#define        TYPE_QUAL       262
-#define        CONSTANT        263
-#define        STRING  264
-#define        ELLIPSIS        265
-#define        SIZEOF  266
-#define        ENUM    267
-#define        STRUCT  268
-#define        UNION   269
-#define        IF      270
-#define        ELSE    271
-#define        WHILE   272
-#define        DO      273
-#define        FOR     274
-#define        SWITCH  275
-#define        CASE    276
-#define        DEFAULT 277
-#define        BREAK   278
-#define        CONTINUE        279
-#define        RETURN  280
-#define        GOTO    281
-#define        ASM_KEYWORD     282
-#define        TYPEOF  283
-#define        ALIGNOF 284
-#define        ATTRIBUTE       285
-#define        EXTENSION       286
-#define        LABEL   287
-#define        REALPART        288
-#define        IMAGPART        289
+#define        IDENTIFIER      257
+#define        TYPENAME        258
+#define        SCSPEC  259
+#define        TYPESPEC        260
+#define        TYPE_QUAL       261
+#define        CONSTANT        262
+#define        STRING  263
+#define        ELLIPSIS        264
+#define        SIZEOF  265
+#define        ENUM    266
+#define        STRUCT  267
+#define        UNION   268
+#define        IF      269
+#define        ELSE    270
+#define        WHILE   271
+#define        DO      272
+#define        FOR     273
+#define        SWITCH  274
+#define        CASE    275
+#define        DEFAULT 276
+#define        BREAK   277
+#define        CONTINUE        278
+#define        RETURN  279
+#define        GOTO    280
+#define        ASM_KEYWORD     281
+#define        TYPEOF  282
+#define        ALIGNOF 283
+#define        ATTRIBUTE       284
+#define        EXTENSION       285
+#define        LABEL   286
+#define        REALPART        287
+#define        IMAGPART        288
+#define        VA_ARG  289
 #define        ASSIGN  290
 #define        OROR    291
 #define        ANDAND  292
index 6757c4d..45e9375 100644 (file)
@@ -136,7 +136,7 @@ end ifc
 %token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT
 %token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF
 %token ATTRIBUTE EXTENSION LABEL
-%token REALPART IMAGPART
+%token REALPART IMAGPART VA_ARG
 
 /* Add precedence rules to solve dangling else s/r conflict */
 %nonassoc IF
@@ -500,6 +500,8 @@ unary_expr:
                { $$ = build_unary_op (REALPART_EXPR, $2, 0); }
        | IMAGPART cast_expr %prec UNARY
                { $$ = build_unary_op (IMAGPART_EXPR, $2, 0); }
+       | VA_ARG '(' expr_no_commas ',' typename ')'
+               { $$ = build_va_arg ($3, groktypename ($5)); }
        ;
 
 sizeof:
index bb69dfe..9732854 100644 (file)
@@ -124,7 +124,7 @@ char *language_string = "GNU C";
 %token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT
 %token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF
 %token ATTRIBUTE EXTENSION LABEL
-%token REALPART IMAGPART
+%token REALPART IMAGPART VA_ARG
 
 /* Add precedence rules to solve dangling else s/r conflict */
 %nonassoc IF
@@ -455,6 +455,8 @@ unary_expr:
                { $$ = build_unary_op (REALPART_EXPR, $2, 0); }
        | IMAGPART cast_expr %prec UNARY
                { $$ = build_unary_op (IMAGPART_EXPR, $2, 0); }
+       | VA_ARG '(' expr_no_commas ',' typename ')'
+               { $$ = build_va_arg ($3, groktypename ($5)); }
        ;
 
 sizeof:
index de0262c..b23ae99 100644 (file)
@@ -1296,6 +1296,7 @@ operand_subword (op, i, validate_address, mode)
 
       MEM_COPY_ATTRIBUTES (new, op);
       RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (op);
+      MEM_ALIAS_SET (new) = MEM_ALIAS_SET (op);
 
       return new;
     }
@@ -1598,6 +1599,7 @@ change_address (memref, mode, addr)
   new = gen_rtx_MEM (mode, addr);
   RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (memref);
   MEM_COPY_ATTRIBUTES (new, memref);
+  MEM_ALIAS_SET (new) = MEM_ALIAS_SET (memref);
   return new;
 }
 \f
index 8245cb8..e22c1df 100644 (file)
@@ -8240,6 +8240,9 @@ expand_expr (exp, target, tmode, modifier)
        return const0_rtx;
       }
 
+    case VA_ARG_EXPR:
+      return expand_builtin_va_arg (TREE_OPERAND (exp, 0), type);
+
     default:
       return (*lang_expand_expr) (exp, original_target, tmode, modifier);
     }
index 6bde47a..7f1396d 100644 (file)
@@ -738,9 +738,14 @@ extern rtx gen_cond_trap PROTO((enum rtx_code, rtx, rtx, rtx));
 /* Functions from builtins.c:  */
 #ifdef TREE_CODE
 extern rtx expand_builtin PROTO((tree, rtx, rtx, enum machine_mode, int));
+extern void std_expand_builtin_va_start PROTO((int, tree, rtx));
+extern rtx std_expand_builtin_va_arg PROTO((tree, tree));
+extern rtx expand_builtin_va_arg PROTO((tree, tree));
 #endif
 
 extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
+extern rtx expand_builtin_saveregs PROTO((void));
+extern int get_varargs_alias_set PROTO((void));
 \f
 /* Functions from expr.c:  */
 
index a44c27b..736ba4a 100644 (file)
@@ -3734,19 +3734,13 @@ These machine description macros help implement varargs:
 
 @table @code
 @findex EXPAND_BUILTIN_SAVEREGS
-@item EXPAND_BUILTIN_SAVEREGS (@var{args})
+@item EXPAND_BUILTIN_SAVEREGS ()
 If defined, is a C expression that produces the machine-specific code
 for a call to @code{__builtin_saveregs}.  This code will be moved to the
 very beginning of the function, before any parameter access are made.
 The return value of this function should be an RTX that contains the
 value to use as the return of @code{__builtin_saveregs}.
 
-The argument @var{args} is a @code{tree_list} containing the arguments
-that were passed to @code{__builtin_saveregs}.
-
-If this macro is not defined, the compiler will output an ordinary
-call to the library function @samp{__builtin_saveregs}.
-
 @findex SETUP_INCOMING_VARARGS
 @item SETUP_INCOMING_VARARGS (@var{args_so_far}, @var{mode}, @var{type}, @var{pretend_args_size}, @var{second_time})
 This macro offers an alternative to using @code{__builtin_saveregs} and
index 2056c62..af50d7b 100644 (file)
@@ -701,6 +701,9 @@ DEFTREECODE (PREINCREMENT_EXPR, "preincrement_expr", 'e', 2)
 DEFTREECODE (POSTDECREMENT_EXPR, "postdecrement_expr", 'e', 2)
 DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", 'e', 2)
 
+/* Used to implement `va_arg'.  */
+DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", 'e', 1)
+
 /* Evaluate operand 1.  If and only if an exception is thrown during
    the evaluation of operand 1, evaluate operand 2.
 
index 0d7ea84..b16d73e 100644 (file)
@@ -117,6 +117,11 @@ enum built_in_function
   BUILT_IN_EXTRACT_RETURN_ADDR,
   BUILT_IN_EH_RETURN,
 
+  BUILT_IN_VARARGS_START,
+  BUILT_IN_STDARG_START,
+  BUILT_IN_VA_END,
+  BUILT_IN_VA_COPY,
+
   /* C++ extensions */
   BUILT_IN_NEW,
   BUILT_IN_VEC_NEW,
@@ -1854,6 +1859,11 @@ extern tree unsigned_type_node;
 /* The type node for the ordinary character type.  */
 extern tree char_type_node;
 
+extern tree ptr_type_node;
+
+/* Type `va_list'.  Used by va_start, va_arg, etc.  */
+extern tree va_list_type_node;
+
 /* Points to the name of the input file from which the current input
    being parsed originally came (before it went into cpp).  */
 extern char *input_filename;