mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
This is based on what is recommended by both Scott Meyers, in 'Effective
C++', and Andrei Alexandrescu and Herb Sutter in 'C++ Coding Standards'.
Use a static_cast on void* rather than directly use a reinterpret_cast,
which can have nefarious effects on objects. However, even though following
this guideline is good practice in general, I am not quite sure how relevant
it is when applied to conversions from POD to objects. Actually, it might
very well be the opposite: isn't this exactly what reinterpret_cast is for?
What we really want *is* to transmit the memory map as a series of bytes,
which, if I am correct, falls into the kind of "low level" hack for which
this cast is meant.
In any case, this silences the warning, which will be greatly appreciated by
anyone using variants with a compiler supporting -fstrict-aliasing.
* data/variant.hh (as): Here.
* tests/c++.at (Exception safety, C++ Variant-based Symbols, Variants):
Don't use NO_STRICT_ALIAS_CXXFLAGS (revert commit ddb9db15), as type punning
is no longer an issue.
* tests/atlocal.in, configure.ac (NO_STRICT_ALIAS_CXXFLAGS): Remove
definition.
* examples/local.mk (NO_STRICT_ALIAS_CXXFLAGS): Remove from AM_CXXFLAGS.
* doc/bison.texi: Don't mention type punning issues.
112 lines
3.2 KiB
Bash
112 lines
3.2 KiB
Bash
# @configure_input@ -*- shell-script -*-
|
|
# Configurable variable values for Bison test suite.
|
|
|
|
# Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
#
|
|
# 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
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# We need `config.h'.
|
|
CPPFLAGS="-I$abs_top_builddir/lib @CPPFLAGS@"
|
|
|
|
# Don't just check if $POSIXLY_CORRECT is set, as Bash, when launched
|
|
# as /bin/sh, sets the shell variable POSIXLY_CORRECT to y, but not
|
|
# the environment variable.
|
|
if env | grep '^POSIXLY_CORRECT=' >/dev/null; then
|
|
POSIXLY_CORRECT_IS_EXPORTED=true
|
|
else
|
|
POSIXLY_CORRECT_IS_EXPORTED=false
|
|
fi
|
|
|
|
## ------------------- ##
|
|
## C/C++ Compilation. ##
|
|
## ------------------- ##
|
|
|
|
: ${CC='@CC@'}
|
|
: ${CXX='@CXX@'}
|
|
|
|
# Is the compiler GCC?
|
|
GCC='@GCC@'
|
|
|
|
# Sometimes a test group needs to ignore gcc warnings, so it locally
|
|
# sets CFLAGS to this.
|
|
NO_WERROR_CFLAGS='@CFLAGS@ @WARN_CFLAGS@ @WARN_CFLAGS_TEST@'
|
|
NO_WERROR_CXXFLAGS='@CXXFLAGS@ @WARN_CXXFLAGS@ @WARN_CXXFLAGS_TEST@'
|
|
|
|
# But most of the time, we want -Werror.
|
|
CFLAGS="$NO_WERROR_CFLAGS @WERROR_CFLAGS@"
|
|
CXXFLAGS="$NO_WERROR_CXXFLAGS @WERROR_CXXFLAGS@"
|
|
|
|
# If 'exit 77'; skip all C++ tests; otherwise ':'.
|
|
BISON_CXX_WORKS='@BISON_CXX_WORKS@'
|
|
|
|
# Whether the compiler supports POSIXLY_CORRECT defined.
|
|
: ${C_COMPILER_POSIXLY_CORRECT='@C_COMPILER_POSIXLY_CORRECT@'}
|
|
: ${CXX_COMPILER_POSIXLY_CORRECT='@CXX_COMPILER_POSIXLY_CORRECT@'}
|
|
|
|
if $POSIXLY_CORRECT_IS_EXPORTED; then
|
|
$C_COMPILER_POSIXLY_CORRECT ||
|
|
BISON_C_WORKS="as_fn_error 77 POSIXLY_CORRECT"
|
|
$CXX_COMPILER_POSIXLY_CORRECT ||
|
|
BISON_CXX_WORKS="as_fn_error 77 POSIXLY_CORRECT"
|
|
fi
|
|
|
|
# Handle --compile-c-with-cxx here, once CXX and CXXFLAGS are known.
|
|
if "$at_arg_compile_c_with_cxx"; then
|
|
CC_IS_CXX=1
|
|
CC=$CXX
|
|
NO_WERROR_CFLAGS=$NO_WERROR_CXXFLAGS
|
|
CFLAGS=$CXXFLAGS
|
|
BISON_C_WORKS=$BISON_CXX_WORKS
|
|
else
|
|
CC_IS_CXX=0
|
|
fi
|
|
|
|
|
|
## ------- ##
|
|
## Other. ##
|
|
## ------- ##
|
|
|
|
# Empty if no javac was found
|
|
CONF_JAVAC='@CONF_JAVAC@'
|
|
|
|
# Empty if no Java VM was found
|
|
CONF_JAVA='@CONF_JAVA@'
|
|
|
|
# We need egrep and perl.
|
|
: ${EGREP='@EGREP@'}
|
|
: ${PERL='@PERL@'}
|
|
|
|
# Use simple quotes (lib/quote.c).
|
|
LC_CTYPE=C
|
|
export LC_CTYPE
|
|
|
|
# Are special link options needed?
|
|
LDFLAGS='@LDFLAGS@'
|
|
|
|
# Are special libraries needed?
|
|
LIBS="$abs_top_builddir/lib/libbison.a @LIBS@ @INTLLIBS@"
|
|
|
|
# Empty if no xsltproc was found
|
|
: ${XSLTPROC='@XSLTPROC@'}
|
|
|
|
# Don't just check if $POSIXLY_CORRECT is set, as Bash, when launched
|
|
# as /bin/sh, sets the shell variable POSIXLY_CORRECT to y, but not
|
|
# the environment variable.
|
|
: ${C_COMPILER_POSIXLY_CORRECT='@C_COMPILER_POSIXLY_CORRECT@'}
|
|
if env | grep '^POSIXLY_CORRECT=' >/dev/null; then
|
|
POSIXLY_CORRECT_IS_EXPORTED=true
|
|
else
|
|
POSIXLY_CORRECT_IS_EXPORTED=false
|
|
fi
|