diff -ru bison-2.0a/data/yacc.c bison-2.0aJ/data/yacc.c
--- bison-2.0a/data/yacc.c      2005-05-21 11:12:32.000000000 -0600
+++ bison-2.0aJ/data/yacc.c     2005-06-30 18:14:16.509158136 -0600
@@ -237,7 +237,7 @@

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's `empty if-body' warning. */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  define YYSTACK_FREE(Ptr) { /* empty */; }
#  ifndef YYSTACK_ALLOC_MAXIMUM
    /* The OS might guarantee only one guard page at the bottom of the stack,
       and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -291,19 +291,20 @@
/* Copy COUNT objects from FROM to TO.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
-#  if defined (__GNUC__) && 1 < __GNUC__
+#  if defined (__GNUC__)
+#   if 1 < __GNUC__
#   define YYCOPY(To, From, Count) \
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
+#   endif
+#  endif
+# endif
+# ifndef YYCOPY
#   define YYCOPY(To, From, Count)             \
-      do                                       \
       {                                       \
         YYSIZE_T yyi;                         \
         for (yyi = 0; yyi < (Count); yyi++)   \
           (To)[yyi] = (From)[yyi];            \
-       }                                       \
-      while (0)
-#  endif
+       }
# endif

/* Relocate STACK from its old location to the new one.  The
@@ -312,15 +313,13 @@
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack)                                       \
-    do                                                                 \
      {                                                                        \
       YYSIZE_T yynewbytes;                                            \
       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
       Stack = &yyptr->Stack;                                          \
       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
       yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                        \
-    while (0)
+      }

#endif

@@ -487,6 +486,7 @@
#define YYACCEPT       goto yyacceptlab
#define YYABORT                goto yyabortlab
#define YYERROR                goto yyerrorlab
+int yy_false=false; /* Used to suppress compiler warning about unused label */


/* Like YYERROR except do call yyerror.  This remains here temporarily
@@ -498,7 +498,7 @@
#define YYRECOVERING()  (!!yyerrstatus)

#define YYBACKUP(Token, Value)                                 \
-do                                                             \
+{                                                              \
  if (yychar == YYEMPTY && yylen == 1)                         \
    {                                                          \
      yychar = (Token);                                                \
@@ -512,7 +512,7 @@
      yyerror (]b4_yyerror_args[_("syntax error: cannot back up")); \
      YYERROR;                                                 \
    }                                                          \
-while (0)
+}


#define YYTERROR       1
@@ -526,7 +526,7 @@
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
-    do                                                                 \
+    {                                                                  \
      if (N)                                                           \
       {                                                               \
         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
@@ -541,7 +541,7 @@
         (Current).first_column = (Current).last_column =              \
           YYRHSLOC (Rhs, 0).last_column;                              \
       }                                                               \
-    while (0)
+    }
#endif


@@ -550,7 +550,7 @@
   we won't break user code: when these are the locations we know.  */

#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# ifdef YYLTYPE_IS_TRIVIAL
#  define YY_LOCATION_PRINT(File, Loc)                 \
     fprintf (File, "%d.%d-%d.%d",                     \
              (Loc).first_line, (Loc).first_column,    \
@@ -578,13 +578,13 @@
# endif

# define YYDPRINTF(Args)                       \
-do {                                           \
+{                                              \
  if (yydebug)                                 \
    YYFPRINTF Args;                            \
-} while (0)
+}

# define YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
-do {                                                           \
+{                                                              \
  if (yydebug)                                                 \
    {                                                          \
      YYFPRINTF (stderr, "%s ", Title);                                \
@@ -592,7 +592,7 @@
                  Type, Value]b4_location_if([, Location])[);  \
      YYFPRINTF (stderr, "\n");                                        \
    }                                                          \
-} while (0)
+}

/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
@@ -610,10 +610,10 @@
}

# define YY_STACK_PRINT(Bottom, Top)                           \
-do {                                                           \
+{                                                              \
  if (yydebug)                                                 \
    yy_stack_print ((Bottom), (Top));                          \
-} while (0)
+}


/*------------------------------------------------.
@@ -634,10 +634,10 @@
}

# define YY_REDUCE_PRINT(Rule)         \
-do {                                   \
+{                                      \
  if (yydebug)                         \
    yy_reduce_print (Rule);            \
-} while (0)
+}

/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
@@ -826,7 +826,7 @@

  /* When reducing, the number of symbols on the RHS of the reduced
     rule.  */
-  int yylen;
+  int yylen=0;

  YYDPRINTF ((stderr, "Starting parse\n"));

@@ -874,7 +874,7 @@
  yyssp++;

 yysetstate:
-  *yyssp = yystate;
+  *yyssp = (short int) yystate;

  if (yyss + yystacksize - 1 <= yyssp)
    {
@@ -1222,12 +1222,6 @@
`---------------------------------------------------*/
yyerrorlab:

-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (0)
-     goto yyerrorlab;
-
]b4_location_if([[  yyerror_range[0] = yylsp[1-yylen];
  yylsp -= yylen;
  ]])[yyvsp -= yylen;
@@ -1297,6 +1291,13 @@
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (yy_false)
+     goto yyerrorlab;
+
  goto yyreturn;

#ifndef yyoverflow