From 033eb5671769a4c681a44aad08a454e667e08502 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 17 Oct 2018 13:56:05 +0000 Subject: [PATCH] Run selftests for C++ as well as C gcc/ChangeLog: * Makefile.in (SELFTEST_TARGETS): New. (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS). (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to c/Make-lang.in. (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) (selftest-c++-gdb, selftest-c++-valgrind): Move to cp/Make-lang.in. * configure: Regenerate. * configure.ac (selftest_languages): New. gcc/brig/ChangeLog: * Make-lang.in (selftest-brig): New. gcc/c/ChangeLog: * Make-lang.in (selftest-c): New. (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move here from gcc/Makefile.in. gcc/cp/ChangeLog: * Make-lang.in (selftest-c++): New. (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) (selftest-c++-gdb, selftest-c++-valgrind): Move here from gcc/Makefile.in. gcc/fortran/ChangeLog: * Make-lang.in (selftest-fortran): New. gcc/go/ChangeLog: * Make-lang.in (selftest-go): New. gcc/jit/ChangeLog: * Make-lang.in (selftest-jit): New. gcc/lto/ChangeLog: * Make-lang.in (selftest-lto): New. gcc/objc/ChangeLog: * Make-lang.in (selftest-objc): New. gcc/objcp/ChangeLog: * Make-lang.in (selftest-obj-c++): New. From-SVN: r265240 --- gcc/ChangeLog | 13 ++++++++ gcc/Makefile.in | 52 +++--------------------------- gcc/ada/gcc-interface/Make-lang.in | 3 ++ gcc/brig/ChangeLog | 4 +++ gcc/brig/Make-lang.in | 3 ++ gcc/c/ChangeLog | 7 ++++ gcc/c/Make-lang.in | 32 ++++++++++++++++++ gcc/configure | 12 +++++-- gcc/configure.ac | 7 ++++ gcc/cp/ChangeLog | 7 ++++ gcc/cp/Make-lang.in | 26 +++++++++++++++ gcc/fortran/ChangeLog | 4 +++ gcc/fortran/Make-lang.in | 3 ++ gcc/go/ChangeLog | 4 +++ gcc/go/Make-lang.in | 3 ++ gcc/jit/ChangeLog | 4 +++ gcc/jit/Make-lang.in | 3 ++ gcc/lto/ChangeLog | 4 +++ gcc/lto/Make-lang.in | 3 ++ gcc/objc/ChangeLog | 4 +++ gcc/objc/Make-lang.in | 3 ++ gcc/objcp/ChangeLog | 4 +++ gcc/objcp/Make-lang.in | 3 ++ 23 files changed, 159 insertions(+), 49 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6cfaac1690d..1332e08e5ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2018-10-17 David Malcolm + + * Makefile.in (SELFTEST_TARGETS): New. + (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS). + (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) + (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to + c/Make-lang.in. + (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) + (selftest-c++-gdb, selftest-c++-valgrind): Move to + cp/Make-lang.in. + * configure: Regenerate. + * configure.ac (selftest_languages): New. + 2018-10-17 Aldy Hernandez * tree-vrp.c (extract_range_from_multiplicative_op): Remove diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 116ed6ea8a5..52240d17f3d 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1935,62 +1935,20 @@ DEVNULL=$(if $(findstring mingw,$(build)),nul,/dev/null) SELFTEST_FLAGS = -nostdinc $(DEVNULL) -S -o $(DEVNULL) \ -fself-test=$(srcdir)/testsuite/selftests -C_SELFTEST_FLAGS = -xc $(SELFTEST_FLAGS) -CPP_SELFTEST_FLAGS = -xc++ $(SELFTEST_FLAGS) - SELFTEST_DEPS = $(GCC_PASSES) stmp-int-hdrs $(srcdir)/testsuite/selftests -C_SELFTEST_DEPS = cc1$(exeext) $(SELFTEST_DEPS) -CPP_SELFTEST_DEPS = cc1plus$(exeext) $(SELFTEST_DEPS) - # Run the selftests during the build once we have a driver and the frontend, # so that self-test failures are caught as early as possible. # Use "s-selftest-FE" to ensure that we only run the selftests if the # driver, frontend, or selftest data change. .PHONY: selftest -# By default, only run the selftests within the C frontend -selftest: s-selftest-c - -# C selftests -s-selftest-c: $(C_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) - $(STAMP) $@ - -# Convenience methods for running C selftests under gdb: -.PHONY: selftest-c-gdb -selftest-c-gdb: $(C_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \ - -wrapper gdb,--args - -.PHONY: selftest-gdb -selftest-gdb: selftest-c-gdb - -# Convenience methods for running C selftests under valgrind: -.PHONY: selftest-c-valgrind -selftest-c-valgrind: $(C_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \ - -wrapper valgrind,--leak-check=full - -.PHONY: selftest-valgrind -selftest-valgrind: selftest-c-valgrind - -# C++ selftests -s-selftest-c++: $(CPP_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) - $(STAMP) $@ +# Potentially run all selftest-. The various /Make-lang.in can +# require the selftests to be run by defining their selftest- as +# s-selftest-. Otherwise, they should define it as empty. -# Convenience method for running C++ selftests under gdb: -.PHONY: selftest-c++-gdb -selftest-c++-gdb: $(CPP_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \ - -wrapper gdb,--args - -# Convenience method for running C++ selftests under valgrind: -.PHONY: selftest-c++-valgrind -selftest-c++-valgrind: $(CPP_SELFTEST_DEPS) - $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \ - -wrapper valgrind,--leak-check=full +SELFTEST_TARGETS = @selftest_languages@ +selftest: $(SELFTEST_TARGETS) # Recompile all the language-independent object files. # This is used only if the user explicitly asks for it. diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index 4866c2ad6a0..56020922288 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -930,6 +930,9 @@ check_gnat_parallelize = 1000 check-ada: check-acats check-gnat check-ada-subtargets: check-acats-subtargets check-gnat-subtargets +# No ada-specific selftests +selftest-ada: + ACATSDIR = $(TESTSUITEDIR)/ada/acats ACATSCMD = run_acats.sh diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog index f8749b46e61..18f226967c0 100644 --- a/gcc/brig/ChangeLog +++ b/gcc/brig/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-brig): New. + 2018-07-20 Martin Sebor PR middle-end/82063 diff --git a/gcc/brig/Make-lang.in b/gcc/brig/Make-lang.in index 8799aa78ab2..07c038cbc58 100644 --- a/gcc/brig/Make-lang.in +++ b/gcc/brig/Make-lang.in @@ -148,6 +148,9 @@ brig.srcman: doc/gccbrig.1 lang_checks += check-brig +# No brig-specific selftests +selftest-brig: + # Install hooks. brig.install-common: installdirs diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 720aadcd0ea..4807a322527 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,10 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-c): New. + (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) + (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move here + from gcc/Makefile.in. + 2018-10-02 Richard Biener * c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE. diff --git a/gcc/c/Make-lang.in b/gcc/c/Make-lang.in index 180923fece7..bfae6fd2549 100644 --- a/gcc/c/Make-lang.in +++ b/gcc/c/Make-lang.in @@ -110,6 +110,38 @@ c.tags: force c.man: c.srcman: +# C selftests + +# If C is enabled, require the selftests to be run for it +# at each stage of the build: +selftest-c: s-selftest-c + +C_SELFTEST_FLAGS = -xc $(SELFTEST_FLAGS) +C_SELFTEST_DEPS = cc1$(exeext) $(SELFTEST_DEPS) + +# Run the C selftests: +s-selftest-c: $(C_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) + $(STAMP) $@ + +# Convenience methods for running C selftests under gdb: +.PHONY: selftest-c-gdb +selftest-c-gdb: $(C_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \ + -wrapper gdb,--args + +.PHONY: selftest-gdb +selftest-gdb: selftest-c-gdb + +# Convenience methods for running C selftests under valgrind: +.PHONY: selftest-c-valgrind +selftest-c-valgrind: $(C_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \ + -wrapper valgrind,--leak-check=full + +.PHONY: selftest-valgrind +selftest-valgrind: selftest-c-valgrind + # List of targets that can use the generic check- rule and its // variant. lang_checks += check-gcc lang_checks_parallelized += check-gcc diff --git a/gcc/configure b/gcc/configure index 563860181a1..fb1c707f6cf 100755 --- a/gcc/configure +++ b/gcc/configure @@ -656,6 +656,7 @@ TM_ENDIAN_CONFIG tmake_file xmake_file cpp_install_dir +selftest_languages check_languages build_file_translate build_xm_defines @@ -18509,7 +18510,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18512 "configure" +#line 18513 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18615,7 +18616,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18618 "configure" +#line 18619 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -29344,6 +29345,12 @@ do check_languages="$check_languages check-$language" done +selftest_languages= +for language in $all_selected_languages +do + selftest_languages="$selftest_languages selftest-$language" +done + # We link each language in with a set of hooks, reached indirectly via # lang.${target}. Only do so for selected languages. @@ -29474,6 +29481,7 @@ fi + # Echo link setup. diff --git a/gcc/configure.ac b/gcc/configure.ac index c5c33af374c..3b70d5310a4 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -6194,6 +6194,12 @@ do check_languages="$check_languages check-$language" done +selftest_languages= +for language in $all_selected_languages +do + selftest_languages="$selftest_languages selftest-$language" +done + # We link each language in with a set of hooks, reached indirectly via # lang.${target}. Only do so for selected languages. @@ -6277,6 +6283,7 @@ AC_SUBST(build_xm_include_list) AC_SUBST(build_xm_defines) AC_SUBST(build_file_translate) AC_SUBST(check_languages) +AC_SUBST(selftest_languages) AC_SUBST(cpp_install_dir) AC_SUBST(xmake_file) AC_SUBST(tmake_file) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 99595d9f352..c04dbe84005 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-c++): New. + (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) + (selftest-c++-gdb, selftest-c++-valgrind): Move here from + gcc/Makefile.in. + 2018-10-17 Paolo Carlini PR c++/84705 diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index fa8c1e69354..e358b76bbda 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -164,6 +164,32 @@ c++.man: doc/g++.1 c++.srcman: doc/g++.1 -cp -p $^ $(srcdir)/doc +# C++ selftests + +# If C++ is enabled, require the selftests to be run for it +# at each stage of the build: +selftest-c++: s-selftest-c++ + +CPP_SELFTEST_DEPS = cc1plus$(exeext) $(SELFTEST_DEPS) +CPP_SELFTEST_FLAGS = -xc++ $(SELFTEST_FLAGS) + +# Run the C++ selftests +s-selftest-c++: $(CPP_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) + $(STAMP) $@ + +# Convenience method for running C++ selftests under gdb: +.PHONY: selftest-c++-gdb +selftest-c++-gdb: $(CPP_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \ + -wrapper gdb,--args + +# Convenience method for running C++ selftests under valgrind: +.PHONY: selftest-c++-valgrind +selftest-c++-valgrind: $(CPP_SELFTEST_DEPS) + $(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \ + -wrapper valgrind,--leak-check=full + # 'make check' in gcc/ looks for check-c++, as do all toplevel C++-related # check targets. However, our DejaGNU framework requires 'check-g++' as its # entry point. We feed the former to the latter here. diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ffc8629acf4..962f7fb6028 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-fortran): New. + 2018-10-17 Paul Thomas PR fortran/56386 diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in index 62f652e1408..5eff00b0637 100644 --- a/gcc/fortran/Make-lang.in +++ b/gcc/fortran/Make-lang.in @@ -170,6 +170,9 @@ lang_checks_parallelized += check-gfortran # For description see the check_$lang_parallelize comment in gcc/Makefile.in. check_gfortran_parallelize = 10000 +# No fortran-specific selftests +selftest-fortran: + # GFORTRAN documentation. GFORTRAN_TEXI = \ $(srcdir)/fortran/gfortran.texi \ diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index afb0a7d6019..6fe4b3c58e8 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-go): New. + 2018-09-25 Martin Liska * gofrontend/escape.cc (Gogo::analyze_escape): Remove diff --git a/gcc/go/Make-lang.in b/gcc/go/Make-lang.in index 021250abe08..e8656cbe1d3 100644 --- a/gcc/go/Make-lang.in +++ b/gcc/go/Make-lang.in @@ -139,6 +139,9 @@ lang_checks += check-go lang_checks_parallelized += check-go check_go_parallelize = 10 +# No go-specific selftests +selftest-go: + # Install hooks. go.install-common: installdirs diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 40dbde606d1..4e0c6e44c00 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-jit): New. + 2018-06-28 Martin Liska * jit-playback.c: Include opt-suggestions.h. diff --git a/gcc/jit/Make-lang.in b/gcc/jit/Make-lang.in index 280c094e9f2..e82f9453eb2 100644 --- a/gcc/jit/Make-lang.in +++ b/gcc/jit/Make-lang.in @@ -270,6 +270,9 @@ lang_checks_parallelized += check-jit # we want them to be placed in different "buckets". check_jit_parallelize = 10 +# No jit-specific selftests +selftest-jit: + # # Install hooks: jit.install-common: installdirs diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index f997f03ed88..c0e9f1c3d71 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-lto): New. + 2018-08-29 Martin Liska PR bootstrap/87130 diff --git a/gcc/lto/Make-lang.in b/gcc/lto/Make-lang.in index 46950776dd2..2cc3619696e 100644 --- a/gcc/lto/Make-lang.in +++ b/gcc/lto/Make-lang.in @@ -86,3 +86,6 @@ lto1.fda: ../prev-gcc/lto1$(exeext) ../prev-gcc/$(PERF_DATA) # LTO testing is done as part of C/C++/Fortran etc. testing. check-lto: + +# No LTO-specific selftests +selftest-lto: diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 5eeec721351..ebff7446f5c 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-objc): New. + 2018-04-20 Martin Liska PR objc/85476 diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in index 49b7a9f90d9..909a774f6c6 100644 --- a/gcc/objc/Make-lang.in +++ b/gcc/objc/Make-lang.in @@ -98,6 +98,9 @@ lang_checks += check-objc lang_checks_parallelized += check-objc check_objc_parallelize = 6 +# No objc-c-specific selftests +selftest-objc: + # # Install hooks: # cc1obj is installed elsewhere as part of $(COMPILERS). diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog index b8a97939f48..26de7cbf165 100644 --- a/gcc/objcp/ChangeLog +++ b/gcc/objcp/ChangeLog @@ -1,3 +1,7 @@ +2018-10-17 David Malcolm + + * Make-lang.in (selftest-obj-c++): New. + 2018-05-07 Nathan Sidwell * objcp-lang.c (objcxx_init_ts): Don't call init_shadowed_var_for_decl. diff --git a/gcc/objcp/Make-lang.in b/gcc/objcp/Make-lang.in index 5a0399994fd..c98286b830c 100644 --- a/gcc/objcp/Make-lang.in +++ b/gcc/objcp/Make-lang.in @@ -126,6 +126,9 @@ obj-c++.tags: force lang_checks += check-obj-c++ +# No objc-c++-specific selftests +selftest-obj-c++: + # # Install hooks: # cc1objplus is installed elsewhere as part of $(COMPILERS). -- 2.30.2