diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-20 21:47:22 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-20 21:47:22 +0000 |
commit | 564417a071794203dfff574b0aee897fc4643266 (patch) | |
tree | e372f810b434a87770d0d41a85f57b20194b612f /clang/lib/Serialization/ASTReaderDecl.cpp | |
parent | 56b26a5707f482a480c124d84f25e427caa0513b (diff) | |
download | bcm5719-llvm-564417a071794203dfff574b0aee897fc4643266.tar.gz bcm5719-llvm-564417a071794203dfff574b0aee897fc4643266.zip |
When the exception specification for a function in an imported PCH or module is
resolved, emit an update record.
llvm-svn: 204403
Diffstat (limited to 'clang/lib/Serialization/ASTReaderDecl.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index f9a080d9088..53c26e94e1f 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2944,6 +2944,17 @@ void ASTDeclReader::UpdateDecl(Decl *D, ModuleFile &ModuleFile, Reader.ReadSourceLocation(ModuleFile, Record, Idx)); break; + case UPD_CXX_RESOLVED_EXCEPTION_SPEC: { + auto *FD = cast<FunctionDecl>(D); + auto *FPT = FD->getType()->castAs<FunctionProtoType>(); + auto EPI = FPT->getExtProtoInfo(); + SmallVector<QualType, 8> ExceptionStorage; + Reader.readExceptionSpec(ModuleFile, ExceptionStorage, EPI, Record, Idx); + FD->setType(Reader.Context.getFunctionType(FPT->getReturnType(), + FPT->getParamTypes(), EPI)); + break; + } + case UPD_CXX_DEDUCED_RETURN_TYPE: { FunctionDecl *FD = cast<FunctionDecl>(D); Reader.Context.adjustDeducedFunctionResultType( |