aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Demangle/ItaniumDemangle.cpp
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2018-04-09 18:32:25 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2018-04-09 18:32:25 +0000
commit452e2ef996bbe70da9634bc03c314aaf5cd90879 (patch)
tree58ff0b3afe5362b35602abea99217f415b1ba1df /llvm/lib/Demangle/ItaniumDemangle.cpp
parent650130ac04c608df194a28e1e2ce397ee0e16851 (diff)
downloadllvm-452e2ef996bbe70da9634bc03c314aaf5cd90879.zip
llvm-452e2ef996bbe70da9634bc03c314aaf5cd90879.tar.gz
llvm-452e2ef996bbe70da9634bc03c314aaf5cd90879.tar.bz2
[demangler] Support for <data-member-prefix>.
llvm-svn: 329600
Diffstat (limited to 'llvm/lib/Demangle/ItaniumDemangle.cpp')
-rw-r--r--llvm/lib/Demangle/ItaniumDemangle.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Demangle/ItaniumDemangle.cpp b/llvm/lib/Demangle/ItaniumDemangle.cpp
index 894af7e..49eed06 100644
--- a/llvm/lib/Demangle/ItaniumDemangle.cpp
+++ b/llvm/lib/Demangle/ItaniumDemangle.cpp
@@ -2631,6 +2631,8 @@ Node *Db::parseCtorDtorName(Node *&SoFar, NameState *State) {
// ::= <prefix> <data-member-prefix>
// extension ::= L
//
+// <data-member-prefix> := <member source-name> [<template-args>] M
+//
// <template-prefix> ::= <prefix> <template unqualified-name>
// ::= <template-param>
// ::= <substitution>
@@ -2661,6 +2663,13 @@ Node *Db::parseNestedName(NameState *State) {
while (!consumeIf('E')) {
consumeIf('L'); // extension
+ // <data-member-prefix> := <member source-name> [<template-args>] M
+ if (consumeIf('M')) {
+ if (SoFar == nullptr)
+ return nullptr;
+ continue;
+ }
+
// ::= <template-param>
if (look() == 'T') {
Node *TP = parseTemplateParam();