]> git.saurik.com Git - bison.git/commitdiff
Be a bit more systematic about using 'abort'.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 21 Jan 2006 04:35:09 +0000 (04:35 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 21 Jan 2006 04:35:09 +0000 (04:35 +0000)
* lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
* lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
Put 'default: abort ();' before some other case, to satisfy older
pedantic compilers.
* lib/bitset_stats.c (bitset_stats_init): Likewise.
* lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
* lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
* src/conflicts.c (resolve_sr_conflict): Likewise.
* src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
(get_decision_str, get_orientation_str, get_node_alignment_str):
(get_arrow_mode_str, get_crossing_type_str, get_view_str):
(get_linestyle_str, get_arrowstyle_str): Likewise.
* src/conflicts.c (resolve_sr_conflict):
Use a default case rather than one for the one remaining enum
value, to catch invalid enum values as well.
* src/lalr.c (set_goto_map, map_goto):
Prefer "assert (FOO);" to "if (!FOO) abort ();".
* src/nullable.c (nullable_compute, token_definitions_output):
Likewise.
* src/reader.c (packgram, reader): Likewise.
* src/state.c (transitions_to, state_new, state_reduction_find):
Likewise.
* src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
(symbol_pack): Likewise.
* src/tables.c (conflict_row, pack_vector): Likewise.
* src/scan-skel.l (QPUTS): Remove unnecessary parens.
(BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
* src/system.h: Don't include <assert.h>.
(assert): New macro.

17 files changed:
ChangeLog
lib/abitset.c
lib/bitset.c
lib/bitset_stats.c
lib/ebitset.c
lib/lbitset.c
src/conflicts.c
src/lalr.c
src/nullable.c
src/output.c
src/reader.c
src/scan-skel.l
src/state.c
src/symtab.c
src/system.h
src/tables.c
src/vcg.c

index d13a6be7fadbd5c81737982408c555f58be4aa10..10d105af7265e610f7503c9918d83346dfaa062f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,5 @@
 2006-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 
 2006-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
-       (Destructor Decl, Parser Function, Pure Calling):
-       Describe rules for braces inside C code more carefully.
-
        Be a bit more systematic about using 'abort'.
        * lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
        * lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
        Be a bit more systematic about using 'abort'.
        * lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
        * lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
        * lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
        * lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
        * src/conflicts.c (resolve_sr_conflict): Likewise.
        * lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
        * lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
        * src/conflicts.c (resolve_sr_conflict): Likewise.
-       * src/LR0.c (save_reductions): Use "if (!FOO) abort ();" rather than
-       "assert (FOO);".
-       * src/state.c (state_transitions_set, state_reductions_set): Likewise.
+       * src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
+       (get_decision_str, get_orientation_str, get_node_alignment_str):
+       (get_arrow_mode_str, get_crossing_type_str, get_view_str):
+       (get_linestyle_str, get_arrowstyle_str): Likewise.
+       * src/conflicts.c (resolve_sr_conflict):
+       Use a default case rather than one for the one remaining enum
+       value, to catch invalid enum values as well.
+       * src/lalr.c (set_goto_map, map_goto):
+       Prefer "assert (FOO);" to "if (!FOO) abort ();".
+       * src/nullable.c (nullable_compute, token_definitions_output):
+       Likewise.
+       * src/reader.c (packgram, reader): Likewise.
+       * src/state.c (transitions_to, state_new, state_reduction_find):
+       Likewise.
+       * src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
+       (symbol_pack): Likewise.
+       * src/tables.c (conflict_row, pack_vector): Likewise.
        * src/scan-skel.l (QPUTS): Remove unnecessary parens.
        (BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
        * src/scan-skel.l (QPUTS): Remove unnecessary parens.
        (BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
+       * src/system.h: Don't include <assert.h>.
+       (assert): New macro.
+
+       * doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
+       (Destructor Decl, Parser Function, Pure Calling):
+       Describe rules for braces inside C code more carefully.
 
 2006-01-19  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2006-01-19  Paul Eggert  <eggert@cs.ucla.edu>
 
index c573f34aeee7913147a7fc7911aaa1176a0a4571..7eb85e0b2531a3a09723d1ffed1d9440fd0e7340 100644 (file)
@@ -34,8 +34,7 @@
 
 
 static bitset_bindex
 
 
 static bitset_bindex
-abitset_resize (bitset src ATTRIBUTE_UNUSED,
-               bitset_bindex size ATTRIBUTE_UNUSED)
+abitset_resize (bitset src, bitset_bindex size)
 {
     /* These bitsets have a fixed size.  */
     if (BITSET_SIZE_ (src) != size)
 {
     /* These bitsets have a fixed size.  */
     if (BITSET_SIZE_ (src) != size)
index ddbef843668f3cc797abb32e38777a095eefbc88..5470c5a906e4108dfcd70468daaaea68661af545 100644 (file)
@@ -1,5 +1,5 @@
 /* General bitsets.
 /* General bitsets.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
@@ -45,6 +45,9 @@ bitset_bytes (enum bitset_type type, bitset_bindex n_bits)
 
   switch (type)
     {
 
   switch (type)
     {
+    default:
+      abort ();
+
     case BITSET_ARRAY:
       bytes = abitset_bytes (n_bits);
       break;
     case BITSET_ARRAY:
       bytes = abitset_bytes (n_bits);
       break;
@@ -60,9 +63,6 @@ bitset_bytes (enum bitset_type type, bitset_bindex n_bits)
     case BITSET_VARRAY:
       bytes = vbitset_bytes (n_bits);
       break;
     case BITSET_VARRAY:
       bytes = vbitset_bytes (n_bits);
       break;
-
-    default:
-      abort ();
     }
 
   return bytes;
     }
 
   return bytes;
@@ -78,6 +78,9 @@ bitset_init (bitset bset, bitset_bindex n_bits, enum bitset_type type)
 
   switch (type)
     {
 
   switch (type)
     {
+    default:
+      abort ();
+
     case BITSET_ARRAY:
       return abitset_init (bset, n_bits);
 
     case BITSET_ARRAY:
       return abitset_init (bset, n_bits);
 
@@ -89,9 +92,6 @@ bitset_init (bitset bset, bitset_bindex n_bits, enum bitset_type type)
 
     case BITSET_VARRAY:
       return vbitset_init (bset, n_bits);
 
     case BITSET_VARRAY:
       return vbitset_init (bset, n_bits);
-
-    default:
-      abort ();
     }
 }
 
     }
 }
 
@@ -421,6 +421,9 @@ bitset_op4_cmp (bitset dst, bitset src1, bitset src2, bitset src3,
 
   switch (op)
     {
 
   switch (op)
     {
+    default:
+      abort ();
+
     case BITSET_OP_OR_AND:
       bitset_or (tmp, src1, src2);
       changed = bitset_and_cmp (dst, src3, tmp);
     case BITSET_OP_OR_AND:
       bitset_or (tmp, src1, src2);
       changed = bitset_and_cmp (dst, src3, tmp);
@@ -435,9 +438,6 @@ bitset_op4_cmp (bitset dst, bitset src1, bitset src2, bitset src3,
       bitset_andn (tmp, src1, src2);
       changed = bitset_or_cmp (dst, src3, tmp);
       break;
       bitset_andn (tmp, src1, src2);
       changed = bitset_or_cmp (dst, src3, tmp);
       break;
-
-    default:
-      abort ();
     }
 
   bitset_free (tmp);
     }
 
   bitset_free (tmp);
index 0b59865d7f34d08c4cfea112bf4034d53a758b95..eb879979f4056398d59850bd27645b3f6cfdc17b 100644 (file)
@@ -1,5 +1,5 @@
 /* Bitset statistics.
 /* Bitset statistics.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
@@ -696,6 +696,9 @@ bitset_stats_init (bitset bset, bitset_bindex n_bits, enum bitset_type type)
      we are a wrapper over.  */
   switch (type)
     {
      we are a wrapper over.  */
   switch (type)
     {
+    default:
+      abort ();
+
     case BITSET_ARRAY:
       bytes = abitset_bytes (n_bits);
       sbset = xcalloc (1, bytes);
     case BITSET_ARRAY:
       bytes = abitset_bytes (n_bits);
       sbset = xcalloc (1, bytes);
@@ -719,9 +722,6 @@ bitset_stats_init (bitset bset, bitset_bindex n_bits, enum bitset_type type)
       sbset = xcalloc (1, bytes);
       vbitset_init (sbset, n_bits);
       break;
       sbset = xcalloc (1, bytes);
       vbitset_init (sbset, n_bits);
       break;
-
-    default:
-      abort ();
     }
 
   bset->s.bset = sbset;
     }
 
   bset->s.bset = sbset;
index 9ac85a2c1b574f1c9f402c7e201896e3dc99d4cc..34d1b6ca50bf50aba3416b274c4830dfae61b678 100644 (file)
@@ -1,5 +1,5 @@
 /* Functions to support expandable bitsets.
 /* Functions to support expandable bitsets.
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
@@ -322,6 +322,9 @@ ebitset_elt_find (bitset bset, bitset_bindex bindex,
 
   switch (mode)
     {
 
   switch (mode)
     {
+    default:
+      abort ();
+
     case EBITSET_FIND:
       return 0;
 
     case EBITSET_FIND:
       return 0;
 
@@ -337,9 +340,6 @@ ebitset_elt_find (bitset bset, bitset_bindex bindex,
 
     case EBITSET_SUBST:
       return &ebitset_zero_elts[0];
 
     case EBITSET_SUBST:
       return &ebitset_zero_elts[0];
-
-    default:
-      abort ();
     }
 }
 
     }
 }
 
@@ -1090,6 +1090,9 @@ ebitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
       dstp = EBITSET_WORDS (delt);
       switch (op)
        {
       dstp = EBITSET_WORDS (delt);
       switch (op)
        {
+       default:
+         abort ();
+
        case BITSET_OP_OR:
          for (i = 0; i < EBITSET_ELT_WORDS; i++, dstp++)
            {
        case BITSET_OP_OR:
          for (i = 0; i < EBITSET_ELT_WORDS; i++, dstp++)
            {
@@ -1141,9 +1144,6 @@ ebitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
                }
            }
          break;
                }
            }
          break;
-
-       default:
-         abort ();
        }
 
       if (!ebitset_elt_zero_p (delt))
        }
 
       if (!ebitset_elt_zero_p (delt))
index 9d3d95734221df11505d9422fd9ad61f5014dffb..55b9d7e4927742fa754bc466ee1778a2cea65b45 100644 (file)
@@ -1,5 +1,5 @@
 /* Functions to support link list bitsets.
 /* Functions to support link list bitsets.
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    This program is free software; you can redistribute it and/or modify
@@ -363,6 +363,9 @@ lbitset_elt_find (bitset bset, bitset_windex windex,
 
   switch (mode)
     {
 
   switch (mode)
     {
+    default:
+      abort ();
+
     case LBITSET_FIND:
       return 0;
 
     case LBITSET_FIND:
       return 0;
 
@@ -376,9 +379,6 @@ lbitset_elt_find (bitset bset, bitset_windex windex,
 
     case LBITSET_SUBST:
       return &lbitset_zero_elts[0];
 
     case LBITSET_SUBST:
       return &lbitset_zero_elts[0];
-
-    default:
-      abort ();
     }
 }
 
     }
 }
 
@@ -1117,6 +1117,9 @@ lbitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
       dstp = dtmp->words;
       switch (op)
        {
       dstp = dtmp->words;
       switch (op)
        {
+       default:
+         abort ();
+
        case BITSET_OP_OR:
          for (i = 0; i < LBITSET_ELT_WORDS; i++, dstp++)
            {
        case BITSET_OP_OR:
          for (i = 0; i < LBITSET_ELT_WORDS; i++, dstp++)
            {
@@ -1168,9 +1171,6 @@ lbitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
                }
            }
          break;
                }
            }
          break;
-
-       default:
-         abort ();
        }
 
       if (!lbitset_elt_zero_p (dtmp))
        }
 
       if (!lbitset_elt_zero_p (dtmp))
index a0296d6735b33acb93c7ae4fc7f4fe63a66f89cd..e2e9855f513d44197b52ce8411bfbcd19c13635b 100644 (file)
@@ -1,6 +1,6 @@
 /* Find and resolve or report look-ahead conflicts for bison,
 
 /* Find and resolve or report look-ahead conflicts for bison,
 
-   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -216,6 +216,9 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors)
 
          switch (symbols[i]->assoc)
            {
 
          switch (symbols[i]->assoc)
            {
+           default:
+             abort ();
+
            case right_assoc:
              log_resolution (redrule, i, right_resolution);
              flush_reduce (look_ahead_tokens, i);
            case right_assoc:
              log_resolution (redrule, i, right_resolution);
              flush_reduce (look_ahead_tokens, i);
@@ -233,9 +236,6 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors)
              /* Record an explicit error for this token.  */
              errors[nerrs++] = symbols[i];
              break;
              /* Record an explicit error for this token.  */
              errors[nerrs++] = symbols[i];
              break;
-
-           case undef_assoc:
-             abort ();
            }
       }
 
            }
       }
 
index 5c162b50d35f606cffb968d680f66bcfb291c399..65c55ab7c8807ac826cd0fdcb2493ad070eb1196 100644 (file)
@@ -94,8 +94,7 @@ set_goto_map (void)
          ngotos++;
 
          /* Abort if (ngotos + 1) would overflow.  */
          ngotos++;
 
          /* Abort if (ngotos + 1) would overflow.  */
-         if (ngotos == GOTO_NUMBER_MAXIMUM)
-           abort ();
+         assert (ngotos != GOTO_NUMBER_MAXIMUM);
 
          goto_map[TRANSITION_SYMBOL (sp, i) - ntokens]++;
        }
 
          goto_map[TRANSITION_SYMBOL (sp, i) - ntokens]++;
        }
