This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch] Whole regex refactoring and current status
- From: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- To: Paolo Carlini <paolo dot carlini at oracle dot com>
- Cc: Tim Shen <timshen91 at gmail dot com>, libstdc++ <libstdc++ at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 08 Aug 2013 14:47:54 +0200
- Subject: Re: [Patch] Whole regex refactoring and current status
- References: <CAPrifDkAoudaXf=Rwu7jGiBa8nWf9HUx-TQUNGe5a0krJ7pUug at mail dot gmail dot com> <yddfvukpklg dot fsf at lokon dot CeBiTec dot Uni-Bielefeld dot DE> <1f55c618-cefd-40cf-801f-a78767b7da3a at email dot android dot com>
Hi Paolo,
>>This is already documented:
>>
>>http://gcc.gnu.org/onlinedocs/libstdc++/manual/source_code_style.html#coding_style.bad_identifiers
>
> Indeed. As a simple to remember rule never use single underscore + single
> uppercase. Usually we add a p, like _Cp, etc. Plenty of examples
> everywhere. At the moment I can't do the search&replace, any such patch is
> preapproved though.
I wasn't certain about the right convention. The following patch
allowed bootstrap to finish on i386-pc-solaris2.10 and
x86_64-unknown-linux-gnu. I'll commit the patch once Solaris testing
has finished.
2013-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* include/bits/regex.h: Replace _A, _B, _C, _R by _Ap, _Bp,
_Cp, _Rp.
diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h
--- a/libstdc++-v3/include/bits/regex.h
+++ b/libstdc++-v3/include/bits/regex.h
@@ -995,18 +995,18 @@ namespace std _GLIBCXX_VISIBILITY(defaul
const basic_regex<_CharT, _TraitsT>&,
regex_constants::match_flag_type);
- template<typename _B, typename _A, typename _C, typename _R>
+ template<typename _Bp, typename _Ap, typename _Cp, typename _Rp>
friend bool
- regex_match(_B, _B,
- match_results<_B, _A>&,
- const basic_regex<_C, _R>&,
+ regex_match(_Bp, _Bp,
+ match_results<_Bp, _Ap>&,
+ const basic_regex<_Cp, _Rp>&,
regex_constants::match_flag_type);
- template<typename _B, typename _A, typename _C, typename _R>
+ template<typename _Bp, typename _Ap, typename _Cp, typename _Rp>
friend bool
- regex_search(_B, _B,
- match_results<_B, _A>&,
- const basic_regex<_C, _R>&,
+ regex_search(_Bp, _Bp,
+ match_results<_Bp, _Ap>&,
+ const basic_regex<_Cp, _Rp>&,
regex_constants::match_flag_type);
flag_type _M_flags;
@@ -2111,16 +2111,16 @@ namespace std _GLIBCXX_VISIBILITY(defaul
template<typename, typename, typename, typename>
friend class __detail::_BFSExecutor;
- template<typename _B, typename _A, typename _Ch_type, typename _Rx_traits>
+ template<typename _Bp, typename _Ap, typename _Ch_type, typename _Rx_traits>
friend bool
- regex_match(_B, _B, match_results<_B, _A>&,
+ regex_match(_Bp, _Bp, match_results<_Bp, _Ap>&,
const basic_regex<_Ch_type,
_Rx_traits>&,
regex_constants::match_flag_type);
- template<typename _B, typename _A, typename _Ch_type, typename _Rx_traits>
+ template<typename _Bp, typename _Ap, typename _Ch_type, typename _Rx_traits>
friend bool
- regex_search(_B, _B, match_results<_B, _A>&,
+ regex_search(_Bp, _Bp, match_results<_Bp, _Ap>&,
const basic_regex<_Ch_type,
_Rx_traits>&,
regex_constants::match_flag_type);
However, I see many 32-bit testsuite failures, both on Solaris and
Linux:
Running target unix/-m32
FAIL: 28_regex/algorithms/regex_match/basic/string_01.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/basic/string_01.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/basic/string_range_00_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/basic/string_range_00_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/basic/string_range_01_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/basic/string_range_01_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/basic/string_range_02_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/basic/string_range_02_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/53622.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/53622.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/57173.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/57173.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/cstring_bracket_01.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/cstring_bracket_01.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/cstring_plus.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/cstring_plus.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/cstring_questionmark.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/cstring_questionmark.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/string_any.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/string_any.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/string_range_00_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/string_range_00_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/string_range_01_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/string_range_01_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_match/extended/string_range_02_03.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_match/extended/string_range_02_03.cc compilation failed to produce executable
FAIL: 28_regex/algorithms/regex_search/basic/string_01.cc (test for excess errors)
WARNING: 28_regex/algorithms/regex_search/basic/string_01.cc compilation failed to produce executable
FAIL: 28_regex/basic_regex/ctors/basic/cstring.cc (test for excess errors)
FAIL: 28_regex/basic_regex/ctors/basic/raw_string.cc (test for excess errors)
WARNING: 28_regex/basic_regex/ctors/basic/raw_string.cc compilation failed to produce executable
FAIL: 28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc (test for excess errors)
WARNING: 28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc compilation failed to produce executable
FAIL: 28_regex/basic_regex/ctors/char/cstring_awk.cc (test for excess errors)
FAIL: 28_regex/basic_regex/ctors/char/cstring_egrep.cc (test for excess errors)
FAIL: 28_regex/basic_regex/ctors/char/cstring_grep.cc (test for excess errors)
FAIL: 28_regex/basic_regex/ctors/extended/cstring.cc (test for excess errors)
FAIL: 28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc (test for excess errors)
WARNING: 28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc compilation failed to produce executable
E.g. the first one is
FAIL: 28_regex/algorithms/regex_match/basic/string_01.cc (test for excess errors)
Excess errors:
/vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc:34:47: error: call of overloaded 'basic_regex(const char [8], const flag_type&)' is ambiguous
The other failures are similar.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University