]> granicus.if.org Git - clang/commit
Track the result of evaluating a computed noexcept specification on the
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 3 May 2018 03:58:32 +0000 (03:58 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 3 May 2018 03:58:32 +0000 (03:58 +0000)
commit5d50602a8de220e1f0bbdd136e9a7be21a1b63c0
tree56c14c86c79d2eb98ffc04db73f69193ee058677
parente1e48fb15a484fabf1be1a58e7555f1dba208475
Track the result of evaluating a computed noexcept specification on the
FunctionProtoType.

We previously re-evaluated the expression each time we wanted to know whether
the type is noexcept or not. We now evaluate the expression exactly once.

This is not quite "no functional change": it fixes a crasher bug during AST
deserialization where we would try to evaluate the noexcept specification in a
situation where we have not deserialized sufficient portions of the AST to
permit such evaluation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331428 91177308-0d34-0410-b5e6-96231b3b80d8
33 files changed:
include/clang/AST/Type.h
include/clang/ASTMatchers/ASTMatchers.h
include/clang/Basic/ExceptionSpecificationType.h
include/clang/Sema/Sema.h
lib/AST/ASTContext.cpp
lib/AST/ASTStructuralEquivalence.cpp
lib/AST/DeclPrinter.cpp
lib/AST/ExprCXX.cpp
lib/AST/ItaniumMangle.cpp
lib/AST/Type.cpp
lib/AST/TypePrinter.cpp
lib/Analysis/CFG.cpp
lib/CodeGen/CGCall.cpp
lib/CodeGen/CGException.cpp
lib/CodeGen/ItaniumCXXABI.cpp
lib/Parse/ParseDeclCXX.cpp
lib/Sema/AnalysisBasedWarnings.cpp
lib/Sema/DeclSpec.cpp
lib/Sema/SemaChecking.cpp
lib/Sema/SemaCoroutine.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExceptionSpec.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaOverload.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaTemplateVariadic.cpp
lib/Sema/SemaType.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
test/Modules/cxx17-exception-spec.cpp [new file with mode: 0644]