diff options
author | Artemiy Volkov <artemiyv@acm.org> | 2016-05-18 21:52:26 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2016-05-18 15:52:26 -0600 |
commit | 9b27f1138f0507b4af6d8067686305112eb0485d (patch) | |
tree | f902a8b1ec7b2b79f69a6468834264f32c5db720 /libiberty/cplus-dem.c | |
parent | 960db8ec97c6b2d8381040f71b5852d1854197da (diff) | |
download | gcc-9b27f1138f0507b4af6d8067686305112eb0485d.zip gcc-9b27f1138f0507b4af6d8067686305112eb0485d.tar.gz gcc-9b27f1138f0507b4af6d8067686305112eb0485d.tar.bz2 |
cplus-dem.c (enum type_kind_t): Add tk_rvalue_reference constant.
* cplus-dem.c (enum type_kind_t): Add tk_rvalue_reference
constant.
(demangle_template_value_parm): Handle tk_rvalue_reference
type kind.
(do_type): Support 'O' type id (rvalue references).
* testsuite/demangle-expected: Add tests.
From-SVN: r236434
Diffstat (limited to 'libiberty/cplus-dem.c')
-rw-r--r-- | libiberty/cplus-dem.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 7514e57..d04c32a 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -244,6 +244,7 @@ typedef enum type_kind_t tk_none, tk_pointer, tk_reference, + tk_rvalue_reference, tk_integral, tk_bool, tk_char, @@ -2042,7 +2043,8 @@ demangle_template_value_parm (struct work_stuff *work, const char **mangled, } else if (tk == tk_real) success = demangle_real_value (work, mangled, s); - else if (tk == tk_pointer || tk == tk_reference) + else if (tk == tk_pointer || tk == tk_reference + || tk == tk_rvalue_reference) { if (**mangled == 'Q') success = demangle_qualified (work, mangled, s, @@ -3588,6 +3590,14 @@ do_type (struct work_stuff *work, const char **mangled, string *result) tk = tk_reference; break; + /* An rvalue reference type */ + case 'O': + (*mangled)++; + string_prepend (&decl, "&&"); + if (tk == tk_none) + tk = tk_rvalue_reference; + break; + /* An array */ case 'A': { @@ -3645,7 +3655,6 @@ do_type (struct work_stuff *work, const char **mangled, string *result) break; case 'M': - case 'O': { type_quals = TYPE_UNQUALIFIED; |