@@ -154,8 +153,7 @@ map_goto (state_number s0, symbol_number sym)
 
   for (;;)
     {
 
   for (;;)
     {
-      if (high < low)
-       abort ();
+      assert (low <= high);
       middle = (low + high) / 2;
       s = from_state[middle];
       if (s == s0)
       middle = (low + high) / 2;
       s = from_state[middle];
       if (s == s0)
index ef65ef46af481826b19ab90c4614b1c11551b562..83a90e9556636d827aee54d5c8d0a300ad849ff1 100644 (file)
@@ -1,7 +1,7 @@
 /* Calculate which nonterminals can expand into the null string for Bison.
 
 /* Calculate which nonterminals can expand into the null string for Bison.
 
-   Copyright (C) 1984, 1989, 2000, 2001, 2002, 2003, 2004, 2005 Free
-   Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -104,8 +104,8 @@ nullable_compute (void)
        else
          {
            /* This rule has an empty RHS. */
        else
          {
            /* This rule has an empty RHS. */
-           if (item_number_as_rule_number (rules_ruleno->rhs[0]) != ruleno)
-             abort ();
+           assert (item_number_as_rule_number (rules_ruleno->rhs[0])
+                   == ruleno);
            if (rules_ruleno->useful
                && ! nullable[rules_ruleno->lhs->number - ntokens])
              {
            if (rules_ruleno->useful
                && ! nullable[rules_ruleno->lhs->number - ntokens])
              {
index d9112423a63b05e4aca1054b30cd15679cb8aa54..07978ed9610b4d21e00d5a32f4fc49478b2915a6 100644 (file)
@@ -239,8 +239,7 @@ prepare_rules (void)
       /* Merger-function index (GLR).  */
       merger[r] = rules[r].merger;
     }
       /* Merger-function index (GLR).  */
       merger[r] = rules[r].merger;
     }
-  if (i != nritems)
-    abort ();
+  assert (i == nritems);
 
   muscle_insert_item_number_table ("rhs", rhs, ritem[0], 1, nritems);
   muscle_insert_unsigned_int_table ("prhs", prhs, 0, 0, nrules);
 
   muscle_insert_item_number_table ("rhs", rhs, ritem[0], 1, nritems);
   muscle_insert_unsigned_int_table ("prhs", prhs, 0, 0, nrules);
@@ -351,8 +350,7 @@ token_definitions_output (FILE *out)
       /* At this stage, if there are literal aliases, they are part of
         SYMBOLS, so we should not find symbols which are the aliases
         here.  */
       /* At this stage, if there are literal aliases, they are part of
         SYMBOLS, so we should not find symbols which are the aliases
         here.  */
-      if (number == USER_NUMBER_ALIAS)
-       abort ();
+      assert (number != USER_NUMBER_ALIAS);
 
       /* Skip error token.  */
       if (sym == errtoken)
 
       /* Skip error token.  */
       if (sym == errtoken)
index 0744b3f292a6090397d40a4dd9ef350bc8531f46..56f11fd0eeda3cb8d2c467a5c2eda7e6d7b8fd93 100644 (file)
@@ -469,8 +469,7 @@ packgram (void)
        p = p->next;
     }
 
        p = p->next;
     }
 
-  if (itemno != nritems)
-    abort ();
+  assert (itemno == nritems);
 
   if (trace_flag & trace_sets)
     ritem_print (stderr);
 
   if (trace_flag & trace_sets)
     ritem_print (stderr);
@@ -554,8 +553,7 @@ reader (void)
     grammar = p;
   }
 
     grammar = p;
   }
 
