[demangler] Support for block literals.

llvm-svn: 351482
This commit is contained in:
Erik Pilkington 2019-01-17 21:37:51 +00:00
parent 75a4d7644e
commit b2d6c298af
3 changed files with 14 additions and 0 deletions

View File

@ -2480,6 +2480,12 @@ AbstractManglingParser<Derived, Alloc>::parseUnnamedTypeName(NameState *) {
return nullptr;
return make<ClosureTypeName>(Params, Count);
}
if (consumeIf("Ub")) {
(void)parseNumber();
if (!consumeIf('_'))
return nullptr;
return make<NameType>("'block-literal'");
}
return nullptr;
}

View File

@ -29759,6 +29759,8 @@ const char* cases[][2] =
// Darwin adds leading underscores to symbols, just demangle them anyways.
{"____Z3foo_block_invoke.25", "invocation function for block in foo"},
{"__Z1fv", "f()"},
{"_Z2tfIZUb_E1SEiv", "int tf<'block-literal'::S>()"}
};
const unsigned N = sizeof(cases) / sizeof(cases[0]);

View File

@ -2480,6 +2480,12 @@ AbstractManglingParser<Derived, Alloc>::parseUnnamedTypeName(NameState *) {
return nullptr;
return make<ClosureTypeName>(Params, Count);
}
if (consumeIf("Ub")) {
(void)parseNumber();
if (!consumeIf('_'))
return nullptr;
return make<NameType>("'block-literal'");
}
return nullptr;
}