Re: PATCH to support running the G++ testsuite in C++0x mode
On 07/15/2011 09:29 PM, Jason Merrill wrote: On 07/13/2011 04:28 PM, Jason Merrill wrote: I'm using --tool_opts to pass the extra -std=c++0x argument to the compiler. Previously in my own testing I've used --target_board=unix/-std=c++0x, but that is problematic because options from --target_board come after options from dg-options, leading to spurious failures on tests that explicitly specify -std=c++98. I also considered using the --additional_options flag which lib/g++.exp tries to support, but it doesn't work (runtest.exp treats any --a* as --all) and in any case is redundant with --tool_opts. Unfortunately, a bug in dejagnu means that --tool_opts breaks multilib support; see the URL in the patch and GCC bug 49741. So I've resurrected --additional_options, renamed to --extra_opts because runtest.exp will let that through. Applying to trunk. The change to the toplevel Makefile.in was made in the generated file. I didn't revert it with today's change. Matthias
Re: PATCH to support running the G++ testsuite in C++0x mode
On 07/16/2011 04:39 AM, Matthias Klose wrote: The change to the toplevel Makefile.in was made in the generated file. Oops, I was forgetting about the new Makefile system. This patch fixes that, and also adds a check-target-libmudflap-c++ target to check-c++. Jason commit b1d35a4f5c4b4f0ae6fef6aea0698febecfb8c9b Author: Jason Merrill ja...@redhat.com Date: Sat Jul 16 22:05:47 2011 -0400 * Makefile.def (language=c++): Add check-c++0x and check-target-libmudflap-c++. * Makefile.tpl (check-target-libmudflap-c++): New. * Makefile.in: Regenerate. diff --git a/Makefile.def b/Makefile.def index 0cc6ef6..5116341 100644 --- a/Makefile.def +++ b/Makefile.def @@ -511,8 +511,9 @@ dependencies = { module=configure-target-newlib; on=all-ld; }; dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; }; languages = { language=c; gcc-check-target=check-gcc; }; -languages = { language=c++; gcc-check-target=check-c++; -lib-check-target=check-target-libstdc++-v3; }; +languages = { language=c++; gcc-check-target=check-c++ check-c++0x; +lib-check-target=check-target-libstdc++-v3; +lib-check-target=check-target-libmudflap-c++; }; languages = { language=fortran; gcc-check-target=check-fortran; lib-check-target=check-target-libquadmath; lib-check-target=check-target-libgfortran; }; diff --git a/Makefile.in b/Makefile.in index e80f048..3b8e6c7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -40120,6 +40120,13 @@ maintainer-clean-target-libgomp: +@if target-libmudflap +.PHONY: check-target-libmudflap-c++ +check-target-libmudflap-c++: + $(MAKE) RUNTESTFLAGS=$(RUNTESTFLAGS) c++frags.exp check-target-libmudflap + +@endif target-libmudflap + # -- # GCC module # -- @@ -40153,13 +40160,8 @@ check-gcc-c++: r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); -check-gcc-c++0x: - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++0x); -check-c++: check-gcc-c++ check-target-libstdc++-v3 check-gcc-c++0x + (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++ check-c++0x); +check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libmudflap-c++ .PHONY: check-gcc-fortran check-fortran check-gcc-fortran: diff --git a/Makefile.tpl b/Makefile.tpl index ea3d08d..0d2a0bf 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1393,6 +1393,13 @@ ENDIF raw_cxx +] [+ ENDFOR recursive_targets +] [+ ENDFOR target_modules +] +@if target-libmudflap +.PHONY: check-target-libmudflap-c++ +check-target-libmudflap-c++: + $(MAKE) RUNTESTFLAGS=$(RUNTESTFLAGS) c++frags.exp check-target-libmudflap + +@endif target-libmudflap + # -- # GCC module # --
Re: PATCH to support running the G++ testsuite in C++0x mode
On 07/13/2011 04:28 PM, Jason Merrill wrote: I'm using --tool_opts to pass the extra -std=c++0x argument to the compiler. Previously in my own testing I've used --target_board=unix/-std=c++0x, but that is problematic because options from --target_board come after options from dg-options, leading to spurious failures on tests that explicitly specify -std=c++98. I also considered using the --additional_options flag which lib/g++.exp tries to support, but it doesn't work (runtest.exp treats any --a* as --all) and in any case is redundant with --tool_opts. Unfortunately, a bug in dejagnu means that --tool_opts breaks multilib support; see the URL in the patch and GCC bug 49741. So I've resurrected --additional_options, renamed to --extra_opts because runtest.exp will let that through. Applying to trunk. commit 15b873c04c2fdeee0b988c89c54bc2183f92a2ac Author: Jason Merrill ja...@redhat.com Date: Wed Jul 13 18:13:56 2011 -0400 * Makefile.in (check-c++): Move check-gcc-c++0x after check-target-libstdc++-v3. gcc/ * Makefile.in ($(lang_checks_parallelized)): Allow --extra_opts rather than --tool_opts. gcc/cp/ * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts. gcc/testsuite/ * lib/g++.exp (${tool}_option_help, ${tool}_option_proc): Restore. Use --extra_opts instead of --additional_options. diff --git a/Makefile.in b/Makefile.in index 506d26e..0d40358 100644 --- a/Makefile.in +++ b/Makefile.in @@ -40157,7 +40157,7 @@ check-gcc-c++0x: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++0x); -check-c++: check-gcc-c++ check-gcc-c++0x check-target-libstdc++-v3 +check-c++: check-gcc-c++ check-target-libstdc++-v3 check-gcc-c++0x .PHONY: check-gcc-fortran check-fortran check-gcc-fortran: diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 0fded4e..47e14fa 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -5019,7 +5019,7 @@ check_p_subdirs=$(wordlist 1,$(words $(check_$*_parallelize)),$(check_p_numbers) # For parallelized check-% targets, this decides whether parallelization # is desirable (if -jN is used and RUNTESTFLAGS doesn't contain anything -# but optional --target_board or --tool_opts arguments). If it is desirable, +# but optional --target_board or --extra_opts arguments). If desirable, # recursive make is run with check-parallel-$lang{,1,2,3,4,5} etc. goals, # which can be executed in parallel, as they are run in separate directories. # check-parallel-$lang{1,2,3,4,5} etc. goals invoke runtest with the longest @@ -5036,7 +5036,7 @@ check_p_subdirs=$(wordlist 1,$(words $(check_$*_parallelize)),$(check_p_numbers) # to lang_checks_parallelized variable and define check_$lang_parallelize # variable (see above check_gcc_parallelize description). $(lang_checks_parallelized): check-% : site.exp - @if [ -z $(filter-out --target_board=%,$(filter-out --tool_opts%,$(RUNTESTFLAGS))) ] \ + @if [ -z $(filter-out --target_board=%,$(filter-out --extra_opts%,$(RUNTESTFLAGS))) ] \ [ $(filter -j, $(MFLAGS)) = -j ]; then \ $(MAKE) TESTSUITEDIR=$(TESTSUITEDIR) RUNTESTFLAGS=$(RUNTESTFLAGS) \ check-parallel-$* \ diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index b9251a4..ad466b2 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -151,7 +151,7 @@ c++.srcman: doc/g++.1 check-c++ : check-g++ # Run the testsute in C++0x mode. check-c++0x: - $(MAKE) RUNTESTFLAGS=$(RUNTESTFLAGS) --tool_opts=-std=gnu++0x \ + $(MAKE) RUNTESTFLAGS=$(RUNTESTFLAGS) --extra_opts,-std=gnu++0x \ TESTSUITEDIR=$(TESTSUITEDIR).c++0x check-g++ check-c++-subtargets : check-g++-subtargets # List of targets that can use the generic check- rule and its // variant. diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp index 81c4398..9e269b1 100644 --- a/gcc/testsuite/lib/g++.exp +++ b/gcc/testsuite/lib/g++.exp @@ -307,3 +307,34 @@ proc g++_target_compile { source dest type options } { return $result } + +# +# ${tool}_option_help +# +# Changed additional to extra because runtest.exp treats --a* as --all. +# +# This shouldn't be necessary at all; it should be entirely redundant with +# --tool_opts, except that --tool_opts currently breaks multilib: see +# http://lists.gnu.org/archive/html/dejagnu/2002-10/msg7.html + +proc ${tool}_option_help { } { +send_user --extra_opts,OPTIONS\t\tUse OPTIONS to compile the testcase files. OPTIONS should be comma-separated.\n +} + +# +# ${tool}_option_proc +# + +proc ${tool}_option_proc { option } { +if [regexp ^--extra_opts, $option] { + global gpp_compile_options + regsub ^--extra_opts, $option option + foreach x [split $option ,] { + lappend gpp_compile_options additional_flags=$x + } + verbose -log gpp_compile_options set to $gpp_compile_options + return 1 +} else { + return 0 +} +}
PATCH to support running the G++ testsuite in C++0x mode
This patch adds support for running the full G++ testsuite in C++0x mode, apart from any tests that explicitly specify -std=c++98. To do this, either 'make check-c++0x' in the gcc build subdirectory. 'make check-c++' at the top level build directory will now run the tests in both C++98 and C++0x modes, though a normal 'make check' will still only run them in C++98 mode. I'm using --tool_opts to pass the extra -std=c++0x argument to the compiler. Previously in my own testing I've used --target_board=unix/-std=c++0x, but that is problematic because options from --target_board come after options from dg-options, leading to spurious failures on tests that explicitly specify -std=c++98. I also considered using the --additional_options flag which lib/g++.exp tries to support, but it doesn't work (runtest.exp treats any --a* as --all) and in any case is redundant with --tool_opts. With this patch, make check-c++0x passes with no unexpected failures on x86_64-pc-linux-gnu. Applying to trunk. commit d3ce882dd60d94b71db0326f7e53e9594183d0a4 Author: Jason Merrill ja...@redhat.com Date: Wed Jul 13 14:23:20 2011 -0400 Also test -std=c++0x mode with 'make check-c++' at top level * Makefile.in (check-gcc-c++0x): New. (check-c++): Depend on it. gcc/ * Makefile.in ($(lang_checks_parallelized)): Allow --tool_opts. gcc/cp/ * Make-lang.in (check-c++0x): New. gcc/testsuite/ * lib/g++.exp (${tool}_option_help, ${tool}_option_proc): Remove. * lib/lto.exp (lto_prune_warns): Prune warning about -std=c++0x when compiling C files. diff --git a/Makefile.in b/Makefile.in index 4f8b396..506d26e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -40152,7 +40152,12 @@ check-gcc-c++: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); -check-c++: check-gcc-c++ check-target-libstdc++-v3 +check-gcc-c++0x: + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd gcc $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++0x); +check-c++: check-gcc-c++ check-gcc-c++0x check-target-libstdc++-v3 .PHONY: check-gcc-fortran check-fortran check-gcc-fortran: diff --git a/gcc/Makefile.in b/gcc/Makefile.in index fcc8b7e..cd4f782 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -5018,7 +5018,7 @@ check_p_subdirs=$(wordlist 1,$(words $(check_$*_parallelize)),$(check_p_numbers) # For parallelized check-% targets, this decides whether parallelization # is desirable (if -jN is used and RUNTESTFLAGS doesn't contain anything -# but optionally --target_board argument). If it is desirable, +# but optional --target_board or --tool_opts arguments). If it is desirable, # recursive make is run with check-parallel-$lang{,1,2,3,4,5} etc. goals, # which can be executed in parallel, as they are run in separate directories. # check-parallel-$lang{1,2,3,4,5} etc. goals invoke runtest with the longest @@ -5035,7 +5035,7 @@ check_p_subdirs=$(wordlist 1,$(words $(check_$*_parallelize)),$(check_p_numbers) # to lang_checks_parallelized variable and define check_$lang_parallelize # variable (see above check_gcc_parallelize description). $(lang_checks_parallelized): check-% : site.exp - @if [ -z $(filter-out --target_board=%, $(RUNTESTFLAGS)) ] \ + @if [ -z $(filter-out --target_board=%,$(filter-out --tool_opts%,$(RUNTESTFLAGS))) ] \ [ $(filter -j, $(MFLAGS)) = -j ]; then \ $(MAKE) TESTSUITEDIR=$(TESTSUITEDIR) RUNTESTFLAGS=$(RUNTESTFLAGS) \ check-parallel-$* \ diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 1b53b38..b9251a4 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -149,6 +149,10 @@ c++.srcman: doc/g++.1 # check targets. However, our DejaGNU framework requires 'check-g++' as its # entry point. We feed the former to the latter here. check-c++ : check-g++ +# Run the testsute in C++0x mode. +check-c++0x: + $(MAKE) RUNTESTFLAGS=$(RUNTESTFLAGS) --tool_opts=-std=gnu++0x \ + TESTSUITEDIR=$(TESTSUITEDIR).c++0x check-g++ check-c++-subtargets : check-g++-subtargets # List of targets that can use the generic check- rule and its // variant. lang_checks += check-g++ diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C b/gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C index e0ef7f7..3fcc4f2 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C @@ -2,6 +2,7 @@ // { dg-options -g -O0 -dA } struct C { // { dg-function-on-line {_ZN1CC[12]Ev} } + int i; virtual void foo() {} // { dg-function-on-line _ZN1C3fooEv } }; diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C index 2df002f..7b061eb 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C +++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C @@ -13,26 +13,27 @@ typedef MisplacedDbgArg* Typedef2; typedef MisplacedDbgFull Typedef3;