-  if (! (nsyms <= SYMBOL_NUMBER_MAXIMUM && nsyms == ntokens + nvars))
-    abort ();
+  assert (nsyms <= SYMBOL_NUMBER_MAXIMUM && nsyms == ntokens + nvars);
 
   xfclose (gram_in);
 
 
   xfclose (gram_in);
 
index b14fb40c1f5e467de957a116e2cbe89e6267c35c..8a57af51b38930a891f2bc8a12983af8784f0133 100644 (file)
@@ -1,6 +1,7 @@
 /* Scan Bison Skeletons.                                       -*- C -*-
 
 /* Scan Bison Skeletons.                                       -*- C -*-
 
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+   Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #include "scan-skel.h"
 
 #define QPUTS(String) \
 #include "scan-skel.h"
 
 #define QPUTS(String) \
-   fputs (quotearg_style (c_quoting_style, (String)), yyout)
+   fputs (quotearg_style (c_quoting_style, String), yyout)
 
 #define BASE_QPUTS(File) \
 
 #define BASE_QPUTS(File) \
-   assert (File), QPUTS (base_name (File))
+   QPUTS (base_name (File))
 
 %}
 %%
 
 %}
 %%
   if (*file_name == '@')
     {
       if (strcmp (file_name, "@output_header_name@") == 0)
   if (*file_name == '@')
     {
       if (strcmp (file_name, "@output_header_name@") == 0)
-       {
-         assert (spec_defines_file);
-         file_name = spec_defines_file;
-       }
+       file_name = spec_defines_file;
       else if (strcmp (file_name, "@output_parser_name@") == 0)
       else if (strcmp (file_name, "@output_parser_name@") == 0)
-       {
-         assert (parser_file_name);
-         file_name = parser_file_name;
-       }
+       file_name = parser_file_name;
       else
        fatal ("invalid token in skeleton: %s", yytext);
     }
       else
        fatal ("invalid token in skeleton: %s", yytext);
     }
index 83e0108f159166d9d6c6adc844a385e6a18fb20b..4eb39f9f6ca34cfae6b2ac0d8ab99966488ea981 100644 (file)
@@ -61,8 +61,7 @@ transitions_to (transitions *shifts, symbol_number sym)
   int j;
   for (j = 0; ; j++)
     {
   int j;
   for (j = 0; ; j++)
     {
-      if (shifts->num <= j)
-       abort ();
+      assert (j < shifts->num);
       if (TRANSITION_SYMBOL (shifts, j) == sym)
        return shifts->states[j];
     }
       if (TRANSITION_SYMBOL (shifts, j) == sym)
        return shifts->states[j];
     }
@@ -136,8 +135,7 @@ state_new (symbol_number accessing_symbol,
   state *res;
   size_t items_size = nitems * sizeof *core;
 
   state *res;
   size_t items_size = nitems * sizeof *core;
 
-  if (STATE_NUMBER_MAXIMUM <= nstates)
-    abort ();
+  assert (nstates < STATE_NUMBER_MAXIMUM);
 
   res = xmalloc (offsetof (state, items) + items_size);
   res->number = nstates++;
 
   res = xmalloc (offsetof (state, items) + items_size);
   res->number = nstates++;
@@ -214,8 +212,7 @@ state_reduction_find (state *s, rule *r)
 void
 state_errs_set (state *s, int num, symbol **tokens)
 {
 void
 state_errs_set (state *s, int num, symbol **tokens)
 {
-  if (s->errs)
-    abort ();
+  assert (!s->errs);
   s->errs = errs_new (num, tokens);
 }
 
   s->errs = errs_new (num, tokens);
 }
 
index 1f2c17ee81ed7fc1a7dd4797568a6746cc523ecb..ef59c6eef70e1d7a95e40979970fca38ba47f2a5 100644 (file)
@@ -223,8 +223,7 @@ symbol_class_set (symbol *sym, symbol_class class, location loc, bool declaring)
 void
 symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
 {
 void
 symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
 {
-  if (sym->class != token_sym)
-    abort ();
+  assert (sym->class == token_sym);
 
   if (sym->user_token_number != USER_NUMBER_UNDEFINED
       && sym->user_token_number != user_token_number)
 
   if (sym->user_token_number != USER_NUMBER_UNDEFINED
       && sym->user_token_number != user_token_number)
@@ -295,8 +294,7 @@ symbol_make_alias (symbol *sym, symbol *symval, location loc)
       /* sym and symval combined are only one symbol.  */
       nsyms--;
       ntokens--;
       /* sym and symval combined are only one symbol.  */
       nsyms--;
       ntokens--;
