From 7ec491c07be298679b27d5939accc30de01d62d0 Mon Sep 17 00:00:00 2001 From: Mikhail Maltsev Date: Wed, 21 Oct 2015 21:16:31 +0000 Subject: [PATCH] [PATCH 1/9] ENABLE_CHECKING refactoring gcc/ * config.in: Regenerate. * configure: Regenerate. * configure.ac (CHECKING_P): Define. * system.h: Use CHECKING_P. libcpp/ * config.in: Regenerate. * configure: Regenerate. * configure.ac (CHECKING_P): Define. * system.h (fancy_abort): Declare. (abort): Define. (gcc_assert): Define. Use CHECKING_P. From-SVN: r229149 --- gcc/ChangeLog | 7 +++++++ gcc/config.in | 7 +++++++ gcc/configure | 9 +++++++-- gcc/configure.ac | 5 +++++ gcc/system.h | 4 +--- libcpp/ChangeLog | 9 +++++++++ libcpp/config.in | 3 +++ libcpp/configure | 5 +++++ libcpp/configure.ac | 4 ++++ libcpp/system.h | 21 ++++++++++++++++++--- 10 files changed, 66 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc3cfa7cb93..f12681937f6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-10-21 Mikhail Maltsev + + * config.in: Regenerate. + * configure: Regenerate. + * configure.ac (CHECKING_P): Define. + * system.h: Use CHECKING_P. + 2015-10-11 Jan Hubicka PR ipa/67056 diff --git a/gcc/config.in b/gcc/config.in index 093478c2840..48d7e6441e6 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -30,6 +30,13 @@ #endif +/* Define to 1 if you want more run-time sanity checks. This one gets a grab + bag of miscellaneous but relatively cheap checks. */ +#ifndef USED_FOR_TARGET +#undef CHECKING_P +#endif + + /* Define 0/1 to force the choice for exception handling model. */ #ifndef USED_FOR_TARGET #undef CONFIG_SJLJ_EXCEPTIONS diff --git a/gcc/configure b/gcc/configure index 6b160ae44a2..3122499da26 100755 --- a/gcc/configure +++ b/gcc/configure @@ -7096,7 +7096,12 @@ if test x$ac_checking != x ; then $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + $as_echo "#define CHECKING_P 1" >>confdefs.h + nocommon_flag=-fno-common +else + $as_echo "#define CHECKING_P 0" >>confdefs.h + fi if test x$ac_df_checking != x ; then @@ -18385,7 +18390,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18388 "configure" +#line 18393 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18491,7 +18496,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18494 "configure" +#line 18499 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index be721e6db3b..a30bb3b89e8 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -569,7 +569,12 @@ if test x$ac_checking != x ; then AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want more run-time sanity checks. This one gets a grab bag of miscellaneous but relatively cheap checks.]) + AC_DEFINE(CHECKING_P, 1, +[Define to 1 if you want more run-time sanity checks. This one gets a grab + bag of miscellaneous but relatively cheap checks.]) nocommon_flag=-fno-common +else + AC_DEFINE(CHECKING_P, 0) fi AC_SUBST(nocommon_flag) if test x$ac_df_checking != x ; then diff --git a/gcc/system.h b/gcc/system.h index 61790d74a72..f9c7e2a6128 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -714,13 +714,11 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; #define gcc_assert(EXPR) ((void)(0 && (EXPR))) #endif -#ifdef ENABLE_CHECKING +#if CHECKING_P #define gcc_checking_assert(EXPR) gcc_assert (EXPR) -#define CHECKING_P 1 #else /* N.B.: in release build EXPR is not evaluated. */ #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR))) -#define CHECKING_P 1 #endif /* Use gcc_unreachable() to mark unreachable locations (like an diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index d14a26108ce..972e9a5606f 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,12 @@ +2015-10-21 Mikhail Maltsev + + * config.in: Regenerate. + * configure: Regenerate. + * configure.ac (CHECKING_P): Define. + * system.h (fancy_abort): Declare. + (abort): Define. + (gcc_assert): Define. Use CHECKING_P. + 2015-10-13 Mikhail Maltsev * system.h (CHECKING_P, gcc_checking_assert): Define. diff --git a/libcpp/config.in b/libcpp/config.in index 8df00ec2357..5865eb363fc 100644 --- a/libcpp/config.in +++ b/libcpp/config.in @@ -3,6 +3,9 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD +/* Define to 1 if you want more run-time sanity checks. */ +#undef CHECKING_P + /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ diff --git a/libcpp/configure b/libcpp/configure index 8cf2f77cace..1c70c75eb44 100755 --- a/libcpp/configure +++ b/libcpp/configure @@ -7300,6 +7300,11 @@ if test x$ac_checking != x ; then $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + $as_echo "#define CHECKING_P 1" >>confdefs.h + +else + $as_echo "#define CHECKING_P 0" >>confdefs.h + fi if test x$ac_valgrind_checking != x ; then diff --git a/libcpp/configure.ac b/libcpp/configure.ac index 5f008a4a67f..3fcbe84f33e 100644 --- a/libcpp/configure.ac +++ b/libcpp/configure.ac @@ -166,6 +166,10 @@ IFS="$ac_save_IFS" if test x$ac_checking != x ; then AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want more run-time sanity checks.]) + AC_DEFINE(CHECKING_P, 1, +[Define to 1 if you want more run-time sanity checks.]) +else + AC_DEFINE(CHECKING_P, 0) fi if test x$ac_valgrind_checking != x ; then diff --git a/libcpp/system.h b/libcpp/system.h index 20f07bbe261..2250f10459c 100644 --- a/libcpp/system.h +++ b/libcpp/system.h @@ -391,13 +391,28 @@ extern void abort (void); #define __builtin_expect(a, b) (a) #endif -#ifdef ENABLE_CHECKING +/* Redefine abort to report an internal error w/o coredump, and + reporting the location of the error in the source file. */ +extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; +#define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__) + +/* Use gcc_assert(EXPR) to test invariants. */ +#if ENABLE_ASSERT_CHECKING +#define gcc_assert(EXPR) \ + ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0)) +#elif (GCC_VERSION >= 4005) +#define gcc_assert(EXPR) \ + ((void)(__builtin_expect (!(EXPR), 0) ? __builtin_unreachable (), 0 : 0)) +#else +/* Include EXPR, so that unused variable warnings do not occur. */ +#define gcc_assert(EXPR) ((void)(0 && (EXPR))) +#endif + +#if CHECKING_P #define gcc_checking_assert(EXPR) gcc_assert (EXPR) -#define CHECKING_P 1 #else /* N.B.: in release build EXPR is not evaluated. */ #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR))) -#define CHECKING_P 1 #endif /* Provide a fake boolean type. We make no attempt to use the -- 2.30.2