libstdc++: Fix 28_regex/basic_regex/84110.cc on Solaris

Message ID yddpmrt2tzq.fsf@CeBiTec.Uni-Bielefeld.DE
State Committed
Headers
Series libstdc++: Fix 28_regex/basic_regex/84110.cc on Solaris |

Commit Message

Rainer Orth Oct. 25, 2021, 12:01 p.m. UTC
  28_regex/basic_regex/84110.cc currently FAILs on Solaris:

FAIL: 28_regex/basic_regex/84110.cc (test for excess errors)
UNRESOLVED: 28_regex/basic_regex/84110.cc compilation failed to produce executable

Excess errors:
/vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc:14: error: reference to 'extended' is ambiguous

The issue is seen in the full output:

/vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc: In function ‘void test01()’:
/vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc:14: error: reference to ‘extended’ is ambiguous
In file included from /var/gcc/regression/master/11.4-gcc-gas/build/gcc/include-fixed/math.h:391,
                 from /var/gcc/regression/master/11.4-gcc-gas/build/i386-pc-solaris2.11/libstdc++-v3/include/cmath:45,
                 from /vol/gcc/src/hg/master/local/libstdc++-v3/include/precompiled/stdc++.h:41:
/usr/include/floatingpoint.h:73: note: candidates are: ‘typedef unsigned int extended [3]’

Fixed by qualifying extended.  Tested on i386-pc-solaris2.11,
sparc-sun-solaris2.11, and x86_64-pc-linux-gnu.

Ok for master?

I'm not certain if this is the best fix, though.

	Rainer
  

Comments

Jonathan Wakely Oct. 26, 2021, 9:15 a.m. UTC | #1
On Mon, 25 Oct 2021 at 13:09, Rainer Orth wrote:
>
> 28_regex/basic_regex/84110.cc currently FAILs on Solaris:
>
> FAIL: 28_regex/basic_regex/84110.cc (test for excess errors)
> UNRESOLVED: 28_regex/basic_regex/84110.cc compilation failed to produce executable
>
> Excess errors:
> /vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc:14: error: reference to 'extended' is ambiguous
>
> The issue is seen in the full output:
>
> /vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc: In function ‘void test01()’:
> /vol/gcc/src/hg/master/local/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc:14: error: reference to ‘extended’ is ambiguous
> In file included from /var/gcc/regression/master/11.4-gcc-gas/build/gcc/include-fixed/math.h:391,
>                  from /var/gcc/regression/master/11.4-gcc-gas/build/i386-pc-solaris2.11/libstdc++-v3/include/cmath:45,
>                  from /vol/gcc/src/hg/master/local/libstdc++-v3/include/precompiled/stdc++.h:41:
> /usr/include/floatingpoint.h:73: note: candidates are: ‘typedef unsigned int extended [3]’
>
> Fixed by qualifying extended.  Tested on i386-pc-solaris2.11,
> sparc-sun-solaris2.11, and x86_64-pc-linux-gnu.
>
> Ok for master?
>
> I'm not certain if this is the best fix, though.

Yeah, it's a bit odd to have only one of them qualified. I'll probably
forget why it's like that and remove it again to make it consistent
;-)

Please do:

using namespace std::regex_constants;
// See https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582486.html
using std::regex_constants::extended;

(There's no difference between std::regex::extended and
std::regex_constants::extended, but we might as well consistently
qualify it one way or the other in a given scope).

OK for master like that - thanks!
  

Patch

# HG changeset patch
# Parent  1a71c5553268184d62ac25cc8838e7ad096199b3
libstdc++: Fix 28_regex/basic_regex/84110.cc on Solaris

diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc
--- a/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc
@@ -11,7 +11,7 @@  void test01()
 
 #if __cpp_exceptions
   using namespace std::regex_constants;
-  for (auto syn : {basic, extended, awk, grep, egrep})
+  for (auto syn : {basic, std::regex::extended, awk, grep, egrep})
   {
     try
     {