[v3 patch] add missing export for std::regex_error and fix tests

Jonathan Wakely jwakely.gcc@gmail.com
Tue Nov 19 23:25:00 GMT 2013


I found a few tests containing VERIFY assertions that were incorrectly
marked { dg-do compile } so weren't executed, hiding some broken tests
and a missing export. This adds the export and fixes the tests. I
deleted the TR1 test because it won't link due to unimplemented
features so doesn't really test anything.

2013-11-19  Jonathan Wakely  <jwakely.gcc@gmail.com>

    * config/abi/pre/gnu.ver (_ZNSt11regex_errorC*): Export regex_error
    constructors.
    * testsuite/20_util/addressof/1.cc: Remove { dg-do compile }.
    * testsuite/20_util/allocator_traits/members/destroy.cc: Likewise.
    * testsuite/20_util/allocator_traits/members/select.cc: Likewise. Fix
    failure.
    * testsuite/28_regex/basic_regex/ctors/extended/cstring.cc: Likewise.
    * testsuite/28_regex/init-list.cc: Likewise.
    * testsuite/28_regex/regex_error/regex_error.cc: Likewise.
    * testsuite/28_regex/sub_match/length.cc: Likewise. Add main.
    * testsuite/28_regex/sub_match/cast_char.cc: Likewise. Fix test.
    * testsuite/28_regex/sub_match/cast_wchar_t.cc: Likewise.
    * testsuite/tr1/7_regular_expressions/regex/cons/char/
    c_string_extended.cc: Delete.

Tested x86_64-linux, committed to trunk.
-------------- next part --------------
commit 54e975eb2de12933cfc9c0442b2e34db43c96bc3
Author: Jonathan Wakely <jwakely.gcc@gmail.com>
Date:   Tue Nov 19 21:46:49 2013 +0000

    	* config/abi/pre/gnu.ver (_ZNSt11regex_errorC*): Export regex_error
    	constructors.
    	* testsuite/20_util/addressof/1.cc: Remove { dg-do compile }.
    	* testsuite/20_util/allocator_traits/members/destroy.cc: Likewise.
    	* testsuite/20_util/allocator_traits/members/select.cc: Likewise. Fix
    	failure.
    	* testsuite/28_regex/basic_regex/ctors/extended/cstring.cc: Likewise.
    	* testsuite/28_regex/init-list.cc: Likewise.
    	* testsuite/28_regex/regex_error/regex_error.cc: Likewise.
    	* testsuite/28_regex/sub_match/length.cc: Likewise. Add main.
    	* testsuite/28_regex/sub_match/cast_char.cc: Likewise. Fix test.
    	* testsuite/28_regex/sub_match/cast_wchar_t.cc: Likewise.
    	* testsuite/tr1/7_regular_expressions/regex/cons/char/
    	c_string_extended.cc: Delete.

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index d3c399f..3235793 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1368,6 +1368,9 @@ GLIBCXX_3.4.20 {
     # std::__throw_out_of_range_fmt(char const*, ...)
     _ZSt24__throw_out_of_range_fmtPKcz;
 
+    # std::regex_error::regex_error(std::regex_constants::error_type)
+    _ZNSt11regex_errorC[01]ENSt15regex_constants10error_typeE;
+
 } GLIBCXX_3.4.19;
 
 # Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/testsuite/20_util/addressof/1.cc b/libstdc++-v3/testsuite/20_util/addressof/1.cc
index e874258..2b32855 100644
--- a/libstdc++-v3/testsuite/20_util/addressof/1.cc
+++ b/libstdc++-v3/testsuite/20_util/addressof/1.cc
@@ -1,5 +1,4 @@
 // { dg-options "-std=gnu++0x" }
-// { dg-do compile }
 
 // 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
index a8e9d0a..56d598a 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
@@ -1,5 +1,4 @@
 // { dg-options "-std=gnu++0x" }
-// { dg-do compile }
 
 // Copyright (C) 2011-2013 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
index 2ef2e34..2671f18 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
@@ -1,5 +1,4 @@
 // { dg-options "-std=gnu++0x" }
-// { dg-do compile }
 
 // Copyright (C) 2011-2013 Free Software Foundation, Inc.
 //
