aboutsummaryrefslogtreecommitdiff
path: root/libiberty/cp-demangle.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2016-11-02 01:50:29 +0000
committerMark Wielaard <mark@klomp.org>2016-11-18 11:06:18 +0100
commitef0f5d7cc3b2082c94beffa7c9c1a8acd8eaa427 (patch)
treeacf76115758d10542892bd26416076864d3c03e3 /libiberty/cp-demangle.c
parentaba19b625f34fb3d61263fe8044cf0c6d8804570 (diff)
downloadgdb-ef0f5d7cc3b2082c94beffa7c9c1a8acd8eaa427.zip
gdb-ef0f5d7cc3b2082c94beffa7c9c1a8acd8eaa427.tar.gz
gdb-ef0f5d7cc3b2082c94beffa7c9c1a8acd8eaa427.tar.bz2
Implement P0136R1, Rewording inheriting constructors.
libiberty/ * cp-demangle.c (d_ctor_dtor_name): Handle inheriting constructor.
Diffstat (limited to 'libiberty/cp-demangle.c')
-rw-r--r--libiberty/cp-demangle.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index a843dc3..46382cc 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -2168,6 +2168,13 @@ d_ctor_dtor_name (struct d_info *di)
case 'C':
{
enum gnu_v3_ctor_kinds kind;
+ int inheriting = 0;
+
+ if (d_peek_next_char (di) == 'I')
+ {
+ inheriting = 1;
+ d_advance (di, 1);
+ }
switch (d_peek_next_char (di))
{
@@ -2189,7 +2196,12 @@ d_ctor_dtor_name (struct d_info *di)
default:
return NULL;
}
+
d_advance (di, 2);
+
+ if (inheriting)
+ cplus_demangle_type (di);
+
return d_make_ctor (di, kind, di->last_name);
}