aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-08 14:16:09 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-08 14:16:09 +0000
commit7938f3c68f6d1c0778cd5aedbc9e98060e2b1921 (patch)
tree5fc6a6211eeb9ccbad1ecaa0e4fd9a94f87ac4eb /libstdc++-v3
parente725de28ae53699805996a0f551143843060a243 (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/ChangeLog11
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py13
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc4
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;