@@ -54,7 +53,7 @@ void test01()
 
 void test02()
 {
-  typedef std::allocator_traits<alloc1<X>> traits_type;
+  typedef std::allocator_traits<alloc2<X>> traits_type;
   traits_type::allocator_type a{1};
   const traits_type::allocator_type& a2
     = traits_type::select_on_container_copy_construction(a);
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
index fa2e009..03c20a4 100644
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
 // { dg-options "-std=c++0x" }
 
 // 2007-03-12  Stephen M. Webb  <stephen.webb@bregmasoft.com>
@@ -33,7 +32,7 @@ test01()
   std::regex re("(wee|week)(knights|night)", std::regex::extended);
   
   VERIFY( re.flags() == std::regex::extended );
-  VERIFY( re.mark_count() == 0 );
+  VERIFY( re.mark_count() == 2 );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/28_regex/init-list.cc b/libstdc++-v3/testsuite/28_regex/init-list.cc
index ee71bb9..390e715 100644
--- a/libstdc++-v3/testsuite/28_regex/init-list.cc
+++ b/libstdc++-v3/testsuite/28_regex/init-list.cc
@@ -1,5 +1,4 @@
 // { dg-options "-std=gnu++0x" }
-// { dg-do compile }
 
 // Copyright (C) 2008-2013 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc b/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
index 9cb08f9..2537973 100644
--- a/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
+++ b/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
@@ -1,5 +1,4 @@
 // { dg-options "-std=c++0x" }
-// { dg-do compile }
 //
 // 2009-06-17  Stephen M. Webb  <stephen.webb@xandros.com>
 //
diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc b/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
index ac2f305..300757e 100644
--- a/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
+++ b/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
 // { dg-options "-std=c++0x" }
 
 //
@@ -27,9 +26,7 @@
 #include <string>
 #include <testsuite_hooks.h>
 
-
-void
-test01()
+int main()
 {
   bool test __attribute__((unused)) = true;
 
@@ -39,8 +36,8 @@ test01()
   value_type test_data[] = "cabbage";
 
 	sub_match_type sm;
-	sm.first = test_data + 0;
-	sm.second  = test_data + sizeof(test_data)/sizeof(value_type);
+	sm.first = std::begin(test_data);
+	sm.second  = std::end(test_data) - 1;
 	sm.matched = true;
 
 	string_type sm_string = sm;
diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc b/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
index b4cbe1a..2a5cd3f 100644
--- a/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
+++ b/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
 // { dg-options "-std=c++0x" }
 
 //
@@ -27,9 +26,7 @@
 #include <string>
 #include <testsuite_hooks.h>
 
-
-void
-test01()
+int main()
 {
   bool test __attribute__((unused)) = true;
 
@@ -39,8 +36,8 @@ test01()
   value_type test_data[] = L"cabbage";
 
 	sub_match_type sm;
-	sm.first = test_data + 0;
-	sm.second  = test_data + sizeof(test_data)/sizeof(value_type);
+	sm.first = std::begin(test_data);
+	sm.second  = std::end(test_data) - 1;
 	sm.matched = true;
 
 	string_type sm_string = sm;
diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/length.cc b/libstdc++-v3/testsuite/28_regex/sub_match/length.cc
index e4acf71..7f073e4 100644
--- a/libstdc++-v3/testsuite/28_regex/sub_match/length.cc
+++ b/libstdc++-v3/testsuite/28_regex/sub_match/length.cc
@@ -1,4 +1,3 @@
-// { dg-do compile }
 // { dg-options "-std=c++0x" }
 
 //
@@ -47,3 +46,8 @@ test01()
 	VERIFY( sm1.length() == test_len );
 	VERIFY( sm2.length() == 0 );
 }
+
+int main()
+{
+  test01();
+}
diff --git a/libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_extended.cc b/libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_extended.cc
deleted file mode 100644
index 24fa717..0000000
--- a/libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_extended.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// { dg-do compile }
-
-// 2007-03-12  Stephen M. Webb  <stephen.webb@bregmasoft.com>
-//
-// Copyright (C) 2007-2013 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-// 7.8.2 basic_regex constructors
-
-#include <tr1/regex>
-#include <testsuite_hooks.h>
-
-void
-test01() 
-{ 
-  bool test __attribute__((unused)) = true;
-
-  std::tr1::regex re("(wee|week)(knights|night)", std::tr1::regex::extended);
-  
-  VERIFY( re.flags() == std::tr1::regex::extended );
-  VERIFY( re.mark_count() == 0 );
-}
-
-int main()
-{
-  test01();
-  return 0;
-}


More information about the Libstdc++ mailing list