]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Run most tests in both C++98 and C++11 modes.
authorJason Merrill <jason@redhat.com>
Wed, 9 Nov 2011 17:53:53 +0000 (12:53 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 9 Nov 2011 17:53:53 +0000 (12:53 -0500)
gcc/testsuite/
* lib/target-supports.exp (check_effective_target_c++11): New.
(check_effective_target_c++98): New.
* lib/g++-dg.exp (g++-dg-runtest): New.
* [various.exp]: Use g++-dg-runtest.
* [various.C]: Fix for C++11 mode.
gcc/cp/
* Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
(check-c++0x): Obsolete.
/
* Makefile.def (language=c++): Remove check-c++0x.
* Makefile.in (check-gcc-c++): Regenerate.

From-SVN: r181222

51 files changed:
ChangeLog
Makefile.def
Makefile.in
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/charset/charset.exp
gcc/testsuite/g++.dg/cpp0x/variadic60.C
gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
gcc/testsuite/g++.dg/dfp/dfp.exp
gcc/testsuite/g++.dg/dg.exp
gcc/testsuite/g++.dg/ext/anon-struct4.C
gcc/testsuite/g++.dg/gcov/gcov.exp
gcc/testsuite/g++.dg/gomp/gomp.exp
gcc/testsuite/g++.dg/graphite/graphite.exp
gcc/testsuite/g++.dg/init/brace2.C
gcc/testsuite/g++.dg/init/brace6.C
gcc/testsuite/g++.dg/init/null1.C
gcc/testsuite/g++.dg/other/anon3.C
gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
gcc/testsuite/g++.dg/template/arg2.C
gcc/testsuite/g++.dg/template/nontype25.C [moved from gcc/testsuite/g++.dg/abi/mangle4.C with 65% similarity]
gcc/testsuite/g++.dg/template/sfinae6_neg.C
gcc/testsuite/g++.dg/tls/tls.exp
gcc/testsuite/g++.dg/tm/tm.exp
gcc/testsuite/g++.dg/vect/vect.exp
gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
gcc/testsuite/g++.old-deja/g++.brendan/enum11.C
gcc/testsuite/g++.old-deja/g++.brendan/enum8.C
gcc/testsuite/g++.old-deja/g++.brendan/enum9.C
gcc/testsuite/g++.old-deja/g++.brendan/friend3.C
gcc/testsuite/g++.old-deja/g++.brendan/init2.C
gcc/testsuite/g++.old-deja/g++.brendan/init4.C
gcc/testsuite/g++.old-deja/g++.brendan/misc14.C
gcc/testsuite/g++.old-deja/g++.jason/cond.C
gcc/testsuite/g++.old-deja/g++.law/init1.C
gcc/testsuite/g++.old-deja/g++.law/operators32.C
gcc/testsuite/g++.old-deja/g++.other/anon9.C
gcc/testsuite/g++.old-deja/g++.other/linkage1.C
gcc/testsuite/g++.old-deja/g++.other/linkage2.C
gcc/testsuite/g++.old-deja/g++.pt/enum6.C
gcc/testsuite/g++.old-deja/g++.pt/explicit70.C
gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
gcc/testsuite/g++.old-deja/g++.pt/t29.C
gcc/testsuite/g++.old-deja/g++.pt/t30.C
gcc/testsuite/g++.old-deja/old-deja.exp
gcc/testsuite/lib/g++-dg.exp
gcc/testsuite/lib/target-supports.exp

index c25db94119fa0a38574ebe0dfacff38ba305e33e..bb781a889cf4860f01205d3553a0c0b1b816033e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-11-09  Jason Merrill  <jason@redhat.com>
+
+       * Makefile.def (language=c++): Remove check-c++0x.
+       * Makefile.in (check-gcc-c++): Regenerate.
+
 2011-11-08  Richard Henderson  <rth@redhat.com>
 
        * configure.ac: Test for libitm directory present first.
index b94dabfffe932c081f60499bbc48873e2b366941..b4236bac0866f9aa4ce824117d5bdcee7a08e12d 100644 (file)
@@ -513,7 +513,7 @@ 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++ check-c++0x";
+languages = { language=c++;    gcc-check-target=check-c++;
                                lib-check-target=check-target-libstdc++-v3;
                                lib-check-target=check-target-libmudflap-c++; };
 languages = { language=fortran;        gcc-check-target=check-fortran;
index 900c325849bf9b2c05bbda950101da4e59131fdc..c377f5773321b7ef015b9a165744e9a34444702c 100644 (file)
@@ -40661,7 +40661,7 @@ 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-c++0x);
+       (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++);
 check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libmudflap-c++
 
 .PHONY: check-gcc-fortran check-fortran
index 03ffecec7bff7403cc60b06753aaad21b14c47ad..cba11e1374c5948ad92a71c00febb5e2440ca373 100644 (file)
@@ -1,5 +1,8 @@
 2011-11-09  Jason Merrill  <jason@redhat.com>
 
+       * Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
+       (check-c++0x): Obsolete.
+
        * pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>".
 
        * pt.c (convert_nontype_argument): Only integral arguments
index 650fc38509657af6f11d986a8036691c3c393d62..0ce01ac49e2736c7e1bf97fe2f95769332d1afd6 100644 (file)
@@ -152,8 +152,7 @@ c++.srcman: doc/g++.1
 check-c++ : check-g++
 # Run the testsute in C++0x mode.
 check-c++0x:
-       $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --extra_opts,-std=gnu++0x" \
-         TESTSUITEDIR="$(TESTSUITEDIR).c++0x" check-g++
+       @echo Normal 'make check' now runs the testsuite in C++11 mode as well as C++98.
 # Run the testsuite with garbage collection at every opportunity.
 check-g++-strict-gc:
        $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --extra_opts,--param,ggc-min-heapsize=0,--param,ggc-min-expand=0" \
@@ -163,7 +162,7 @@ check-c++-subtargets : check-g++-subtargets
 lang_checks += check-g++
 lang_checks_parallelized += check-g++
 # For description see comment above check_gcc_parallelize in gcc/Makefile.in.
-check_g++_parallelize = old-deja.exp dg.exp
+check_g++_parallelize = old-deja.exp dg.exp dg-torture.exp
 
 #\f
 # Install hooks:
index 737a614a3133f442dfc2d5a64ddf7fd6354df3b4..cff301e427dc8d442bca50ecea9ac9728b821734 100644 (file)
@@ -1,4 +1,53 @@
-2011-11-09  Jason Merrill  <jason@redhat.com>
+2011-11-08  Jason Merrill  <jason@redhat.com>
+
+       Run most C++ tests in both C++98 and C++11 modes.
+       * lib/target-supports.exp (check_effective_target_c++11): New.
+       (check_effective_target_c++98): New.
+       * lib/g++-dg.exp (g++-dg-runtest): New.
+       * g++.dg/dg.exp: Use g++-dg-runtest.
+       * g++.dg/charset/charset.exp: Likewise.
+       * g++.dg/debug/dwarf2/dwarf2.exp: Likewise.
+       * g++.dg/dfp/dfp.exp: Likewise.
+       * g++.dg/gcov/gcov.exp: Likewise.
+       * g++.dg/gomp/gomp.exp: Likewise.
+       * g++.dg/graphite/graphite.exp: Likewise.
+       * g++.dg/tls/tls.exp: Likewise.
+       * g++.dg/tm/tm.exp: Likewise.
+       * g++.dg/vect/vect.exp: Likewise.
+       * g++.old-deja/old-deja.exp: Likewise.
+       * g++.dg/simulate-thread/simulate-thread.exp: Pass -std flags
+       with some of the torture options.
+       * g++.dg/abi/mangle4.C: Move to template/nontype25.C.
+       * g++.dg/template/sfinae6_neg.C: Add C++11 error.
+       * g++.dg/init/null1.C: Only run in C++98.
+       * g++.dg/warn/Wconversion-null-3.C: Likewise.
+       * g++.old-deja/g++.benjamin/p12475.C: Likewise.
+       * g++.old-deja/g++.brendan/crash64.C: Likewise.
+       * g++.old-deja/g++.other/anon9.C: Likewise.
+       * g++.old-deja/g++.other/linkage1.C: Likewise.
+       * g++.old-deja/g++.other/linkage2.C: Likewise.
+       * g++.old-deja/g++.pt/t29.C: Likewise.
+       * g++.old-deja/g++.pt/t30.C: Likewise.
+       * g++.dg/cpp0x/variadic60.C: Only error in C++98.
+       * g++.dg/ext/anon-struct4.C: Likewise.
+       * g++.dg/init/brace2.C: Likewise.
+       * g++.dg/init/brace6.C: Likewise.
+       * g++.dg/other/anon3.C: Likewise.
+       * g++.dg/template/arg2.C: Likewise.
+       * g++.old-deja/g++.brendan/cvt1.C: Likewise.
+       * g++.old-deja/g++.brendan/enum11.C: Likewise.
+       * g++.old-deja/g++.brendan/enum8.C: Likewise.
+       * g++.old-deja/g++.brendan/enum9.C: Likewise.
+       * g++.old-deja/g++.brendan/friend3.C: Likewise.
+       * g++.old-deja/g++.brendan/init2.C: Likewise.
+       * g++.old-deja/g++.brendan/init4.C: Likewise.
+       * g++.old-deja/g++.brendan/misc14.C: Likewise.
+       * g++.old-deja/g++.jason/cond.C: Likewise.
+       * g++.old-deja/g++.law/init1.C: Likewise.
+       * g++.old-deja/g++.law/operators32.C: Likewise.
+       * g++.old-deja/g++.pt/enum6.C: Likewise.
+       * g++.old-deja/g++.pt/explicit70.C: Likewise.
+       * g++.old-deja/g++.pt/ptrmem6.C: Likewise.
 
        * g++.dg/eh/new1.C: Adjust for C++11 mode.
        * g++.dg/init/new11.C: Likewise.
index 7d409d336ac4e71009dde2649ce2619958fc97a1..fe35f6a44033b7a4b39562af80c7910444c14837 100644 (file)
@@ -37,8 +37,8 @@ if ![info exists DEFAULT_CHARSETCFLAGS] then {
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \
-        "" $DEFAULT_CHARSETCFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \
+        $DEFAULT_CHARSETCFLAGS
 
 # All done.
 dg-finish
index b86711ff66bcb7cea46f8bd8fa41257e04d95826..8e1681eecc010cb2dadb3cf6280ed950ef8f0e3a 100644 (file)
@@ -1 +1 @@
-template<typename... Args> class tuple; // { dg-error "variadic templates" }
+template<typename... Args> class tuple; // { dg-error "variadic templates" "" { target c++98 } }
index 37dd794bed45a83d3d529cb71041a3afeea16cae..7b112ac6001ab9ac264b8feeefffde052fdf80a1 100644 (file)
@@ -35,8 +35,8 @@ set comp_output [g++_target_compile \
 if { ! [string match "*: target system does not support the * debug format*" \
     $comp_output] } {
     remove-build-file "trivial.S"
-    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/dwarf2/*.c]] \
-           "" $DEFAULT_CFLAGS
+    g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/dwarf2/*.c]] \
+           $DEFAULT_CFLAGS
 }
 
 # All done.
index 4b15ca529b570b20df0440ca0fa2f49f99bd1f24..4d235e5c084040a3bf6ea250d31010953f81c77c 100644 (file)
@@ -49,11 +49,11 @@ set DEFAULT_CXXFLAGS ""
 dg-init
 
 # Main loop.  Run the tests that are specific to C++.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[C]] \
-        "" $DEFAULT_CXXFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[C]] \
+        $DEFAULT_CXXFLAGS
 # Run tests that are shared with C testing.
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/dfp/*.c]] \
-        "" $DEFAULT_CXXFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/dfp/*.c]] \
+        $DEFAULT_CXXFLAGS
 
 # All done.
 dg-finish
index ad1f7e23700e055d8e90d32aabb979529f476c6c..0730c76e820562ff39838cc6bb2d435dd9e00ed5 100644 (file)
@@ -22,7 +22,7 @@ load_lib g++-dg.exp
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CXXFLAGS
 if ![info exists DEFAULT_CXXFLAGS] then {
-    set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
+    set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
 }
 
 # Initialize `dg'.
@@ -52,14 +52,14 @@ set tests [prune $tests $srcdir/$subdir/guality/*]
 set tests [prune $tests $srcdir/$subdir/simulate-thread/*]
 
 # Main loop.
-dg-runtest $tests "" $DEFAULT_CXXFLAGS
+g++-dg-runtest $tests $DEFAULT_CXXFLAGS
 
 # C/C++ common tests.
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/*.\[cSi\]]] \
-       "" ""
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/*.\[cSi\]]] \
+       ""
 
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.\[cS\]]] \
-       "" ""
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.\[cS\]]] \
+       ""
 
 
 # All done.
index fa5bd4b3d8a8da65b568e8652b625984541ab059..5d0bf71ae636bba3ba37a58ba77d6e999de3b084 100644 (file)
@@ -1,5 +1,5 @@
 // PR c++/14401
 
 struct { struct { int& i ; } bar ; } foo ; // { dg-error "uninitialized" "uninit" }
-// { dg-warning "anonymous" "anon" { target *-*-* } 3 }
+// { dg-warning "anonymous" "anon" { target c++98 } 3 }
 // { dg-message "should be initialized" "ref-uninit" { target *-*-* } 3 }
index 08e00c45d555e61e4c913cc573270f475457ef25..73703dcaf91e7693ba53377ebb124b92d4073c15 100644 (file)
@@ -39,6 +39,6 @@ if { $files != "" } {
 }
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" ""
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""
 
 dg-finish
index b99d302ddf56894aaba6123f22e44bf924d0d866..445cea8998354c1b2de02fbe191dcd0ce42966c9 100644 (file)
@@ -27,7 +27,7 @@ if ![check_effective_target_fopenmp] {
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/gomp/*.c]] "" "-fopenmp"
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/gomp/*.c]] "-fopenmp"
 
 # All done.
 dg-finish
index 4b359c9b3cef50c3186c348b189dfe1781e202f8..7c96f58c70dfb1e444992193ad7b77dbf27a16be 100644 (file)
@@ -46,14 +46,14 @@ set block_files       [lsort [glob -nocomplain $srcdir/$subdir/block-*.C ] ]
 
 # Tests to be compiled.
 set dg-do-what-default compile
-dg-runtest $scop_files        "" "-O2 -fgraphite -fdump-tree-graphite-all"
-dg-runtest $id_files          "" "-O2 -fgraphite-identity -ffast-math"
+g++-dg-runtest $scop_files        "-O2 -fgraphite -fdump-tree-graphite-all"
+g++-dg-runtest $id_files          "-O2 -fgraphite-identity -ffast-math"
 
 # Tests to be run.
 set dg-do-what-default run
-dg-runtest $run_id_files      "" "-O2 -fgraphite-identity"
-dg-runtest $interchange_files "" "-O2 -floop-interchange -fno-loop-block -fno-loop-strip-mine -ffast-math -fdump-tree-graphite-all"
-dg-runtest $block_files       "" "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all"
+g++-dg-runtest $run_id_files      "-O2 -fgraphite-identity"
+g++-dg-runtest $interchange_files "-O2 -floop-interchange -fno-loop-block -fno-loop-strip-mine -ffast-math -fdump-tree-graphite-all"
+g++-dg-runtest $block_files       "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all"
 
 # The default action for the rest of the files is 'compile'.
 set dg-do-what-default compile
@@ -62,7 +62,7 @@ foreach f $id_files          {lremove wait_to_run_files $f}
 foreach f $run_id_files      {lremove wait_to_run_files $f}
 foreach f $interchange_files {lremove wait_to_run_files $f}
 foreach f $block_files       {lremove wait_to_run_files $f}
-dg-runtest $wait_to_run_files "" "-ansi -pedantic-errors"
+g++-dg-runtest $wait_to_run_files " -pedantic-errors"
 
 # Clean up.
 set dg-do-what-default ${save-dg-do-what-default}
index 619a20f3c70654c075c445c4ff791b4feeccf0f8..fec9c6ce4d7ae0e87c7870caa08d1a382f94b442 100644 (file)
@@ -5,4 +5,4 @@ const char * y = { "hello" };
 int a = 2;
 int b = { 2,3 }; // { dg-error "requires one element in initializer" }
 int c = { { 2 } } ; // { dg-error "braces around scalar initializer" }
-int d = {}; // { dg-error "initializer" }
+int d = {}; // { dg-error "initializer" "" { target c++98 } }
index e01b947429f9461179934ab2929d4c9754430d98..ca39b0180d029da41854364ee35a89e7f1acd0ee 100644 (file)
@@ -18,7 +18,7 @@ int main()
 {
    int i = { 1 };
    int j = { 1, 2 }; /* { dg-error "requires one element" } */
-   A a = { 6 }; /* { dg-error "initialize" } */
+   A a = { 6 }; /* { dg-error "initialize" "" { target c++98 } } */
    B b = { 6 }; /* { dg-error "" } */
    C c = { 6 }; /* { dg-error "too many initializers" } */
    D d = { 6 };
index eff3f6109689d72dfb82db1ddfa3e4e169561661..a76ae2a25742089f427dfbcd3954c7fe363c23a9 100644 (file)
@@ -1,6 +1,7 @@
 // PR c++/16489
+// { dg-do compile { target c++98 } }
 
 const int NULL = 0;
 int main() { 
-  double* p = NULL; 
+  double* p = NULL;
 }
index 87116eb8901f7443909e9df37b133085905fbc9c..707c2d58f9dc3cbfd8960cefbc70b5c67e531e00 100644 (file)
@@ -4,4 +4,4 @@
 
 // { dg-do compile }
 
-enum { a = 3 } x; // { dg-warning "anonymous type" }
+enum { a = 3 } x; // { dg-warning "anonymous type" "" { target c++98 } }
index f9e6475c054f3a2a0a081de6aa8d971b7d4a32f5..01e4aaf63cfa90bc5b23d29ef087b53b5b7ce0e5 100644 (file)
@@ -26,8 +26,8 @@ torture-init
 set-torture-options [list \
        { -O0 -g } \
        { -O1 -g } \
-       { -O2 -g } \
-       { -O3 -g } \
+       { -O2 -g -std=c++98 } \
+       { -O3 -g -std=c++11 } \
        { -Os -g } ]
 
 if [gdb-exists] {
index 9fb7a68cc780d0ad9e8d047e5ebd6ec2b9e411f0..dabefc8778f26385c116d1cf6542ecde1484095e 100644 (file)
@@ -10,5 +10,5 @@ template <typename T> class X {};
 void fn ()
 {
   class L {};
-  X<L> f; // { dg-error "uses local type|trying to instantiate|no type|invalid type" "" }
+  X<L> f; // { dg-error "uses local type|trying to instantiate|no type|invalid type" "" { target c++98 } }
 }
similarity index 65%
rename from gcc/testsuite/g++.dg/abi/mangle4.C
rename to gcc/testsuite/g++.dg/template/nontype25.C
index 3ce224716db5be5763d86215f19bd0d2df11007d..bcdcce5ea9bc7eaa2f988a15f2b83882e95596a6 100644 (file)
@@ -1,4 +1,3 @@
-// Test mangling of type casts
 // { dg-do compile }
 
 class A {};
@@ -8,8 +7,8 @@ template<const A* a> class C {};
 template<const B* b> class D {};
 template<B* b> class E {};
 
-template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" }
-template<const B* b> void g(D<b> &, E<const_cast<B*>(b)> &) {} // { dg-error "" }
+template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" "" { target c++98 } }
+template<const B* b> void g(D<b> &, E<const_cast<B*>(b)> &) {} // { dg-error "" "" { target c++98 } }
 
 B b;
 
@@ -17,8 +16,7 @@ int main()
 {
   C<static_cast<const A*>(&b)> c; // { dg-error "" }
   D<&b> d;
-  E<const_cast<B*>(&b)> e; // { dg-error "" }
-  f(d, c);
+  E<const_cast<B*>(&b)> e; // { dg-error "" "" { target c++98 } }
+  f(d, c);                // { dg-error "" "" { target c++11 } }
   g(d, e);
 }
-
index 2df4ade47208867a7b474f24ec57776110603325..d4be5dd03f07f0c0f55c485414b27ab1ce910552 100644 (file)
@@ -14,7 +14,7 @@ template<typename T> struct enable_if<false, T> { };
 template<typename F, typename T1, typename T2>
   typename enable_if<sizeof(create_a<F>()(create_a<T1>(), create_a<T2>()), 1),
                     yes_type>::type
-  check_is_callable2(type<F>, type<T1>, type<T2>);
+  check_is_callable2(type<F>, type<T1>, type<T2>); // { dg-error "within this context" "" { target c++11 } }
 
 no_type check_is_callable2(...);
 
index 6450ea34f9beaf8b10f8898c98926c5a402ca26c..7745cd52da4c3632910b223a78d2fb1ea43648f6 100644 (file)
@@ -22,14 +22,14 @@ load_lib g++-dg.exp
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CXXFLAGS
 if ![info exists DEFAULT_CXXFLAGS] then {
-    set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
+    set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
 }
 
 # Initialize `dg'.
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] $DEFAULT_CXXFLAGS
 
 # All done.
 dg-finish
index d8c76fe1e88d442a9c74b6b60100fe1cb2ed10be..df40cdc1349c1ad984747315dabc35e30bf24ede 100644 (file)
@@ -22,18 +22,18 @@ load_lib g++-dg.exp
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CXXFLAGS
 if ![info exists DEFAULT_CXXFLAGS] then {
-    set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
+    set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
 }
 
 # Initialize `dg'.
 dg-init
 
 # Run the tests that are shared with C.
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/tm/*.c]] \
-       "" $DEFAULT_CXXFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/tm/*.c]] \
+       $DEFAULT_CXXFLAGS
 # Run the C++ only tests.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
-       "" $DEFAULT_CXXFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
+       $DEFAULT_CXXFLAGS
 
 # All done.
 dg-finish
index 76bd99a98627b1d1ac35fe9965e3697974472b3e..7cb02d026fe5aaba8ed44272e82951927a6a8e3c 100644 (file)
@@ -58,10 +58,10 @@ lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
-        "" $DEFAULT_VECTCFLAGS
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
-        "" $VECT_SLP_CFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
+        $DEFAULT_VECTCFLAGS
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
+        $VECT_SLP_CFLAGS
 
 #### Tests with special options
 global SAVED_DEFAULT_VECTCFLAGS
@@ -70,8 +70,8 @@ set SAVED_DEFAULT_VECTCFLAGS $DEFAULT_VECTCFLAGS
 # --param max-aliased-vops=0
 set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
 lappend DEFAULT_VECTCFLAGS "--param max-aliased-vops=0"
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/param-max-aliased*.\[cS\]]]  \
-        "" $DEFAULT_VECTCFLAGS 
+g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/param-max-aliased*.\[cS\]]]  \
+        $DEFAULT_VECTCFLAGS
 
 # Clean up.
 set dg-do-what-default ${save-dg-do-what-default} 
index 1942ee270bf34b4d700bc580212a3724a88ba6e1..644ae1c40da852409f34e767bf23dfa77962846b 100644 (file)
@@ -1,4 +1,5 @@
 // PR c++/48420
+// { dg-do compile { target c++98 } }
 
 void foo(int* p);
 
index d3e121e144087e88bc3f4fbbbd6e7e1c90842587..d41c26b49847ea21d52532bdaac76e90e983422c 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 // prms-id: 12475
 
 #include <limits.h>
index 3c98692833176240e9e7ba39455465474a3df845..5fd31a6a2e8034a9d8ed88e6f4771595760320c5 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 // GROUPS passed old-abort
 typedef __SIZE_TYPE__ size_t;
 typedef void (*RF_Ptr)(void *);
index 1327f5acec61baa658b77db925bed7f1073c5b89..544d59bf496c5957addb56d993518bb6dddb55f5 100644 (file)
@@ -5,7 +5,7 @@
 class Thing
 {
 public:
-      typedef enum { GOOD_THING, BAD_THING, } ThingType ; // { dg-error "" } comma
+      typedef enum { GOOD_THING, BAD_THING, } ThingType ; // { dg-error "" "comma" { target c++98 } }
        Thing (ThingType type) : thingType (type) { }
        ~Thing () { }
 private:
@@ -15,7 +15,7 @@ private:
 class Group
 {
 public:
-      typedef enum { THIS_GROUP, THAT_GROUP, } GroupType ; // { dg-error "" } comma
+      typedef enum { THIS_GROUP, THAT_GROUP, } GroupType ; // { dg-error "" "comma" { target c++98 } }
        Group (GroupType type) : groupType (type), groupCount (0) { }
        ~Group () { }
        void append (Thing* const &entry) { groupCount ++ ; }
index 009333a18bea96d4de806ac673230214c93f74f8..9c105609ec368370deda73d94a95e5977f65af64 100644 (file)
@@ -6,7 +6,7 @@ class X
     {
        oneMask = 0x0000FFFF,
        twoMask  = 0x000F0000,
-       thiMask = 0xFFF00000, // { dg-error "comma at end" }
+       thiMask = 0xFFF00000, // { dg-error "comma at end" "" { target c++98 } }
     };
     unsigned int foo;
 
index ecf6fbf4eceb50a8cb6d4cef3a318c4f27ad0f1b..bbdda4bfe2beddc3faa18d44b10520823627c780 100644 (file)
@@ -6,7 +6,7 @@ class foo1
    enum foo1_enum
    {
       ENUM1,
-      ENUM2, // { dg-error "comma at end" }
+      ENUM2, // { dg-error "comma at end" "" { target c++98 } }
    };
 };
 
index 88ecc73283d8051a94d4f2998bb67885019d18a2..d8a7d1bd47a8fb7fbd8bff19be73938f5f06386a 100644 (file)
@@ -2,7 +2,7 @@
 // GROUPS passed enums
 enum fig {
     figgy,
-    pudding,  // { dg-error "comma at end" }
+    pudding,  // { dg-error "comma at end" "" { target c++98 } }
 };
 
 class X {
index ecd85b44b09733a164e161d5ba379e7e2139f9e2..209ea8c0e06d4bc1af8fac21c30f32277d8de76e 100644 (file)
@@ -5,7 +5,7 @@ class B {
    friend class A;
 
    enum {
-      bEnum = 1, // { dg-error "comma at end" }
+      bEnum = 1, // { dg-error "comma at end" "" { target c++98 } }
    };
 
    int bArray[ bEnum ];
index 0bf0abab262e6a2944bd8d217f633daa51f4bb3c..1b376dc780216ca4f27af20c3bcf9098f842a3cf 100644 (file)
@@ -2,4 +2,4 @@
 // GROUPS passed initialization
 // this should give an error in require_required_type about not
 // being allowed to have an initializer list in an argument list.
-int f(int a = {1});// { dg-error "" } .*
+int f(int a = {1});// { dg-error "" "" { target c++98 } }
index aa2bfb6583235fe33c6491c5a7e7099b32d5a5b7..d3d1ffd2247d41654da3c04e9da7ea3f734ff712 100644 (file)
@@ -2,4 +2,4 @@
 // GROUPS passed initialization
 struct CharList { int i; };
 
-const CharList& terminals = { 1 }; // { dg-error "initializer lists" } c++0x
+const CharList& terminals = { 1 }; // { dg-error "initializer lists" "" { target c++98 } }
index 09242a46fa547a0a5a244ac0362652fee5518f89..d2e49095a3b64f3837e6c836ba14b48582bca4e7 100644 (file)
@@ -4,7 +4,7 @@ class X {
 public:
     enum e {
        New // { dg-error "conflicts with previous" }
-       ,   // { dg-error "comma at end" }
+       ,   // { dg-error "comma at end" "" { target c++98 } }
     };
 
     static int New(int); // { dg-error "declaration of" }
index a6e5ba0db2bbd8046114680fdc90cdab9c4692ca..b1e692e8a6946e4996d1238fe84dab8912e6c46f 100644 (file)
@@ -52,7 +52,7 @@ int main()
   // { dg-error "is initialized like a variable" "var" { target *-*-* } 51 }
     ;
   
-  if (int a[2] = {1, 2})       // { dg-error "extended init" 
+  if (int a[2] = {1, 2})       // { dg-error "extended init" "" { target c++98 } }
     ;
 
 }
index 1727e387b2d25d0c5873fff9d4c9322a148bb9d0..3cce388f292728dd8e11d2fdd99bd5bcada39dc1 100644 (file)
@@ -9,12 +9,12 @@ public:
 
 class bar {
 public:
-  foo f[3] = { 1, 2, 3 };   // works: f[0] = 1, f[1] = 2, f[2] = 3 // { dg-error "" } ANSI C++ forbids initialization of member f;
+  foo f[3] = { 1, 2, 3 };   // works: f[0] = 1, f[1] = 2, f[2] = 3 // { dg-error "" "" { target c++98 } } ANSI C++ forbids initialization of member f;
 };
 
 class bar2 {
 public:
-      foo f[3] = { foo(1), foo(2), foo(3) }; // { dg-error "" } ANSI C++ forbids initialization of member f;
+      foo f[3] = { foo(1), foo(2), foo(3) }; // { dg-error "" "" { target c++98 } } ANSI C++ forbids initialization of member f;
   // does not compile -- error: field initializer is not constant
 };
 
index 20d148dd544988bd3bb5562ea9d734537cbbbd92..9e1a35664f21482214884041f7cef9ea576373c8 100644 (file)
@@ -7,7 +7,7 @@
 //
 
 template <class T>
-void ffree(long rows, T** array) // { dg-message "note" }
+void ffree(long rows, T** array)
 {
 for( long i = 0; i < rows; i++ )
   delete [] array[i];                   // delete row
@@ -21,7 +21,7 @@ return array = new T[size];
 }
 
 template <class T>
-T** allocate2d(long d1, long d2, T**& array) // { dg-message "note" }
+T** allocate2d(long d1, long d2, T**& array)
 {
 if( allocate1d(d1, array) != 0 )
   {
@@ -49,9 +49,7 @@ foo() {std::cout << "foo created" << std::endl; }
 };
 
 foo **f2;
-allocate2d(d1, d2, f2);// { dg-error "" }  type.*// ERROR -    trying to.*
-// { dg-message "candidate" "candidate note" { target *-*-* } 52 }
-ffree(d1, f2);// { dg-error "" }  type.*// ERROR -    trying to.*
-// { dg-message "candidate" "candidate note" { target *-*-* } 54 }
+allocate2d(d1, d2, f2);// { dg-error "" "" { target c++98 } }
+ffree(d1, f2);// { dg-error "" "" { target c++98 } }
 
 }
index a364db8e962d2b348b14c9000a6a00608ecc41eb..d458b6b43093d0d6b35cc552b93e0a60bc5b2a87 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 // Test that we properly diagnose an attempt to use an anonymous class
 // in declaring an external function.
 
index 556ef9716a8d6f89e28b854398b16642e5275d5e..2fa2dec04b7416b72ba3e780a96d14e1496f9220 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 typedef struct {
   int i;
 } *p;
index 2385b2216feff8c94959a5518ec7501d55750ab2..974cd6396684f3743d219780ac97f4fab8c04cb1 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 extern "C" 
 {
index 254b48bc7fc5dea3055929db7c154222efe458a0..48bdbb0ca5205a4552dbf36c013dd61e940dee67 100644 (file)
@@ -8,7 +8,7 @@ void fn(T)
 {
   enum tern { H, L, X, U };
 
-  vector<tern> ternvec; // { dg-error "" } composed from a local type
+  vector<tern> ternvec; // { dg-error "" "" { target c++98 } } composed from a local type
 }
 
 template void fn(int);
index dc9c6c945d650a20b48f888d28700115cece8f06..1f53a757cb87ab4fc2a58f39c27e31036f48b660 100644 (file)
@@ -18,7 +18,7 @@ template int S<int>::t; // { dg-error "duplicate explicit instantiation" }
 template class S<double>;
 template class S<double>; // { dg-error "duplicate explicit instantiation" } 
 
-extern template void f(double); // { dg-error "extern" } extern not allowed
+extern template void f(double); // { dg-error "extern" "" { target c++98 } }
 inline template class S<float>; // { dg-error "inline" } inline not allowed
 
 template <class T>
index 8802e983b677614fd5da8ef617763d9c69d8c417..19f1591cf623c50b1edb72a8a38892097f25bc58 100644 (file)
@@ -13,30 +13,22 @@ public:
 };
 
 template <void (A::*)() >
-void g() {}                    // { dg-message "void g" }
+void g() {}
 template <int A::*>
-void h() {}                    // { dg-message "void h" }
+void h() {}
 
 
 int main() {
   g<&A::f>();
   h<&A::i>();
   g<&B::f>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 24 }
   h<&B::j>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 26 }
-  g<(void (A::*)()) &A::f>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 28 }
-  h<(int A::*) &A::i>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 30 }
+  g<(void (A::*)()) &A::f>(); // { dg-error "" "" { xfail c++11 } }
+  h<(int A::*) &A::i>(); // { dg-error "" "" { xfail c++11 } }
   g<(void (A::*)()) &B::f>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 32 }
   h<(int A::*) &B::j>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 34 }
