Author: rtrieu Date: Tue Dec 11 18:53:59 2018 New Revision: 348907 URL: http://llvm.org/viewvc/llvm-project?rev=348907&view=rev Log: Move PCHContainerOperations from Frontend to Serialization
Fix a layering violation. Frontend depends on Serialization, so anything used by both should be in Serialization. Added: cfe/trunk/include/clang/Frontend/PCHContainerOperations.h cfe/trunk/include/clang/Serialization/PCHContainerOperations.h - copied, changed from r348906, cfe/trunk/include/clang/Frontend/PCHContainerOperations.h cfe/trunk/lib/Serialization/PCHContainerOperations.cpp - copied, changed from r348906, cfe/trunk/lib/Frontend/PCHContainerOperations.cpp Removed: cfe/trunk/lib/Frontend/PCHContainerOperations.cpp Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h cfe/trunk/include/clang/module.modulemap cfe/trunk/lib/Frontend/ASTUnit.cpp cfe/trunk/lib/Frontend/CMakeLists.txt cfe/trunk/lib/Serialization/ASTReader.cpp cfe/trunk/lib/Serialization/CMakeLists.txt cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp cfe/trunk/lib/Serialization/ModuleManager.cpp Added: cfe/trunk/include/clang/Frontend/PCHContainerOperations.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/PCHContainerOperations.h?rev=348907&view=auto ============================================================================== --- cfe/trunk/include/clang/Frontend/PCHContainerOperations.h (added) +++ cfe/trunk/include/clang/Frontend/PCHContainerOperations.h Tue Dec 11 18:53:59 2018 @@ -0,0 +1,15 @@ +//===--- Frontend/PCHContainerOperations.h - PCH Containers -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H +#define LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H + +#include "clang/Serialization/PCHContainerOperations.h" + +#endif Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/include/clang/Serialization/ASTWriter.h (original) +++ cfe/trunk/include/clang/Serialization/ASTWriter.h Tue Dec 11 18:53:59 2018 @@ -26,10 +26,10 @@ #include "clang/AST/TypeLoc.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" -#include "clang/Frontend/PCHContainerOperations.h" #include "clang/Sema/SemaConsumer.h" #include "clang/Serialization/ASTBitCodes.h" #include "clang/Serialization/ASTDeserializationListener.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" Copied: cfe/trunk/include/clang/Serialization/PCHContainerOperations.h (from r348906, cfe/trunk/include/clang/Frontend/PCHContainerOperations.h) URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/PCHContainerOperations.h?p2=cfe/trunk/include/clang/Serialization/PCHContainerOperations.h&p1=cfe/trunk/include/clang/Frontend/PCHContainerOperations.h&r1=348906&r2=348907&rev=348907&view=diff ============================================================================== --- cfe/trunk/include/clang/Frontend/PCHContainerOperations.h (original) +++ cfe/trunk/include/clang/Serialization/PCHContainerOperations.h Tue Dec 11 18:53:59 2018 @@ -1,4 +1,4 @@ -//===--- Frontend/PCHContainerOperations.h - PCH Containers -----*- C++ -*-===// +//===--- Serialization/PCHContainerOperations.h - PCH Containers --*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -7,8 +7,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H -#define LLVM_CLANG_PCH_CONTAINER_OPERATIONS_H +#ifndef LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H +#define LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H #include "clang/Basic/Module.h" #include "llvm/ADT/SmallVector.h" Modified: cfe/trunk/include/clang/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/module.modulemap?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/include/clang/module.modulemap (original) +++ cfe/trunk/include/clang/module.modulemap Tue Dec 11 18:53:59 2018 @@ -103,9 +103,6 @@ module Clang_Frontend { textual header "Frontend/LangStandards.def" module * { export * } - - // FIXME: This violates layers. - exclude header "Frontend/PCHContainerOperations.h" } module Clang_FrontendTool { requires cplusplus umbrella "FrontendTool" module * { export * } } Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original) +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Tue Dec 11 18:53:59 2018 @@ -44,7 +44,6 @@ #include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Frontend/FrontendOptions.h" #include "clang/Frontend/MultiplexConsumer.h" -#include "clang/Frontend/PCHContainerOperations.h" #include "clang/Frontend/PrecompiledPreamble.h" #include "clang/Frontend/Utils.h" #include "clang/Lex/HeaderSearch.h" @@ -63,6 +62,7 @@ #include "clang/Serialization/ASTWriter.h" #include "clang/Serialization/ContinuousRangeMap.h" #include "clang/Serialization/Module.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" Modified: cfe/trunk/lib/Frontend/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CMakeLists.txt?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CMakeLists.txt (original) +++ cfe/trunk/lib/Frontend/CMakeLists.txt Tue Dec 11 18:53:59 2018 @@ -36,7 +36,6 @@ add_clang_library(clangFrontend LogDiagnosticPrinter.cpp ModuleDependencyCollector.cpp MultiplexConsumer.cpp - PCHContainerOperations.cpp PrecompiledPreamble.cpp PrintPreprocessedOutput.cpp SerializedDiagnosticPrinter.cpp Removed: cfe/trunk/lib/Frontend/PCHContainerOperations.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHContainerOperations.cpp?rev=348906&view=auto ============================================================================== --- cfe/trunk/lib/Frontend/PCHContainerOperations.cpp (original) +++ cfe/trunk/lib/Frontend/PCHContainerOperations.cpp (removed) @@ -1,69 +0,0 @@ -//===--- Frontend/PCHContainerOperations.cpp - PCH Containers ---*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file defines PCHContainerOperations and RawPCHContainerOperation. -// -//===----------------------------------------------------------------------===// - -#include "clang/Frontend/PCHContainerOperations.h" -#include "clang/AST/ASTConsumer.h" -#include "clang/Lex/ModuleLoader.h" -#include "llvm/Bitcode/BitstreamReader.h" -#include "llvm/Support/raw_ostream.h" -#include <utility> - -using namespace clang; - -PCHContainerWriter::~PCHContainerWriter() {} -PCHContainerReader::~PCHContainerReader() {} - -namespace { - -/// A PCHContainerGenerator that writes out the PCH to a flat file. -class RawPCHContainerGenerator : public ASTConsumer { - std::shared_ptr<PCHBuffer> Buffer; - std::unique_ptr<raw_pwrite_stream> OS; - -public: - RawPCHContainerGenerator(std::unique_ptr<llvm::raw_pwrite_stream> OS, - std::shared_ptr<PCHBuffer> Buffer) - : Buffer(std::move(Buffer)), OS(std::move(OS)) {} - - ~RawPCHContainerGenerator() override = default; - - void HandleTranslationUnit(ASTContext &Ctx) override { - if (Buffer->IsComplete) { - // Make sure it hits disk now. - *OS << Buffer->Data; - OS->flush(); - } - // Free the space of the temporary buffer. - llvm::SmallVector<char, 0> Empty; - Buffer->Data = std::move(Empty); - } -}; - -} // anonymous namespace - -std::unique_ptr<ASTConsumer> RawPCHContainerWriter::CreatePCHContainerGenerator( - CompilerInstance &CI, const std::string &MainFileName, - const std::string &OutputFileName, std::unique_ptr<llvm::raw_pwrite_stream> OS, - std::shared_ptr<PCHBuffer> Buffer) const { - return llvm::make_unique<RawPCHContainerGenerator>(std::move(OS), Buffer); -} - -StringRef -RawPCHContainerReader::ExtractPCH(llvm::MemoryBufferRef Buffer) const { - return Buffer.getBuffer(); -} - -PCHContainerOperations::PCHContainerOperations() { - registerWriter(llvm::make_unique<RawPCHContainerWriter>()); - registerReader(llvm::make_unique<RawPCHContainerReader>()); -} Modified: cfe/trunk/lib/Serialization/ASTReader.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Dec 11 18:53:59 2018 @@ -61,7 +61,6 @@ #include "clang/Basic/TargetOptions.h" #include "clang/Basic/TokenKinds.h" #include "clang/Basic/Version.h" -#include "clang/Frontend/PCHContainerOperations.h" #include "clang/Lex/HeaderSearch.h" #include "clang/Lex/HeaderSearchOptions.h" #include "clang/Lex/MacroInfo.h" @@ -81,6 +80,7 @@ #include "clang/Serialization/Module.h" #include "clang/Serialization/ModuleFileExtension.h" #include "clang/Serialization/ModuleManager.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "clang/Serialization/SerializationDiagnostic.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/APInt.h" Modified: cfe/trunk/lib/Serialization/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/CMakeLists.txt?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/CMakeLists.txt (original) +++ cfe/trunk/lib/Serialization/CMakeLists.txt Tue Dec 11 18:53:59 2018 @@ -17,6 +17,7 @@ add_clang_library(clangSerialization Module.cpp ModuleFileExtension.cpp ModuleManager.cpp + PCHContainerOperations.cpp ADDITIONAL_HEADERS ASTCommon.h Modified: cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp (original) +++ cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp Tue Dec 11 18:53:59 2018 @@ -12,12 +12,12 @@ //===----------------------------------------------------------------------===// #include "ASTReaderInternals.h" -#include "clang/Frontend/PCHContainerOperations.h" #include "clang/Basic/FileManager.h" #include "clang/Lex/HeaderSearch.h" #include "clang/Serialization/ASTBitCodes.h" #include "clang/Serialization/GlobalModuleIndex.h" #include "clang/Serialization/Module.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/MapVector.h" #include "llvm/ADT/SmallString.h" Modified: cfe/trunk/lib/Serialization/ModuleManager.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ModuleManager.cpp?rev=348907&r1=348906&r2=348907&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ModuleManager.cpp (original) +++ cfe/trunk/lib/Serialization/ModuleManager.cpp Tue Dec 11 18:53:59 2018 @@ -16,11 +16,11 @@ #include "clang/Basic/FileManager.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/MemoryBufferCache.h" -#include "clang/Frontend/PCHContainerOperations.h" #include "clang/Lex/HeaderSearch.h" #include "clang/Lex/ModuleMap.h" #include "clang/Serialization/GlobalModuleIndex.h" #include "clang/Serialization/Module.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SetVector.h" #include "llvm/ADT/SmallPtrSet.h" Copied: cfe/trunk/lib/Serialization/PCHContainerOperations.cpp (from r348906, cfe/trunk/lib/Frontend/PCHContainerOperations.cpp) URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/PCHContainerOperations.cpp?p2=cfe/trunk/lib/Serialization/PCHContainerOperations.cpp&p1=cfe/trunk/lib/Frontend/PCHContainerOperations.cpp&r1=348906&r2=348907&rev=348907&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/PCHContainerOperations.cpp (original) +++ cfe/trunk/lib/Serialization/PCHContainerOperations.cpp Tue Dec 11 18:53:59 2018 @@ -1,4 +1,4 @@ -//===--- Frontend/PCHContainerOperations.cpp - PCH Containers ---*- C++ -*-===// +//=== Serialization/PCHContainerOperations.cpp - PCH Containers -*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -11,7 +11,7 @@ // //===----------------------------------------------------------------------===// -#include "clang/Frontend/PCHContainerOperations.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "clang/AST/ASTConsumer.h" #include "clang/Lex/ModuleLoader.h" #include "llvm/Bitcode/BitstreamReader.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits