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/msg00007.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
+    }
+}

Reply via email to