diff mbox

libstdc++: Fix libstdc++/67440: pretty-printing of a const set<foo> fails

Message ID 20151126154259.GQ11200@redhat.com
State New
Headers show

Commit Message

Jonathan Wakely Nov. 26, 2015, 3:42 p.m. UTC
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.

Comments

Jonathan Wakely Nov. 26, 2015, 4:10 p.m. UTC | #1
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 ...
diff mbox

Patch

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;