diff options
author | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-12-16 21:23:55 +0000 |
---|---|---|
committer | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-12-16 21:23:55 +0000 |
commit | 35f6d66b0d4da029fbd2d6f97cd9121d59d20322 (patch) | |
tree | 5f5a561a7cd7ef8f164bcdb3431e13f8a9de677b /clang/lib/Serialization/ASTReader.cpp | |
parent | 40281846a1972e69c0a1bc12c0584fa88391c942 (diff) | |
download | bcm5719-llvm-35f6d66b0d4da029fbd2d6f97cd9121d59d20322.tar.gz bcm5719-llvm-35f6d66b0d4da029fbd2d6f97cd9121d59d20322.zip |
Revert r289979 due to regressions
llvm-svn: 289991
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 45 |
1 files changed, 10 insertions, 35 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index ba1a3894de8..8d6735c50d8 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -3164,38 +3164,8 @@ ASTReader::ReadASTBlock(ModuleFile &F, unsigned ClientLoadCapabilities) { break; case OPENCL_EXTENSIONS: - for (unsigned I = 0, E = Record.size(); I != E; ) { - auto Name = ReadString(Record, I); - OpenCLExtensions.OptMap[Name] = { - static_cast<bool>(Record[I++]) /* Supported */, - static_cast<bool>(Record[I++]) /* Enabled */, - static_cast<unsigned>(Record[I++]) /* Avail */, - static_cast<unsigned>(Record[I++]) /* Core */}; - } - break; - - case OPENCL_EXTENSION_TYPES: - for (unsigned I = 0, E = Record.size(); I != E;) { - auto TypeID = static_cast<::TypeID>(Record[I++]); - auto *Type = GetType(TypeID).getTypePtr(); - auto NumExt = static_cast<unsigned>(Record[I++]); - for (unsigned II = 0; II != NumExt; ++II) { - auto Ext = ReadString(Record, I); - OpenCLTypeExtMap[Type].insert(Ext); - } - } - break; - - case OPENCL_EXTENSION_DECLS: - for (unsigned I = 0, E = Record.size(); I != E;) { - auto DeclID = static_cast<::DeclID>(Record[I++]); - auto *Decl = GetDecl(DeclID); - auto NumExt = static_cast<unsigned>(Record[I++]); - for (unsigned II = 0; II != NumExt; ++II) { - auto Ext = ReadString(Record, I); - OpenCLDeclExtMap[Decl].insert(Ext); - } - } + // Later tables overwrite earlier ones. + OpenCLExtensions.swap(Record); break; case TENTATIVE_DEFINITIONS: @@ -7121,9 +7091,14 @@ void ASTReader::InitializeSema(Sema &S) { SemaObj->FPFeatures.fp_contract = FPPragmaOptions[0]; } - SemaObj->OpenCLFeatures.copy(OpenCLExtensions); - SemaObj->OpenCLTypeExtMap = OpenCLTypeExtMap; - SemaObj->OpenCLDeclExtMap = OpenCLDeclExtMap; + // FIXME: What happens if these are changed by a module import? + if (!OpenCLExtensions.empty()) { + unsigned I = 0; +#define OPENCLEXT(nm) SemaObj->OpenCLFeatures.nm = OpenCLExtensions[I++]; +#include "clang/Basic/OpenCLExtensions.def" + + assert(OpenCLExtensions.size() == I && "Wrong number of OPENCL_EXTENSIONS"); + } UpdateSema(); } |