aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-09-22 11:06:41 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-09-22 11:06:41 +0100
commit6fdc74c91b2d1dc12544a351721d647be1a84085 (patch)
tree0661d922cfaf405d48e8eb51b75f04efaf6e44b1
parent64626fcaaaa2584a244db423d48e5bebfc6ade33 (diff)
downloadgcc-6fdc74c91b2d1dc12544a351721d647be1a84085.zip
gcc-6fdc74c91b2d1dc12544a351721d647be1a84085.tar.gz
gcc-6fdc74c91b2d1dc12544a351721d647be1a84085.tar.bz2
Update pretty printer for std::variant
* python/libstdcxx/v6/printers.py (StdVariantPrinter): Adjust for recent change to _Variant_storage. * testsuite/libstdc++-prettyprinters/cxx17.cc: Test variant with reference type. From-SVN: r240345
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py2
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc3
3 files changed, 9 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 080b470..e9bb0ce 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2016-09-22 Jonathan Wakely <jwakely@redhat.com>
+ * python/libstdcxx/v6/printers.py (StdVariantPrinter): Adjust for
+ recent change to _Variant_storage.
+ * testsuite/libstdc++-prettyprinters/cxx17.cc: Test variant with
+ reference type.
+
* include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
std::forward and ::new. Cast pointer to void*.
* include/std/variant (_Variant_storage, _Union, _Variant_base)
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index ac529dd..18c6f6b 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -994,7 +994,7 @@ class StdVariantPrinter(SingleObjContainerPrinter):
visualizer = None
else:
self.contained_type = alternatives[int(self.index)]
- addr = val['_M_first']['_M_storage'].address
+ addr = val['_M_union']['_M_first']['_M_storage'].address
contained_value = addr.cast(self.contained_type.pointer()).dereference()
visualizer = gdb.default_visualizer(contained_value)
super (StdVariantPrinter, self).__init__(contained_value, visualizer, 'array')
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
index 42d79c0..09d79e9 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
@@ -84,6 +84,9 @@ main()
variant<float, int, string_view> v4{ str };
// { dg-final { note-test v4 {std::variant<float, int, std::string_view> [index 2] = {"string"}} } }
+ variant<string_view&> vref{str};
+// { dg-final { note-test vref {std::variant<std::basic_string_view<char, std::char_traits<char> > &> [index 0] = {"string"}} } }
+
std::cout << "\n";
return 0; // Mark SPOT
}