-      if (ntokens != sym->number && ntokens != symval->number)
-       abort ();
+      assert (ntokens == sym->number || ntokens == symval->number);
       sym->number = symval->number =
        (symval->number < sym->number) ? symval->number : sym->number;
       symbol_type_set (symval, sym->type_name, loc);
       sym->number = symval->number =
        (symval->number < sym->number) ? symval->number : sym->number;
       symbol_type_set (symval, sym->type_name, loc);
@@ -389,8 +387,7 @@ symbol_pack (symbol *this)
            this->number = this->alias->number = 0;
          else
            {
            this->number = this->alias->number = 0;
          else
            {
-             if (this->alias->number == NUMBER_UNDEFINED)
-               abort ();
+             assert (this->alias->number != NUMBER_UNDEFINED);
              this->number = this->alias->number;
            }
        }
              this->number = this->alias->number;
            }
        }
@@ -399,10 +396,7 @@ symbol_pack (symbol *this)
        return true;
     }
   else /* this->class == token_sym */
        return true;
     }
   else /* this->class == token_sym */
-    {
-      if (this->number == NUMBER_UNDEFINED)
-       abort ();
-    }
+    assert (this->number != NUMBER_UNDEFINED);
 
   symbols[this->number] = this;
   return true;
 
   symbols[this->number] = this;
   return true;
