Re-apply "Deferred Concept Instantiation Implementation"
authorErich Keane <erich.keane@intel.com>
Fri, 19 Aug 2022 20:57:45 +0000 (13:57 -0700)
committerErich Keane <erich.keane@intel.com>
Thu, 22 Sep 2022 12:53:59 +0000 (05:53 -0700)
commitbabdef27c503c0bbbcc017e9f88affddda90ea4e
tree0a1a205d13d3f48543af4b3e938f2fd1d2ea3ba6
parente0cdafe8d4b2f1585f4756447b677fec37954ec4
Re-apply "Deferred Concept Instantiation Implementation"

This reverts commit 95d94a67755620c0a2871ac6f056ca8e9731d5e9.

This implements the deferred concepts instantiation, which should allow
the libstdc++ ranges to properly compile, and for the CRTP to work for
constrained functions.

Since the last attempt, this has fixed the issues from @wlei and
@mordante.

Differential Revision: https://reviews.llvm.org/D126907
31 files changed:
clang/docs/ReleaseNotes.rst
clang/include/clang/AST/ASTContext.h
clang/include/clang/AST/Decl.h
clang/include/clang/AST/DeclBase.h
clang/include/clang/Sema/Sema.h
clang/include/clang/Sema/Template.h
clang/lib/AST/ASTContext.cpp
clang/lib/AST/ASTImporter.cpp
clang/lib/AST/Decl.cpp
clang/lib/Sema/SemaConcept.cpp
clang/lib/Sema/SemaDecl.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaOverload.cpp
clang/lib/Sema/SemaTemplate.cpp
clang/lib/Sema/SemaTemplateDeduction.cpp
clang/lib/Sema/SemaTemplateInstantiate.cpp
clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
clang/lib/Sema/TreeTransform.h
clang/lib/Serialization/ASTReaderDecl.cpp
clang/lib/Serialization/ASTReaderStmt.cpp
clang/lib/Serialization/ASTWriterDecl.cpp
clang/test/CXX/temp/temp.constr/temp.constr.constr/non-function-templates.cpp
clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp
clang/test/CXX/temp/temp.constr/temp.constr.order/var-template-partial-specializations.cpp
clang/test/Modules/concept_serialization.cpp [new file with mode: 0644]
clang/test/SemaCXX/constrained-special-member-functions.cpp
clang/test/SemaTemplate/concepts-friends.cpp [new file with mode: 0644]
clang/test/SemaTemplate/concepts.cpp
clang/test/SemaTemplate/deferred-concept-inst.cpp [new file with mode: 0644]
clang/test/SemaTemplate/instantiate-requires-clause.cpp
clang/test/SemaTemplate/trailing-return-short-circuit.cpp [new file with mode: 0644]