* [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
@ 2015-11-16 21:04 Doug Evans
2015-11-16 21:24 ` Jonathan Wakely
2015-11-25 17:32 ` Alan Lawrence
0 siblings, 2 replies; 8+ messages in thread
From: Doug Evans @ 2015-11-16 21:04 UTC (permalink / raw)
To: gcc-patches, libstdc++
Hi.
Apologies for the delay.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
Tested with current trunk.
2015-11-16 Doug Evans <dje@google.com>
PR libstdc++/67440
* python/libstdcxx/v6/printers.py (find_type): Handle "const" in
type name.
* testsuite/libstdc++-prettyprinters/debug.cc: Add test for
const set<int>.
* testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
* testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
Index: python/libstdcxx/v6/printers.py
===================================================================
--- python/libstdcxx/v6/printers.py (revision 227421)
+++ python/libstdcxx/v6/printers.py (working copy)
@@ -85,7 +85,9 @@
def find_type(orig, name):
typ = orig.strip_typedefs()
while True:
- search = str(typ) + '::' + name
+ # Use typ.name here instead of str(typ) to discard any const,etc.
+ # qualifiers. PR 67440.
+ search = typ.name + '::' + name
try:
return gdb.lookup_type(search)
except RuntimeError:
Index: testsuite/libstdc++-prettyprinters/debug.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/debug.cc (revision 227421)
+++ testsuite/libstdc++-prettyprinters/debug.cc (working copy)
@@ -70,6 +70,10 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
+ // PR 67440
+ const std::set<int> const_intset = {2, 3};
+// { dg-final { note-test const_intset {std::__debug::set with 2 elements
= {[0] = 2, [1] = 3}} } }
+
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
Index: testsuite/libstdc++-prettyprinters/simple.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/simple.cc (revision 227421)
+++ testsuite/libstdc++-prettyprinters/simple.cc (working copy)
@@ -73,6 +73,10 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
+ // PR 67440
+ const std::set<int> const_intset = {2, 3};
+// { dg-final { note-test const_intset {std::set with 2 elements = {[0] =
2, [1] = 3}} } }
+
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
Index: testsuite/libstdc++-prettyprinters/simple11.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/simple11.cc (revision 227421)
+++ testsuite/libstdc++-prettyprinters/simple11.cc (working copy)
@@ -73,6 +73,10 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
+ // PR 67440
+ const std::set<int> const_intset = {2, 3};
+// { dg-final { note-test const_intset {std::set with 2 elements = {[0] =
2, [1] = 3}} } }
+
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-16 21:04 [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails Doug Evans
@ 2015-11-16 21:24 ` Jonathan Wakely
2015-11-25 17:32 ` Alan Lawrence
1 sibling, 0 replies; 8+ messages in thread
From: Jonathan Wakely @ 2015-11-16 21:24 UTC (permalink / raw)
To: Doug Evans; +Cc: gcc-patches, libstdc++
On 16/11/15 21:04 +0000, Doug Evans wrote:
>Hi.
>
>Apologies for the delay.
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>
>Tested with current trunk.
>
>2015-11-16 Doug Evans <dje@google.com>
>
> PR libstdc++/67440
> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
> type name.
> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
> const set<int>.
> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>
>Index: python/libstdcxx/v6/printers.py
>===================================================================
>--- python/libstdcxx/v6/printers.py (revision 227421)
>+++ python/libstdcxx/v6/printers.py (working copy)
>@@ -85,7 +85,9 @@
> def find_type(orig, name):
> typ = orig.strip_typedefs()
> while True:
>- search = str(typ) + '::' + name
>+ # Use typ.name here instead of str(typ) to discard any const,etc.
>+ # qualifiers. PR 67440.
>+ search = typ.name + '::' + name
Oh, that's surprisingly simple! :-)
This only affects the printers, so although we're in stage 3 this is
OK for trunk and gcc-5-branch, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-16 21:04 [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails Doug Evans
2015-11-16 21:24 ` Jonathan Wakely
@ 2015-11-25 17:32 ` Alan Lawrence
2015-11-25 18:57 ` Doug Evans
2015-11-25 19:59 ` Jonathan Wakely
1 sibling, 2 replies; 8+ messages in thread
From: Alan Lawrence @ 2015-11-25 17:32 UTC (permalink / raw)
To: Doug Evans, gcc-patches, libstdc++
On 16/11/15 21:04, Doug Evans wrote:
> Hi.
>
> Apologies for the delay.
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>
> Tested with current trunk.
>
> 2015-11-16 Doug Evans <dje@google.com>
>
> PR libstdc++/67440
> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
> type name.
> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
> const set<int>.
> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc: In
function 'int main()':
/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
error: in C++98 'const_intset' must be initialized by constructor, not by '{...}'
const std::set<int> const_intset = {2, 3};
^
In file included from
/work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/map:60:0,
from
/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:31:
/work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_tree.h:
In instantiation of 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare,
_Alloc>::_M_insert_unique(_II, _II) [with _InputIterator = int; _Key = int; _Val
= int; _KeyOfValue = std::_Identity<int>; _Compare = std::less<int>; _Alloc =
std::allocator<int>]':
/work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_set.h:171:4:
required from 'std::set<_Key, _Compare, _Alloc>::set(_InputIterator,
_InputIterator) [with _InputIterator = int; _Key = int; _Compare =
std::less<int>; _Alloc = std::allocator<int>]'
/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
required from here
/work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_tree.h:2224:29:
error: invalid type argument of unary '*' (have 'int')
_M_insert_unique_(end(), *__first, __an);
^
compiler exited with status 1
UNRESOLVED: libstdc++-prettyprinters/simple.cc compilation failed to produce
executable
Spawning: gdb -nw -nx -quiet -batch -ex "python print(gdb.type_printers)"
spawn gdb -nw -nx -quiet -batch -ex python print(gdb.type_printers)
[]
spawn gdb -nx -nw -quiet -batch -x simple.gdb
simple.gdb:2: Error in sourced command file:
./simple.exe: No such file or directory.
skipping: simple.gdb:2: Error in sourced command file:
skipping: ./simple.exe: No such file or directory.
UNSUPPORTED: libstdc++-prettyprinters/simple.cc
I also see signs of the same on powerpc64le
(https://gcc.gnu.org/ml/gcc-testresults/2015-11/msg02699.html), the test looks
to be passing on trunk on all three platforms.
Thanks, Alan
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-25 17:32 ` Alan Lawrence
@ 2015-11-25 18:57 ` Doug Evans
2015-11-25 19:59 ` Jonathan Wakely
1 sibling, 0 replies; 8+ messages in thread
From: Doug Evans @ 2015-11-25 18:57 UTC (permalink / raw)
To: Alan Lawrence, Jonathan Wakely; +Cc: gcc-patches, libstdc++
[-- Attachment #1: Type: text/plain, Size: 3279 bytes --]
On Wed, Nov 25, 2015 at 9:29 AM, Alan Lawrence <alan.lawrence@arm.com> wrote:
> On 16/11/15 21:04, Doug Evans wrote:
>>
>> Hi.
>>
>> Apologies for the delay.
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>>
>> Tested with current trunk.
>>
>> 2015-11-16 Doug Evans <dje@google.com>
>>
>> PR libstdc++/67440
>> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
>> type name.
>> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
>> const set<int>.
>> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
>> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>
>
> On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
> either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
>
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:
> In function 'int main()':
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
> error: in C++98 'const_intset' must be initialized by constructor, not by
> '{...}'
> const std::set<int> const_intset = {2, 3};
> ^
> In file included from
> /work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/map:60:0,
> from
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:31:
> /work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_tree.h:
> In instantiation of 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare,
> _Alloc>::_M_insert_unique(_II, _II) [with _InputIterator = int; _Key = int;
> _Val = int; _KeyOfValue = std::_Identity<int>; _Compare = std::less<int>;
> _Alloc = std::allocator<int>]':
> /work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_set.h:171:4:
> required from 'std::set<_Key, _Compare, _Alloc>::set(_InputIterator,
> _InputIterator) [with _InputIterator = int; _Key = int; _Compare =
> std::less<int>; _Alloc = std::allocator<int>]'
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
> required from here
> /work/alalaw01/build_dje/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/stl_tree.h:2224:29:
> error: invalid type argument of unary '*' (have 'int')
> _M_insert_unique_(end(), *__first, __an);
> ^
> compiler exited with status 1
> UNRESOLVED: libstdc++-prettyprinters/simple.cc compilation failed to produce
> executable
> Spawning: gdb -nw -nx -quiet -batch -ex "python print(gdb.type_printers)"
> spawn gdb -nw -nx -quiet -batch -ex python print(gdb.type_printers)
> []
> spawn gdb -nx -nw -quiet -batch -x simple.gdb
> simple.gdb:2: Error in sourced command file:
> ./simple.exe: No such file or directory.
> skipping: simple.gdb:2: Error in sourced command file:
> skipping: ./simple.exe: No such file or directory.
> UNSUPPORTED: libstdc++-prettyprinters/simple.cc
>
> I also see signs of the same on powerpc64le
> (https://gcc.gnu.org/ml/gcc-testresults/2015-11/msg02699.html), the test
> looks to be passing on trunk on all three platforms.
>
> Thanks, Alan
Bleah, mea culpa.
While we might be able to revise the testcase and keep the fix,
I think a good first step is to just revert.
[-- Attachment #2: 67440-2-revert.patch.txt --]
[-- Type: text/plain, Size: 2861 bytes --]
2015-11-25 Doug Evans <dje@google.com>
Revert:
PR libstdc++/67440
* python/libstdcxx/v6/printers.py (find_type): Handle "const" in
type name.
* testsuite/libstdc++-prettyprinters/debug.cc: Add test for
const set<int>.
* testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
* testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
Index: python/libstdcxx/v6/printers.py
===================================================================
--- python/libstdcxx/v6/printers.py (revision 230895)
+++ python/libstdcxx/v6/printers.py (working copy)
@@ -85,9 +85,7 @@
def find_type(orig, name):
typ = orig.strip_typedefs()
while True:
- # Use typ.name here instead of str(typ) to discard any const,etc.
- # qualifiers. PR 67440.
- search = typ.name + '::' + name
+ search = str(typ) + '::' + name
try:
return gdb.lookup_type(search)
except RuntimeError:
Index: testsuite/libstdc++-prettyprinters/debug.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/debug.cc (revision 230895)
+++ testsuite/libstdc++-prettyprinters/debug.cc (working copy)
@@ -70,10 +70,6 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
- // PR 67440
- const std::set<int> const_intset = {2, 3};
-// { dg-final { note-test const_intset {std::__debug::set with 2 elements = {[0] = 2, [1] = 3}} } }
-
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
Index: testsuite/libstdc++-prettyprinters/simple.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/simple.cc (revision 230895)
+++ testsuite/libstdc++-prettyprinters/simple.cc (working copy)
@@ -73,10 +73,6 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
- // PR 67440
- const std::set<int> const_intset = {2, 3};
-// { dg-final { note-test const_intset {std::set with 2 elements = {[0] = 2, [1] = 3}} } }
-
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
Index: testsuite/libstdc++-prettyprinters/simple11.cc
===================================================================
--- testsuite/libstdc++-prettyprinters/simple11.cc (revision 230895)
+++ testsuite/libstdc++-prettyprinters/simple11.cc (working copy)
@@ -73,10 +73,6 @@
std::map<std::string, int>::iterator mpiter = mp.begin();
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
- // PR 67440
- const std::set<int> const_intset = {2, 3};
-// { dg-final { note-test const_intset {std::set with 2 elements = {[0] = 2, [1] = 3}} } }
-
std::set<std::string> sp;
sp.insert("clownfish");
sp.insert("barrel");
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-25 17:32 ` Alan Lawrence
2015-11-25 18:57 ` Doug Evans
@ 2015-11-25 19:59 ` Jonathan Wakely
2015-11-26 15:55 ` Jonathan Wakely
1 sibling, 1 reply; 8+ messages in thread
From: Jonathan Wakely @ 2015-11-25 19:59 UTC (permalink / raw)
To: Alan Lawrence; +Cc: Doug Evans, gcc-patches, libstdc++
On 25 November 2015 at 17:29, Alan Lawrence <alan.lawrence@arm.com> wrote:
> On 16/11/15 21:04, Doug Evans wrote:
>>
>> Hi.
>>
>> Apologies for the delay.
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>>
>> Tested with current trunk.
>>
>> 2015-11-16 Doug Evans <dje@google.com>
>>
>> PR libstdc++/67440
>> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
>> type name.
>> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
>> const set<int>.
>> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
>> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>
>
> On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
> either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
>
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:
> In function 'int main()':
> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
> error: in C++98 'const_intset' must be initialized by constructor, not by
> '{...}'
> const std::set<int> const_intset = {2, 3};
> ^
Which should have failed to compile on trunk as well, but we're
missing a -std=gnu++98 in the simple.cc testcase, so on trunk it uses
the -std=gnu++14 default. I'll add -std=gnu++98 to the test.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-25 19:59 ` Jonathan Wakely
@ 2015-11-26 15:55 ` Jonathan Wakely
2015-11-26 16:10 ` Jonathan Wakely
0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Wakely @ 2015-11-26 15:55 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: Alan Lawrence, Doug Evans, gcc-patches, libstdc++
[-- Attachment #1: Type: text/plain, Size: 1561 bytes --]
On 25/11/15 19:55 +0000, Jonathan Wakely wrote:
>On 25 November 2015 at 17:29, Alan Lawrence <alan.lawrence@arm.com> wrote:
>> On 16/11/15 21:04, Doug Evans wrote:
>>>
>>> Hi.
>>>
>>> Apologies for the delay.
>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>>>
>>> Tested with current trunk.
>>>
>>> 2015-11-16 Doug Evans <dje@google.com>
>>>
>>> PR libstdc++/67440
>>> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
>>> type name.
>>> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
>>> const set<int>.
>>> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
>>> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>>
>>
>> On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
>> either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
>>
>> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:
>> In function 'int main()':
>> /work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
>> error: in C++98 'const_intset' must be initialized by constructor, not by
>> '{...}'
>> const std::set<int> const_intset = {2, 3};
>> ^
>
>Which should have failed to compile on trunk as well, but we're
>missing a -std=gnu++98 in the simple.cc testcase, so on trunk it uses
>the -std=gnu++14 default. I'll add -std=gnu++98 to the test.
I've committed this to trunk, and will apply it to gcc-5-branch after
I finish testing it on the branch.
[-- Attachment #2: patch.txt --]
[-- Type: text/x-patch, Size: 1234 bytes --]
commit 0ee15827a1132aeb960ff613ecafd8351a2535e0
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Nov 26 15:10:15 2015 +0000
Ensure pretty-printer test uses C++98 mode
* testsuite/libstdc++-prettyprinters/simple.cc: Add -std=gnu++98 to
dg-options and avoid use of uniform-init.
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
index 68c4d83..e1956bf 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
@@ -1,7 +1,7 @@
// If you modify this, please update simple11.cc and debug.cc as well.
// { dg-do run }
-// { dg-options "-g -O0" }
+// { dg-options "-g -O0 -std=gnu++98" }
// Copyright (C) 2011-2015 Free Software Foundation, Inc.
//
@@ -74,7 +74,10 @@ main()
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
// PR 67440
- const std::set<int> const_intset = {2, 3};
+ std::set<int> intset;
+ intset.insert(2);
+ intset.insert(3);
+ const std::set<int> const_intset = intset;
// { dg-final { note-test const_intset {std::set with 2 elements = {[0] = 2, [1] = 3}} } }
std::set<std::string> sp;
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-26 15:55 ` Jonathan Wakely
@ 2015-11-26 16:10 ` Jonathan Wakely
2015-11-26 16:36 ` Jonathan Wakely
0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Wakely @ 2015-11-26 16:10 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: Alan Lawrence, Doug Evans, gcc-patches, libstdc++
On 26/11/15 15:42 +0000, Jonathan Wakely wrote:
>On 25/11/15 19:55 +0000, Jonathan Wakely wrote:
>>On 25 November 2015 at 17:29, Alan Lawrence <alan.lawrence@arm.com> wrote:
>>>On 16/11/15 21:04, Doug Evans wrote:
>>>>
>>>>Hi.
>>>>
>>>>Apologies for the delay.
>>>>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>>>>
>>>>Tested with current trunk.
>>>>
>>>>2015-11-16 Doug Evans <dje@google.com>
>>>>
>>>> PR libstdc++/67440
>>>> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
>>>> type name.
>>>> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
>>>> const set<int>.
>>>> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
>>>> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>>>
>>>
>>>On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
>>>either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
>>>
>>>/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:
>>>In function 'int main()':
>>>/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
>>>error: in C++98 'const_intset' must be initialized by constructor, not by
>>>'{...}'
>>> const std::set<int> const_intset = {2, 3};
>>> ^
>>
>>Which should have failed to compile on trunk as well, but we're
>>missing a -std=gnu++98 in the simple.cc testcase, so on trunk it uses
>>the -std=gnu++14 default. I'll add -std=gnu++98 to the test.
>
>I've committed this to trunk, and will apply it to gcc-5-branch after
>I finish testing it on the branch.
Doh, but I need to fix debug.cc as well, another patch coming ...
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails
2015-11-26 16:10 ` Jonathan Wakely
@ 2015-11-26 16:36 ` Jonathan Wakely
0 siblings, 0 replies; 8+ messages in thread
From: Jonathan Wakely @ 2015-11-26 16:36 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: Alan Lawrence, Doug Evans, gcc-patches, libstdc++
[-- Attachment #1: Type: text/plain, Size: 1838 bytes --]
On 26/11/15 16:10 +0000, Jonathan Wakely wrote:
>On 26/11/15 15:42 +0000, Jonathan Wakely wrote:
>>On 25/11/15 19:55 +0000, Jonathan Wakely wrote:
>>>On 25 November 2015 at 17:29, Alan Lawrence <alan.lawrence@arm.com> wrote:
>>>>On 16/11/15 21:04, Doug Evans wrote:
>>>>>
>>>>>Hi.
>>>>>
>>>>>Apologies for the delay.
>>>>>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67440
>>>>>
>>>>>Tested with current trunk.
>>>>>
>>>>>2015-11-16 Doug Evans <dje@google.com>
>>>>>
>>>>> PR libstdc++/67440
>>>>> * python/libstdcxx/v6/printers.py (find_type): Handle "const" in
>>>>> type name.
>>>>> * testsuite/libstdc++-prettyprinters/debug.cc: Add test for
>>>>> const set<int>.
>>>>> * testsuite/libstdc++-prettyprinters/simple.cc: Ditto.
>>>>> * testsuite/libstdc++-prettyprinters/simple11.cc: Ditto.
>>>>
>>>>
>>>>On gcc-5-branch, the debug.cc and simple.cc tests don't seem to compile, on
>>>>either x86_64-none-linux-gnu or aarch64-none-linux-gnu. I get errors like:
>>>>
>>>>/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:
>>>>In function 'int main()':
>>>>/work/alalaw01/src/gcc/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc:77:43:
>>>>error: in C++98 'const_intset' must be initialized by constructor, not by
>>>>'{...}'
>>>> const std::set<int> const_intset = {2, 3};
>>>> ^
>>>
>>>Which should have failed to compile on trunk as well, but we're
>>>missing a -std=gnu++98 in the simple.cc testcase, so on trunk it uses
>>>the -std=gnu++14 default. I'll add -std=gnu++98 to the test.
>>
>>I've committed this to trunk, and will apply it to gcc-5-branch after
>>I finish testing it on the branch.
>
>Doh, but I need to fix debug.cc as well, another patch coming ...
Same change for debug.cc, committing on trunk and gcc-5-branch.
[-- Attachment #2: patch.txt --]
[-- Type: text/x-patch, Size: 1172 bytes --]
commit 9cfee9f413f80091d03f2483697f95316a785354
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Nov 26 16:11:37 2015 +0000
Ensure another pretty-printer test uses C++98 mode
* testsuite/libstdc++-prettyprinters/debug.cc: Add -std=gnu++98 to
dg-options and avoid use of uniform-init.
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
index 8d40f17..046888f 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
@@ -1,5 +1,5 @@
// { dg-do run }
-// { dg-options "-g -O0" }
+// { dg-options "-g -O0 -std=gnu++98" }
// Copyright (C) 2011-2015 Free Software Foundation, Inc.
//
@@ -71,7 +71,10 @@ main()
// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
// PR 67440
- const std::set<int> const_intset = {2, 3};
+ std::set<int> intset;
+ intset.insert(2);
+ intset.insert(3);
+ const std::set<int> const_intset = intset;
// { dg-final { note-test const_intset {std::__debug::set with 2 elements = {[0] = 2, [1] = 3}} } }
std::set<std::string> sp;
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-11-26 16:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-16 21:04 [PATCH] libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails Doug Evans
2015-11-16 21:24 ` Jonathan Wakely
2015-11-25 17:32 ` Alan Lawrence
2015-11-25 18:57 ` Doug Evans
2015-11-25 19:59 ` Jonathan Wakely
2015-11-26 15:55 ` Jonathan Wakely
2015-11-26 16:10 ` Jonathan Wakely
2015-11-26 16:36 ` Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).