index c1c45b49f2d57ff95ffff20a863c8c78c6d3b2a0..d6b45eeb908b973e5fcf00ab91b439772c463185 100644 (file)
@@ -64,8 +64,6 @@
 typedef size_t uintptr_t;
 #endif
 
 typedef size_t uintptr_t;
 #endif
 
-#include <assert.h>
-
 #include <verify.h>
 #include <xalloc.h>
 
 #include <verify.h>
 #include <xalloc.h>
 
@@ -216,6 +214,11 @@ do {                                               \
 } while (0)
 
 
 } while (0)
 
 
+/* Assertions.  <assert.h>'s assertions are too heavyweight, and can
+   be disabled too easily, so implement it separately here.  */
+#define assert(x) ((void) ((x) || (abort (), 0)))
+
+
 /*---------------------------------------------.
 | Debugging memory allocation (must be last).  |
 `---------------------------------------------*/
 /*---------------------------------------------.
 | Debugging memory allocation (must be last).  |
 `---------------------------------------------*/
index f88180e283a2cc67606c9a2186b3ac94d2203cc3..c938139b2b564592530576c4422ce3eac59e7c59 100644 (file)
@@ -202,16 +202,14 @@ conflict_row (state *s)
              && (actrow[j]
                  != rule_number_as_item_number (reds->rules[i]->number)))
            {
              && (actrow[j]
                  != rule_number_as_item_number (reds->rules[i]->number)))
            {
-             if (conflict_list_free <= 0)
-               abort ();
+             assert (0 < conflict_list_free);
              conflict_list[conflict_list_cnt] = reds->rules[i]->number + 1;
              conflict_list_cnt += 1;
              conflict_list_free -= 1;
            }
 
        /* Leave a 0 at the end.  */
              conflict_list[conflict_list_cnt] = reds->rules[i]->number + 1;
              conflict_list_cnt += 1;
              conflict_list_free -= 1;
            }
 
        /* Leave a 0 at the end.  */
