New C++ function name parsing logic (Resubmit)

Description

New C++ function name parsing logic (Resubmit)

Current implementation of CPlusPlusLanguage::MethodName::Parse() doesn't
get anywhere close to covering full extent of possible function declarations.
It causes incorrect behavior in avoid-stepping and sometimes messes
printing of thread backtrace.

This change implements more methodical parsing logic based on clang
lexer and simple recursive parser.

Examples:
void std::vector<Class, std::allocator<Class>>::_M_emplace_back_aux<Class const&>(Class const&)
void (*&std::_Any_data::_M_access<void (*)()>())()

Previous version of this change (D31451) was rolled back due to an issue
with Objective-C selectors being incorrectly recognized as a C++ identifier.

Differential Revision: https://reviews.llvm.org/D31451

Details

Committed
eugeneApr 6 2017, 3:36 PM
Differential Revision
D31451: New C++ function name parsing logic
Parents
rL299720: [X86] Revert r299387 due to AVX legalization infinite loop.
Branches
Unknown
Tags
Unknown