-  g<(void (A::*)()) 0>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 36 }
-  h<(int A::*) 0>(); // { dg-error "" } 
-  // { dg-message "candidate" "candidate note" { target *-*-* } 38 }
+  g<(void (A::*)()) 0>(); // { dg-error "" "" { target c++98 } }
+  h<(int A::*) 0>(); // { dg-error "" "" { target c++98 } }
 
   return 0;
 }
index bcc94a38726a31282533bfbb96ffe46c29f9382b..f664f5402bae01b7cc0db2f1fba4d68b12a16e9a 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 
 template <class X, int n> X f (auto X (*x)[n]) { return (*x)[n/2]; }
 extern int i[30];
index 45da04c63ad7eceb16eb19dc549ec2397fbbe8bc..b0c4f2fbde45fb11c473c8cdc533addd8f3bebc0 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++98 } }
 
 template <class X, int n> X f (auto X (*x)[n]) { return (*x)[n/2]; }
 extern int i[30], i2[33];
index ce53b5fe48675ed294bc1b69037d035d0474fa49..c941f40f73aad42113305ab7e0ecdbb6a571963f 100644 (file)
@@ -21,7 +21,7 @@ load_lib g++-dg.exp
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CXXFLAGS
 if ![info exists DEFAULT_CXXFLAGS] then {
-    set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
+    set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
 }
 
 # Initialize `dg'.