-       if (conflict_list_free <= 0)
-         abort ();
+       assert (0 < conflict_list_free);
        conflict_list[conflict_list_cnt] = 0;
        conflict_list_cnt += 1;
        conflict_list_free -= 1;
        conflict_list[conflict_list_cnt] = 0;
        conflict_list_cnt += 1;
        conflict_list_free -= 1;
@@ -675,16 +673,14 @@ pack_vector (vector_number vector)
   base_number *to = tos[i];
   unsigned int *conflict_to = conflict_tos[i];
 
   base_number *to = tos[i];
   unsigned int *conflict_to = conflict_tos[i];
 
-  if (!t)
-    abort ();
+  assert (t);
 
   for (j = lowzero - from[0]; ; j++)
     {
       int k;
       bool ok = true;
 
 
   for (j = lowzero - from[0]; ; j++)
     {
       int k;
       bool ok = true;
 
-      if (table_size <= j)
-       abort ();
+      assert (j < table_size);
 
       for (k = 0; ok && k < t; k++)
        {
 
       for (k = 0; ok && k < t; k++)
        {
@@ -717,8 +713,7 @@ pack_vector (vector_number vector)
          if (loc > high)
            high = loc;
 
          if (loc > high)
            high = loc;
 
-         if (! (BASE_MINIMUM <= j && j <= BASE_MAXIMUM))
-           abort ();
+         assert (BASE_MINIMUM <= j && j <= BASE_MAXIMUM);
          return j;
        }
     }
          return j;
        }
     }
