This is a set of small patches for issues in the testsuite that I
noticed while working on a big change (coming soon).

Self-explanatory:

   Fix invalid dg-do directives in libstdc++ tests
* testsuite/22_locale/conversions/string/1.cc: Remove unintended
       dg-do compile directive.
       * testsuite/26_numerics/headers/cmath/fabs_inline.cc: Fix syntax of
       dg-do directive.
       * testsuite/26_numerics/valarray/const_bracket.cc: Likewise.

The dg-options for FreeBSD and Dragonfly should have included
-std=gnu++11, or should have used dg-additional-options to add to,
rather than override, the common dg-options.

   Use dg-additional-options in libstdc++ tests
* testsuite/17_intro/headers/c++2011/stdc++.cc: Change target-specific
       dg-options to dg-additional-options so that default options are used.
       * testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc:
       Likewise.
       * testsuite/17_intro/headers/c++2014/stdc++.cc: Likewise.
       * testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc:
       Likewise.
       * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
       Use dg-additional-options instead of repeating the common options.

When I added _Temporary_object to vector recently I updated the
construct/destroy counts in this test to match, but the changes only
apply for C++11 and later. This makes the test pass whether run as
C++98 or C++11 and later.

   Fix std::vector test to pass in C++98 mode
* testsuite/23_containers/vector/check_construct_destroy.cc: Account
       for different construct/destroy counts in C++98 mode.

The dg-prune-output directives in these tests are needed to prune some
additional errors that are only issued in C++98 mode, but the line
numbers had got out of date. I've replaced the hardcoded numbers with
strings that will stay valid.

   Fix DR 438 container tests to pass in C++98 mode
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
       Adjust dg-prune-output pattern for error in C++98 mode.
       * testsuite/23_containers/deque/requirements/dr438/
       constructor_1_neg.cc: Likewise.
       * testsuite/23_containers/deque/requirements/dr438/
       constructor_2_neg.cc: Likewise.
       * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
       Likewise.
       * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
       Likewise.
       * testsuite/23_containers/list/requirements/dr438/
       constructor_1_neg.cc: Likewise.
       * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
       Likewise.
       * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
       Likewise.
       * testsuite/23_containers/vector/requirements/dr438/
       constructor_1_neg.cc: Likewise.
       * testsuite/23_containers/vector/requirements/dr438/
       constructor_2_neg.cc: Likewise.
       * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
       Likewise.

Tested x86_64-linux, committed to trunk.


commit 9afdeaa821412a2311a4ede6b77b032a99a94f2f
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jul 28 21:13:59 2016 +0100

    Fix DR 438 container tests to pass in C++98 mode
    
    	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
    	Adjust dg-prune-output pattern for error in C++98 mode.
    	* testsuite/23_containers/deque/requirements/dr438/
    	constructor_1_neg.cc: Likewise.
    	* testsuite/23_containers/deque/requirements/dr438/
    	constructor_2_neg.cc: Likewise.
    	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
    	Likewise.
    	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
    	Likewise.
    	* testsuite/23_containers/list/requirements/dr438/
    	constructor_1_neg.cc: Likewise.
    	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
    	Likewise.
    	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
    	Likewise.
    	* testsuite/23_containers/vector/requirements/dr438/
    	constructor_1_neg.cc: Likewise.
    	* testsuite/23_containers/vector/requirements/dr438/
    	constructor_2_neg.cc: Likewise.
    	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
    	Likewise.

diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
index 7851243..49a05e6 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1879 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
index 2debd58..7b52fe2 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
index 5aa8626..02a2d3b 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <deque>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
index 5742198..90c0040 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1963 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
index b956db6..90e3c07 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1740 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
index 3400695..32815f4 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
index 75b33f2..fff543e 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 898431e..50e665d 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1325 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
 
 #include <vector>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index 3e27d52..c8521b7 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <vector>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index 680a84b..bc75eb4 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
 
 #include <vector>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index 9c9dd60..c73f861 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-prune-output 1366 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
 
 #include <vector>
 

commit 1ba3417ab149d56618163e0106c27a3ad7cec65e
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jul 28 21:13:30 2016 +0100

    Fix std::vector test to pass in C++98 mode
    
    	* testsuite/23_containers/vector/check_construct_destroy.cc: Account
    	for different construct/destroy counts in C++98 mode.

diff --git a/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc b/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
index b92a152..ddf0f9a 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
@@ -44,14 +44,17 @@ int main()
   }
   ok = check_construct_destroy("Construct from range", 10, 10) && ok;
 
+  // For C++11 and later the allocator is used to construct/destroy an
+  // additional temporary object during insertion.
+  const int extra = __cplusplus >= 201102L ? 1 : 0;
   {
     Container c(arr10, arr10 + 10);
     c.reserve(100);
     tracker_allocator_counter::reset();
     c.insert(c.begin(), arr10[0]);
-    ok = check_construct_destroy("Insert element", 2, 1) && ok;
+    ok = check_construct_destroy("Insert element", 1+extra, 0+extra) && ok;
   }
-  ok = check_construct_destroy("Insert element", 2, 12) && ok;
+  ok = check_construct_destroy("Insert element", 1+extra, 11+extra) && ok;
 
   {
     Container c(arr10, arr10 + 10);

commit 6aba5815feb0c5aa346312487005b51450a9a2a6
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jul 28 20:45:42 2016 +0100

    Use dg-additional-options in libstdc++ tests
    
    	* testsuite/17_intro/headers/c++2011/stdc++.cc: Change target-specific
    	dg-options to dg-additional-options so that default options are used.
    	* testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc:
    	Likewise.
    	* testsuite/17_intro/headers/c++2014/stdc++.cc: Likewise.
    	* testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc:
    	Likewise.
    	* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
    	Use dg-additional-options instead of repeating the common options.

diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
index 26a0e42..40bced7 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
@@ -1,6 +1,6 @@
 // FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-options "-std=gnu++11" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-do compile }
 
 // Copyright (C) 2007-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
index 69869b7..59f7748 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
@@ -1,6 +1,6 @@
 // FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-options "-std=gnu++11" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-do compile }
 
 // Copyright (C) 2007-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
index 2ab83c7..cd74e7b 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
@@ -1,6 +1,6 @@
 // FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-options "-std=gnu++14" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-do compile }
 
 // Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
index 7303143..3805723 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
@@ -1,6 +1,6 @@
 // FreeBSD wants warning clean system headers:
-// { dg-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-options "-std=gnu++14" }
+// { dg-additional-options "-Wall -Wsystem-headers" { target *-*-freebsd* *-*-dragonfly* } }
 // { dg-do compile }
 
 // Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
index 560eee3..f4a88f6 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
@@ -1,6 +1,6 @@
 // { dg-do compile { target i?86-*-* x86_64-*-* } }
 // { dg-options "-std=gnu++11 -g0 -fno-exceptions -fno-asynchronous-unwind-tables" }
-// { dg-options "-std=gnu++11 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -march=i486" { target ia32 } }
+// { dg-additional-options "-march=i486" { target ia32 } }
 // { dg-final { scan-assembler-times "xacquire\|\.byte\[^\n\r]*0xf2" 14 } }
 // { dg-final { scan-assembler-times "xrelease\|\.byte\[^\n\r]*0xf3" 14 } }
 

commit b03d309115041818d6cca013f544e491bb9b34e4
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jul 28 00:46:17 2016 +0100

    Fix invalid dg-do directives in libstdc++ tests
    
    	* testsuite/22_locale/conversions/string/1.cc: Remove unintended
    	dg-do compile directive.
    	* testsuite/26_numerics/headers/cmath/fabs_inline.cc: Fix syntax of
    	dg-do directive.
    	* testsuite/26_numerics/valarray/const_bracket.cc: Likewise.

diff --git a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
index 9a1e59f..25c0586 100644
--- a/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
 // { dg-options "-std=gnu++11" }
 
 // Copyright (C) 2015-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
index 2361142..82c5964 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
@@ -17,7 +17,7 @@
 
 // Test to see whether the host provides its own (inline) view of fabs.
 // Origin: Kurt Garloff <k...@garloff.de>, 2001-05-24
-// dg-do link
+// { dg-do link }
 
 #include <cmath>
 #include <cstdio>
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc b/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
index 6936d15..8dea41f 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
@@ -20,7 +20,7 @@
 
 #include <valarray>
 
-// dg-do compile
+// { dg-do compile }
 
 template<typename P>
   void copy(P, std::size_t) { }

Reply via email to