]> granicus.if.org Git - clang/commit
[mangle] Fix mangling where an extra mangle context is required.
authorMichael Liao <michael.hliao@gmail.com>
Wed, 9 Oct 2019 19:08:52 +0000 (19:08 +0000)
committerMichael Liao <michael.hliao@gmail.com>
Wed, 9 Oct 2019 19:08:52 +0000 (19:08 +0000)
commit24b7c8b31cc50df1e1f7d608d11fd6eb2736b9b0
treebc1b40b5e211afd2d16d053897abc39283caec04
parente6a0ab18d19b69e35743015853844d7305891e4e
[mangle] Fix mangling where an extra mangle context is required.

Summary:
- [Itanium C++ ABI][1], for certain contexts like default parameter and
  etc., mangling numbering will be local to the particular argument in
  which it appears.
- However, for these cases, the mangle numbering context is allocated per
  expression evaluation stack entry. That causes, for example, two
  lambdas defined/used understand the same default parameter are
  numbered as the same value and, in turn, one of them is not generated
  at all.
- In this patch, an extra mangle numbering context map is maintained in
  the AST context to map taht extra declaration context to its numbering
  context. So that, 2 different lambdas defined/used in the same default
  parameter are numbered differently.

[1]: https://itanium-cxx-abi.github.io/cxx-abi/abi.html

Reviewers: rsmith, eli.friedman

Subscribers: cfe-commits

Tags: #clang

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@374200 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/ASTContext.h
include/clang/Sema/Sema.h
lib/AST/ASTContext.cpp
lib/Sema/SemaLambda.cpp
test/CodeGenCXX/mangle-lambdas.cpp