@@ -32,7 +32,7 @@ dg-init
 set tests [lsort [find $srcdir/$subdir *.C]]
 
 # Main loop.
-dg-runtest $tests "" $DEFAULT_CXXFLAGS
+g++-dg-runtest $tests $DEFAULT_CXXFLAGS
 
 # All done.
 dg-finish
index ec81d03718abcc7e5c5bd7fcfb91c5944eef383c..e6ef74b5ef4109338aa6532a5575a51dc86c72c7 100644 (file)
@@ -26,3 +26,36 @@ proc g++-dg-test { prog do_what extra_tool_flags } {
 proc g++-dg-prune { system text } {
     return [gcc-dg-prune $system $text]
 }
+
+# Modified dg-runtest that runs tests in both C++98 and C++11 modes
+# unless they specifically specify one or the other.
+proc g++-dg-runtest { testcases default-extra-flags } {
+    global runtests
+
+    foreach test $testcases {
+       # If we're only testing specific files and this isn't one of them, skip it.
+       if ![runtest_file_p $runtests $test] {
+           continue
+       }
+
+       # If the testcase specifies a standard, use that one.
+       # If not, run it under both standards, allowing GNU extensions
+       # if there's a dg-options line.
+       if ![search_for $test "-std=*++"] {
+           if [search_for $test "dg-options"] {
+               set option_list { -std=gnu++98 -std=gnu++11 }
+           } else {
+               set option_list { -std=c++98 -std=c++11 }
+           }
+       } else {
+           set option_list { "" }
+       }
+
+       set nshort [file tail [file dirname $test]]/[file tail $test]
+
+       foreach flags $option_list {
+           verbose "Testing $nshort, $flags" 1
+           dg-test $test $flags ${default-extra-flags}
+       }
+    }
+}
index 61bae45c1f857723f05be12707a0dd82e15caa0e..944a66853a21be77beff3b562d93f0f293238ad5 100644 (file)
@@ -4266,6 +4266,24 @@ proc check_effective_target_c++ { } {
  return 0
 }
 
+# Check which language standard is active by checking for the presence of
+# one of the C++11 -std flags.  This assumes that the default for the
+# compiler is C++98, and that there will never be multiple -std= arguments
+# on the command line.
+proc check_effective_target_c++11 { } {
+    if ![check_effective_target_c++] {
+       return 0
+    }
+    return [check-flags { { } { } { -std=c++0x -std=gnu++0x -std=c++11 -std=gnu++11 } }]
+}
+
+proc check_effective_target_c++98 { } {
+    if ![check_effective_target_c++] {
+       return 0
+    }
+    return [check-flags { { } { } { } { -std=c++0x -std=gnu++0x -std=c++11 -std=gnu++11 } }]
+}
+
 # Return 1 if expensive testcases should be run.
 
 proc check_effective_target_run_expensive_tests { } {