aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-09-06 23:53:21 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-09-06 23:53:21 +0000
commit4bbe85c5d4e7535a55e3455de310868067d0182a (patch)
tree35f8b1a4265a2ee29610ff5a1577ea265718681e /clang/lib/Frontend/CompilerInvocation.cpp
parent28328c3771e4241366ecb7aba8963dc92b3065d7 (diff)
downloadllvm-4bbe85c5d4e7535a55e3455de310868067d0182a.zip
llvm-4bbe85c5d4e7535a55e3455de310868067d0182a.tar.gz
llvm-4bbe85c5d4e7535a55e3455de310868067d0182a.tar.bz2
Implement demangling support for C++20 lambda expression extensions.
This implements demangling support for the mangling extensions specified in https://github.com/itanium-cxx-abi/cxx-abi/pull/85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). llvm-svn: 371273
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions