diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-02-08 14:16:09 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-02-08 14:16:09 +0000 |
commit | 7938f3c68f6d1c0778cd5aedbc9e98060e2b1921 (patch) | |
tree | 5fc6a6211eeb9ccbad1ecaa0e4fd9a94f87ac4eb /libstdc++-v3 | |
parent | e725de28ae53699805996a0f551143843060a243 (diff) |
PR libstdc++/65229 fix pretty printer for std::bitset<0>
Backport from mainline
2018-11-23 Martin Sebor <msebor@redhat.com>
Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/65229
* python/libstdcxx/v6/printers.py (StdBitsetPrinter): Handle
exception thrown for std::bitset<0>.
* testsuite/libstdc++-prettyprinters/simple.cc: Test std::bitset<0>.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@268693 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 11 | ||||
-rw-r--r-- | libstdc++-v3/python/libstdcxx/v6/printers.py | 13 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc | 4 |
3 files changed, 24 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 3584f3734fb..11964443c01 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,6 +1,17 @@ 2019-02-08 Jonathan Wakely <jwakely@redhat.com> Backport from mainline + 2018-11-23 Martin Sebor <msebor@redhat.com> + Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/65229 + * python/libstdcxx/v6/printers.py (StdBitsetPrinter): Handle + exception thrown for std::bitset<0>. + * testsuite/libstdc++-prettyprinters/simple.cc: Test std::bitset<0>. + +2019-02-08 Jonathan Wakely <jwakely@redhat.com> + + Backport from mainline 2018-11-23 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/87308 (partial) diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index 06fab6a3d8f..37b8173435d 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -691,7 +691,13 @@ class StdBitsetPrinter: return '%s' % (self.typename) def children (self): - words = self.val['_M_w'] + try: + # An empty bitset may not have any members which will + # result in an exception being thrown. + words = self.val['_M_w'] + except: + return [] + wtype = words.type # The _M_w member can be either an unsigned long, or an @@ -701,7 +707,7 @@ class StdBitsetPrinter: tsize = wtype.target ().sizeof else: words = [words] - tsize = wtype.sizeof + tsize = wtype.sizeof nwords = wtype.sizeof / tsize result = [] @@ -837,7 +843,7 @@ class Tr1HashtableIterator(Iterator): self.node = self.buckets[self.bucket] if self.node: break - self.bucket = self.bucket + 1 + self.bucket = self.bucket + 1 def __iter__ (self): return self @@ -940,7 +946,6 @@ class Tr1UnorderedMapPrinter: data = self.flatten (imap (self.format_one, StdHashtableIterator (self.hashtable()))) # Zip the two iterators together. return izip (counter, data) - def display_hint (self): return 'map' diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc index 1ed8184a853..088c65dfe48 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc @@ -41,6 +41,10 @@ main() std::string str = "zardoz"; // { dg-final { note-test str "\"zardoz\"" } } + // PR 65229 + std::bitset<0> bs0; +// { dg-final { note-test bs0 {std::bitset} } } + std::bitset<10> bs; bs[0] = 1; bs[5] = 1; |