Patchwork C++ PATCHes for core 1358, 1360, c++/50248 (constexpr, templates, default constructor)

login
register
mail settings
Submitter Jason Merrill
Date Sept. 6, 2011, 6:08 p.m.
Message ID <4E6661AA.8030305@redhat.com>
Download mbox | patch
Permalink /patch/113654/
State New
Headers show

Comments

Jason Merrill - Sept. 6, 2011, 6:08 p.m.
A followup: non-literal argument types shouldn't change the constexpr 
flag either, and we shouldn't crash when a constructor initializes bases 
as well as members (50296).  I'm not sure how my testing missed that bug...

Tested x86_64-pc-linux-gnu, applying to trunk.
Dodji Seketeli - Sept. 6, 2011, 8:21 p.m.
Jason Merrill <jason@redhat.com> a écrit:

> A followup: non-literal argument types shouldn't change the constexpr
> flag either, and we shouldn't crash when a constructor initializes
> bases as well as members (50296).  I'm not sure how my testing missed
> that bug...
>
> Tested x86_64-pc-linux-gnu, applying to trunk.
> commit 26e458d541a3b04512ab88cfab866703e868e728
> Author: Jason Merrill <jason@redhat.com>
> Date:   Thu Jul 14 23:56:59 2011 -0400
>
>     zadditional_options

I fail to see what the patch below has to do with the cover letter you
wrote above.  Am I missing something?

>
> diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> index 0fded4e..e12791d 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 --zadditional_options 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 --zadditional_options%,$(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..8353376 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) --zadditional_options,-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..562f6f0 100644
> --- a/gcc/testsuite/lib/g++.exp
> +++ b/gcc/testsuite/lib/g++.exp
> @@ -307,3 +307,33 @@ proc g++_target_compile { source dest type options } {
>  
>      return $result
>  }
> +
> +#
> +# ${tool}_option_help
> +#
> +# The initial 'z' is there 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.  Patch at
> +# http://lists.gnu.org/archive/html/dejagnu/2002-10/msg00007.html
> +
> +proc ${tool}_option_help { } {
> +    send_user " --zadditional_options,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 "^--zadditional_options," $option] {
> +	global gpp_compile_options
> +	regsub "^--zadditional_options," $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

commit 26e458d541a3b04512ab88cfab866703e868e728
Author: Jason Merrill <jason@redhat.com>
Date:   Thu Jul 14 23:56:59 2011 -0400

    zadditional_options

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 0fded4e..e12791d 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 --zadditional_options 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 --zadditional_options%,$(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..8353376 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) --zadditional_options,-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..562f6f0 100644
--- a/gcc/testsuite/lib/g++.exp
+++ b/gcc/testsuite/lib/g++.exp
@@ -307,3 +307,33 @@  proc g++_target_compile { source dest type options } {
 
     return $result
 }
+
+#
+# ${tool}_option_help
+#
+# The initial 'z' is there 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.  Patch at
+# http://lists.gnu.org/archive/html/dejagnu/2002-10/msg00007.html
+
+proc ${tool}_option_help { } {
+    send_user " --zadditional_options,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 "^--zadditional_options," $option] {
+	global gpp_compile_options
+	regsub "^--zadditional_options," $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
+    }
+}