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 | |
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')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 45 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 43 |
2 files changed, 12 insertions, 76 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(); } diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 493941a3eff..8b863bcecde 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -1053,8 +1053,6 @@ void ASTWriter::WriteBlockInfoBlock() { RECORD(HEADER_SEARCH_TABLE); RECORD(FP_PRAGMA_OPTIONS); RECORD(OPENCL_EXTENSIONS); - RECORD(OPENCL_EXTENSION_TYPES); - RECORD(OPENCL_EXTENSION_DECLS); RECORD(DELEGATING_CTORS); RECORD(KNOWN_NAMESPACES); RECORD(MODULE_OFFSET_MAP); @@ -3941,46 +3939,11 @@ void ASTWriter::WriteOpenCLExtensions(Sema &SemaRef) { const OpenCLOptions &Opts = SemaRef.getOpenCLOptions(); RecordData Record; - for (const auto &I:Opts.OptMap) { - AddString(I.getKey(), Record); - auto V = I.getValue(); - Record.push_back(V.Supported); - Record.push_back(V.Enabled); - Record.push_back(V.Avail); - Record.push_back(V.Core); - } +#define OPENCLEXT(nm) Record.push_back(Opts.nm); +#include "clang/Basic/OpenCLExtensions.def" Stream.EmitRecord(OPENCL_EXTENSIONS, Record); } -void ASTWriter::WriteOpenCLExtensionTypes(Sema &SemaRef) { - if (!SemaRef.Context.getLangOpts().OpenCL) - return; - - RecordData Record; - for (const auto &I : SemaRef.OpenCLTypeExtMap) { - Record.push_back( - static_cast<unsigned>(getTypeID(I.first->getCanonicalTypeInternal()))); - Record.push_back(I.second.size()); - for (auto Ext : I.second) - AddString(Ext, Record); - } - Stream.EmitRecord(OPENCL_EXTENSION_TYPES, Record); -} - -void ASTWriter::WriteOpenCLExtensionDecls(Sema &SemaRef) { - if (!SemaRef.Context.getLangOpts().OpenCL) - return; - - RecordData Record; - for (const auto &I : SemaRef.OpenCLDeclExtMap) { - Record.push_back(getDeclID(I.first)); - Record.push_back(static_cast<unsigned>(I.second.size())); - for (auto Ext : I.second) - AddString(Ext, Record); - } - Stream.EmitRecord(OPENCL_EXTENSION_DECLS, Record); -} - void ASTWriter::WriteCUDAPragmas(Sema &SemaRef) { if (SemaRef.ForceCUDAHostDeviceDepth > 0) { RecordData::value_type Record[] = {SemaRef.ForceCUDAHostDeviceDepth}; @@ -4665,8 +4628,6 @@ uint64_t ASTWriter::WriteASTCore(Sema &SemaRef, StringRef isysroot, WriteIdentifierTable(PP, SemaRef.IdResolver, isModule); WriteFPPragmaOptions(SemaRef.getFPOptions()); WriteOpenCLExtensions(SemaRef); - WriteOpenCLExtensionTypes(SemaRef); - WriteOpenCLExtensionDecls(SemaRef); WriteCUDAPragmas(SemaRef); WritePragmaDiagnosticMappings(Context.getDiagnostics(), isModule); |