diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-28 14:01:40 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-28 14:01:40 +0000 |
commit | b90976fa555d12d06334a2bc45af8e78b142006e (patch) | |
tree | a5bc6249aa24285c664840fc0a7c18d7aea148b9 | |
parent | 96902209711de85fd2c86f94b86b5c37295765bb (diff) | |
download | gcc-b90976fa555d12d06334a2bc45af8e78b142006e.tar.gz |
2014-04-28 Richard Biener <rguenther@suse.de>
* configure.ac: Do valgrind header checks unconditionally.
Add --enable-valgrind-annotations.
* system.h: Guard valgrind header inclusion with
ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING.
* alloc-pool.c (pool_alloc, pool_free): Use
ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING
to guard possibly dead code.
* config.in: Regenerated.
* configure: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209861 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/alloc-pool.c | 6 | ||||
-rw-r--r-- | gcc/config.in | 6 | ||||
-rwxr-xr-x | gcc/configure | 65 | ||||
-rw-r--r-- | gcc/configure.ac | 54 | ||||
-rw-r--r-- | gcc/system.h | 2 |
6 files changed, 101 insertions, 44 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 89930b0042c..3b3f613464d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2014-04-28 Richard Biener <rguenther@suse.de> + + * configure.ac: Do valgrind header checks unconditionally. + Add --enable-valgrind-annotations. + * system.h: Guard valgrind header inclusion with + ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING. + * alloc-pool.c (pool_alloc, pool_free): Use + ENABLE_VALGRIND_ANNOTATIONS instead of ENABLE_VALGRIND_CHECKING + to guard possibly dead code. + * config.in: Regenerated. + * configure: Likewise. + 2014-04-28 Jeff Law <law@redhat.com> PR tree-optimization/60902 diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c index dfb13ce55fb..87fbd8556fb 100644 --- a/gcc/alloc-pool.c +++ b/gcc/alloc-pool.c @@ -250,7 +250,7 @@ void * pool_alloc (alloc_pool pool) { alloc_pool_list header; -#ifdef ENABLE_VALGRIND_CHECKING +#ifdef ENABLE_VALGRIND_ANNOTATIONS int size; #endif @@ -265,7 +265,7 @@ pool_alloc (alloc_pool pool) } gcc_checking_assert (pool); -#ifdef ENABLE_VALGRIND_CHECKING +#ifdef ENABLE_VALGRIND_ANNOTATIONS size = pool->elt_size - offsetof (allocation_object, u.data); #endif @@ -334,7 +334,7 @@ void pool_free (alloc_pool pool, void *ptr) { alloc_pool_list header; -#if defined(ENABLE_VALGRIND_CHECKING) || defined(ENABLE_CHECKING) +#if defined(ENABLE_VALGRIND_ANNOTATIONS) || defined(ENABLE_CHECKING) int size; size = pool->elt_size - offsetof (allocation_object, u.data); #endif diff --git a/gcc/config.in b/gcc/config.in index cebe0e5349c..c0ba36ea98b 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -172,6 +172,12 @@ #endif +/* Define to get calls to the valgrind runtime enabled. */ +#ifndef USED_FOR_TARGET +#undef ENABLE_VALGRIND_ANNOTATIONS +#endif + + /* Define if you want to run subprograms and generated programs through valgrind (a memory checker). This is extremely expensive. */ #ifndef USED_FOR_TARGET diff --git a/gcc/configure b/gcc/configure index e806873a04e..d912261c1cf 100755 --- a/gcc/configure +++ b/gcc/configure @@ -882,6 +882,7 @@ enable_werror_always enable_checking enable_coverage enable_gather_detailed_mem_stats +enable_valgrind_annotations with_stabs enable_multilib enable_multiarch @@ -1591,6 +1592,8 @@ Optional Features: Values are opt, noopt, default is noopt --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering + --enable-valgrind-annotations + enable valgrind runtime interaction --enable-multilib enable library support for multiple ABIs --enable-multiarch enable support for multiarch paths --enable-__cxa_atexit enable __cxa_atexit for C++ @@ -6772,12 +6775,11 @@ fi -if test x$ac_valgrind_checking != x ; then - # It is certainly possible that there's valgrind but no valgrind.h. - # GCC relies on making annotations so we must have both. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VALGRIND_DISCARD in <valgrind/memcheck.h>" >&5 +# It is certainly possible that there's valgrind but no valgrind.h. +# GCC relies on making annotations so we must have both. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VALGRIND_DISCARD in <valgrind/memcheck.h>" >&5 $as_echo_n "checking for VALGRIND_DISCARD in <valgrind/memcheck.h>... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <valgrind/memcheck.h> #ifndef VALGRIND_DISCARD @@ -6790,11 +6792,11 @@ else gcc_cv_header_valgrind_memcheck_h=no fi rm -f conftest.err conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_valgrind_memcheck_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_valgrind_memcheck_h" >&5 $as_echo "$gcc_cv_header_valgrind_memcheck_h" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VALGRIND_DISCARD in <memcheck.h>" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VALGRIND_DISCARD in <memcheck.h>" >&5 $as_echo_n "checking for VALGRIND_DISCARD in <memcheck.h>... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <memcheck.h> #ifndef VALGRIND_DISCARD @@ -6807,8 +6809,20 @@ else gcc_cv_header_memcheck_h=no fi rm -f conftest.err conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_memcheck_h" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_memcheck_h" >&5 $as_echo "$gcc_cv_header_memcheck_h" >&6; } +if test $gcc_cv_header_valgrind_memcheck_h = yes; then + +$as_echo "#define HAVE_VALGRIND_MEMCHECK_H 1" >>confdefs.h + +fi +if test $gcc_cv_header_memcheck_h = yes; then + +$as_echo "#define HAVE_MEMCHECK_H 1" >>confdefs.h + +fi + +if test x$ac_valgrind_checking != x ; then # Prepare PATH_SEPARATOR. # The user is always right. @@ -6887,16 +6901,6 @@ fi $as_echo "#define ENABLE_VALGRIND_CHECKING 1" >>confdefs.h - if test $gcc_cv_header_valgrind_memcheck_h = yes; then - -$as_echo "#define HAVE_VALGRIND_MEMCHECK_H 1" >>confdefs.h - - fi - if test $gcc_cv_header_memcheck_h = yes; then - -$as_echo "#define HAVE_MEMCHECK_H 1" >>confdefs.h - - fi fi @@ -6939,6 +6943,25 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Check whether --enable-valgrind-annotations was given. +if test "${enable_valgrind_annotations+set}" = set; then : + enableval=$enable_valgrind_annotations; +else + enable_valgrind_annotations=no +fi + +if test x$enable_valgrind_annotations != xno \ + || test x$ac_valgrind_checking != x; then + if (test $have_valgrind_h = no \ + && test $gcc_cv_header_memcheck_h = no \ + && test $gcc_cv_header_valgrind_memcheck_h = no); then + as_fn_error "*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h" "$LINENO" 5 + fi + +$as_echo "#define ENABLE_VALGRIND_ANNOTATIONS 1" >>confdefs.h + +fi + # ------------------------------- # Miscenalleous configure options # ------------------------------- @@ -17971,7 +17994,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17974 "configure" +#line 17997 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18077,7 +18100,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18080 "configure" +#line 18103 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index a3154bb32f1..5565524c89a 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -514,27 +514,36 @@ dnl # an if statement. This was the source of very frustrating bugs dnl # in converting to autoconf 2.5x! AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no) -if test x$ac_valgrind_checking != x ; then - # It is certainly possible that there's valgrind but no valgrind.h. - # GCC relies on making annotations so we must have both. - AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>) - AC_PREPROC_IFELSE([AC_LANG_SOURCE( - [[#include <valgrind/memcheck.h> +# It is certainly possible that there's valgrind but no valgrind.h. +# GCC relies on making annotations so we must have both. +AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>) +AC_PREPROC_IFELSE([AC_LANG_SOURCE( + [[#include <valgrind/memcheck.h> #ifndef VALGRIND_DISCARD #error VALGRIND_DISCARD not defined #endif]])], [gcc_cv_header_valgrind_memcheck_h=yes], [gcc_cv_header_valgrind_memcheck_h=no]) - AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h) - AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>) - AC_PREPROC_IFELSE([AC_LANG_SOURCE( - [[#include <memcheck.h> +AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h) +AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>) +AC_PREPROC_IFELSE([AC_LANG_SOURCE( + [[#include <memcheck.h> #ifndef VALGRIND_DISCARD #error VALGRIND_DISCARD not defined #endif]])], [gcc_cv_header_memcheck_h=yes], [gcc_cv_header_memcheck_h=no]) - AC_MSG_RESULT($gcc_cv_header_memcheck_h) +AC_MSG_RESULT($gcc_cv_header_memcheck_h) +if test $gcc_cv_header_valgrind_memcheck_h = yes; then + AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1, + [Define if valgrind's valgrind/memcheck.h header is installed.]) +fi +if test $gcc_cv_header_memcheck_h = yes; then + AC_DEFINE(HAVE_MEMCHECK_H, 1, + [Define if valgrind's memcheck.h header is installed.]) +fi + +if test x$ac_valgrind_checking != x ; then AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind, [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1]) if test "x$valgrind_path" = "x" \ @@ -548,14 +557,6 @@ if test x$ac_valgrind_checking != x ; then AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1, [Define if you want to run subprograms and generated programs through valgrind (a memory checker). This is extremely expensive.]) - if test $gcc_cv_header_valgrind_memcheck_h = yes; then - AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1, - [Define if valgrind's valgrind/memcheck.h header is installed.]) - fi - if test $gcc_cv_header_memcheck_h = yes; then - AC_DEFINE(HAVE_MEMCHECK_H, 1, - [Define if valgrind's memcheck.h header is installed.]) - fi fi AC_SUBST(valgrind_path_defines) AC_SUBST(valgrind_command) @@ -594,6 +595,21 @@ gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats, [Define to enable detailed memory allocation stats gathering.]) +AC_ARG_ENABLE(valgrind-annotations, +[AS_HELP_STRING([--enable-valgrind-annotations], + [enable valgrind runtime interaction])], [], +[enable_valgrind_annotations=no]) +if test x$enable_valgrind_annotations != xno \ + || test x$ac_valgrind_checking != x; then + if (test $have_valgrind_h = no \ + && test $gcc_cv_header_memcheck_h = no \ + && test $gcc_cv_header_valgrind_memcheck_h = no); then + AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h]) + fi + AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1, +[Define to get calls to the valgrind runtime enabled.]) +fi + # ------------------------------- # Miscenalleous configure options # ------------------------------- diff --git a/gcc/system.h b/gcc/system.h index 42bc509f2cd..892271f58a8 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1025,7 +1025,7 @@ helper_const_non_const_cast (const char *p) #endif #endif -#ifdef ENABLE_VALGRIND_CHECKING +#ifdef ENABLE_VALGRIND_ANNOTATIONS # ifdef HAVE_VALGRIND_MEMCHECK_H # include <valgrind/memcheck.h> # elif defined HAVE_MEMCHECK_H |