Fix some porting glitches found by Nelson H. F. Beebe.

* lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
compilers that don't understand that abort () does not return.
* src/state.c (transitions_to): Likewise.
* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
that '#include <cstdlib>' works.
* src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
(INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
#undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
for the benefit of some pre-C99 compilers.
This commit is contained in:
Paul Eggert
2006-01-20 01:59:30 +00:00
parent b6e3facf99
commit c21493b89f
5 changed files with 47 additions and 15 deletions

View File

@@ -1,5 +1,16 @@
2006-01-19 Paul Eggert <eggert@cs.ucla.edu> 2006-01-19 Paul Eggert <eggert@cs.ucla.edu>
Fix some porting glitches found by Nelson H. F. Beebe.
* lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
compilers that don't understand that abort () does not return.
* src/state.c (transitions_to): Likewise.
* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
that '#include <cstdlib>' works.
* src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
(INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
#undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
for the benefit of some pre-C99 compilers.
* bootstrap: Undo changes to gnulib files that autoreconf made. * bootstrap: Undo changes to gnulib files that autoreconf made.
Minor fixups to get 'make maintainer-check' to work. Minor fixups to get 'make maintainer-check' to work.

View File

@@ -1,5 +1,5 @@
/* Array bitsets. /* Array bitsets.
Copyright (C) 2002, 2003 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@@ -37,11 +37,11 @@ static bitset_bindex
abitset_resize (bitset src ATTRIBUTE_UNUSED, abitset_resize (bitset src ATTRIBUTE_UNUSED,
bitset_bindex size ATTRIBUTE_UNUSED) bitset_bindex size ATTRIBUTE_UNUSED)
{ {
if (BITSET_SIZE_ (src) == size)
return size;
/* These bitsets have a fixed size. */ /* These bitsets have a fixed size. */
abort (); if (BITSET_SIZE_ (src) != size)
abort ();
return size;
} }
/* Find list of up to NUM bits set in BSET starting from and including /* Find list of up to NUM bits set in BSET starting from and including

View File

@@ -1,7 +1,7 @@
# -*- Autoconf -*- # -*- Autoconf -*-
# Sanity-test a C++ compiler. # Sanity-test a C++ compiler.
# #
# Copyright (C) 2004 Free Software Foundation, Inc. # Copyright (C) 2004, 2006 Free Software Foundation, Inc.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA # 02110-1301 USA
# Written by Paul Eggert <eggert@cs.ucla.edu>. # Written by Paul Eggert.
AC_DEFUN([BISON_TEST_FOR_WORKING_CXX_COMPILER], AC_DEFUN([BISON_TEST_FOR_WORKING_CXX_COMPILER],
[ [
@@ -27,7 +27,8 @@ AC_DEFUN([BISON_TEST_FOR_WORKING_CXX_COMPILER],
[AC_LANG_PUSH([C++]) [AC_LANG_PUSH([C++])
AC_RUN_IFELSE( AC_RUN_IFELSE(
[AC_LANG_PROGRAM( [AC_LANG_PROGRAM(
[#include <iostream> [#include <cstdlib>
#include <iostream>
using namespace std;], using namespace std;],
[std::cerr << ""; [std::cerr << "";
cout << "";])], cout << "";])],

View File

@@ -1,6 +1,7 @@
/* Type definitions for nondeterministic finite state machine for Bison. /* Type definitions for nondeterministic finite state machine 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.
@@ -58,10 +59,13 @@ state *
transitions_to (transitions *shifts, symbol_number sym) transitions_to (transitions *shifts, symbol_number sym)
{ {
int j; int j;
for (j = 0; j < shifts->num; j++) for (j = 0; ; j++)
if (TRANSITION_SYMBOL (shifts, j) == sym) {
return shifts->states[j]; if (shifts->num <= j)
abort (); abort ();
if (TRANSITION_SYMBOL (shifts, j) == sym)
return shifts->states[j];
}
} }

View File

@@ -1,7 +1,7 @@
/* System-dependent definitions for Bison. /* System-dependent definitions for Bison.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
Foundation, Inc. Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -20,6 +20,22 @@
#ifndef BISON_SYSTEM_H #ifndef BISON_SYSTEM_H
#define BISON_SYSTEM_H #define BISON_SYSTEM_H
/* flex 2.5.31 gratutiously defines macros like INT8_MIN. But this
runs afoul of pre-C99 compilers that have <inttypes.h> or
<stdint.h>, which are included below if available. It also runs
afoul of pre-C99 compilers that define these macros in <limits.h>. */
#if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901
# undef INT8_MIN
# undef INT16_MIN
# undef INT32_MIN
# undef INT8_MAX
# undef INT16_MAX
# undef UINT8_MAX
# undef INT32_MAX
# undef UINT16_MAX
# undef UINT32_MAX
#endif
#include <limits.h> #include <limits.h>
#include <stddef.h> #include <stddef.h>
#include <stdlib.h> #include <stdlib.h>