[all-commits] [llvm/llvm-project] d1d35f: [clang] Fix initializer_list matching failures wit...
Alan Zhao via All-commits
all-commits at lists.llvm.org
Tue May 9 10:31:58 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d1d35f04c6cb2e3d5b0fbc6101d5425a33f8fc63
https://github.com/llvm/llvm-project/commit/d1d35f04c6cb2e3d5b0fbc6101d5425a33f8fc63
Author: Alan Zhao <ayzhao at google.com>
Date: 2023-05-09 (Tue, 09 May 2023)
Changed paths:
M clang/include/clang/AST/DeclBase.h
M clang/lib/Sema/SemaDeclCXX.cpp
A clang/test/Modules/match_initializer_list.cpp
Log Message:
-----------
[clang] Fix initializer_list matching failures with modules
Previously, if a class with a defined public virtual destructor is
declared before including <initializer_list> and initializer_list is
provided via a Clang module, then overload resolution would fail for
std::initializer_list. This is because when Clang sees the virtual
destructor, Clang creates an implicit NamespaceDecl for std to
implicitly declare a std::bad_alloc. That NamespaceDecl is not added to
the translation unit's lookup table, so when the module containing
std::initializer_list is imported later, that module's std NamespaceDecl
can't find the previous std NamespaceDecl during redeclaration lookup,
causing overload resolution to fail.
To fix this, implicitly created std NamespaceDecls are now added to the
lookup map. At the same time, their IdentifierNamespace members are
cleared to prevent regular name lookups from finding it.
Fixes 60929
Reviewed By: ChuanqiXu, #clang-language-wg, inclyc
Differential Revision: https://reviews.llvm.org/D150001
More information about the All-commits
mailing list