Port to GCC 2.95. First two problems reported by Michael Deutschmann in

<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.

* src/parse-gram.y (symbol_declaration): Don't put statements
before declarations; it's not portable to C89.
* src/scan-code.l (handle_action_at): Likewise.

* src/scan-code.l: Always initialize braces_level; the old code
left it uninitialized and therefore had undefined behavior.

Don't attempt to redefine 'assert', since it runs afoul of
systems where standard headers (mistakenly) include <assert.h>.
Instead, define and use our own alternative, called 'aver'.
* src/reader.c: Don't include assert.h, since we no longer
use assert.
* src/scan-code.l: Likewise.
* src/system.h (assert): Remove, replacing with....
(aver): New function, taking a bool arg.  All uses changed.
* src/tables.c (pack_vector): Ensure that aver arg is bool,
not merely an integer.
This commit is contained in:
Paul Eggert
2006-09-15 16:34:48 +00:00
parent 3fa3725adb
commit 4f82b42a9d
13 changed files with 78 additions and 48 deletions

View File

@@ -136,6 +136,21 @@ typedef size_t uintptr_t;
#include <stdbool.h>
/*-------------.
| Assertions. |
`-------------*/
/* <assert.h>'s assertions are too heavyweight, and can be disabled
too easily, so use aver rather than assert. */
static inline void
aver (bool assertion)
{
if (! assertion)
abort ();
}
/*-----------.
| Obstacks. |
`-----------*/
@@ -210,11 +225,6 @@ do { \
} 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). |
`---------------------------------------------*/