index 643a119839d0a269d5b2e09dfcfa7e1c95ec9fd0..25fbb64ec8e7253d3148cc422552b0c10be4a3de 100644 (file)
--- a/src/vcg.c
+++ b/src/vcg.c
@@ -1,6 +1,7 @@
 /* VCG description handler for Bison.
 
 /* VCG description handler for Bison.
 
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+   Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -213,6 +214,7 @@ get_color_str (enum color color)
 {
   switch (color)
     {
 {
   switch (color)
     {
+    default:           abort ();
     case white:                return "white";
     case blue:         return "blue";
     case red:          return "red";
     case white:                return "white";
     case blue:         return "blue";
     case red:          return "red";
@@ -245,7 +247,6 @@ get_color_str (enum color color)
     case orange:       return "orange";
     case orchid:       return "orchid";
     case black:                return "black";
     case orange:       return "orange";
     case orchid:       return "orchid";
     case black:                return "black";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -254,10 +255,10 @@ get_textmode_str (enum textmode textmode)
 {
   switch (textmode)
     {
 {
   switch (textmode)
     {
+    default:           abort ();
     case centered:     return "center";
     case left_justify: return "left_justify";
     case right_justify:        return "right_justify";
     case centered:     return "center";
     case left_justify: return "left_justify";
     case right_justify:        return "right_justify";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -266,11 +267,11 @@ get_shape_str (enum shape shape)
 {
   switch (shape)
     {
 {
   switch (shape)
     {
+    default:           abort ();
     case box:          return "box";
     case rhomb:                return "rhomb";
     case ellipse:      return "ellipse";
     case triangle:     return "triangle";
     case box:          return "box";
     case rhomb:                return "rhomb";
     case ellipse:      return "ellipse";
     case triangle:     return "triangle";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -279,9 +280,9 @@ get_decision_str (enum decision decision)
 {
   switch (decision)
     {
 {
   switch (decision)
     {
+    default:   abort ();
     case no:   return "no";
     case yes:  return "yes";
     case no:   return "no";
     case yes:  return "yes";
-    default:   abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -290,11 +291,11 @@ get_orientation_str (enum orientation orientation)
 {
   switch (orientation)
     {
 {
   switch (orientation)
     {
+    default:           abort ();
     case top_to_bottom:        return "top_to_bottom";
     case bottom_to_top: return "bottom_to_top";
     case left_to_right: return "left_to_right";
     case right_to_left: return "right_to_left";
     case top_to_bottom:        return "top_to_bottom";
     case bottom_to_top: return "bottom_to_top";
     case left_to_right: return "left_to_right";
     case right_to_left: return "right_to_left";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -303,10 +304,10 @@ get_node_alignment_str (enum alignment alignment)
 {
   switch (alignment)
     {
 {
   switch (alignment)
     {
+    default:           abort ();
     case center:       return "center";
     case top:          return "top";
     case bottom:       return "bottom";
     case center:       return "center";
     case top:          return "top";
     case bottom:       return "bottom";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -315,9 +316,9 @@ get_arrow_mode_str (enum arrow_mode arrow_mode)
 {
   switch (arrow_mode)
     {
 {
   switch (arrow_mode)
     {
+    default:           abort ();
     case fixed:                return "fixed";
     case free_a:       return "free";
     case fixed:                return "fixed";
     case free_a:       return "free";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -326,11 +327,11 @@ get_crossing_type_str (enum crossing_type crossing_type)
 {
   switch (crossing_type)
     {
 {
   switch (crossing_type)
     {
+    default:           abort ();
     case bary:         return "bary";
     case median:       return "median";
     case barymedian:   return "barymedian";
     case medianbary:   return "medianbary";
     case bary:         return "bary";
     case median:       return "median";
     case barymedian:   return "barymedian";
     case medianbary:   return "medianbary";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -341,11 +342,11 @@ get_view_str (enum view view)
      so it is an error here if view == normal_view.  */
   switch (view)
     {
      so it is an error here if view == normal_view.  */
   switch (view)
     {
+    default:           abort ();
     case cfish:                return "cfish";
     case pfish:                return "pfish";
     case fcfish:       return "fcfish";
     case fpfish:       return "fpfish";
     case cfish:                return "cfish";
     case pfish:                return "pfish";
     case fcfish:       return "fcfish";
     case fpfish:       return "fpfish";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -354,11 +355,11 @@ get_linestyle_str (enum linestyle linestyle)
 {
   switch (linestyle)
     {
 {
   switch (linestyle)
     {
+    default:           abort ();
     case continuous:   return "continuous";
     case dashed:       return "dashed";
     case dotted:       return "dotted";
     case invisible:    return "invisible";
     case continuous:   return "continuous";
     case dashed:       return "dashed";
     case dotted:       return "dotted";
     case invisible:    return "invisible";
-    default:           abort (); return NULL;
     }
 }
 
     }
 }
 
@@ -367,10 +368,10 @@ get_arrowstyle_str (enum arrowstyle arrowstyle)
 {
   switch (arrowstyle)
     {
 {
   switch (arrowstyle)
     {
+    default:   abort ();
     case solid:        return "solid";
     case line: return "line";
     case none: return "none";
     case solid:        return "solid";
     case line: return "line";
     case none: return "none";
-    default:   abort (); return NULL;
     }
 }
 
     }
 }