diff --git a/clang/lib/Serialization/PCHContainerOperations.cpp b/clang/lib/Serialization/PCHContainerOperations.cpp
new file mode 100644
index 0000000..fbc613e
--- /dev/null
+++ b/clang/lib/Serialization/PCHContainerOperations.cpp
@@ -0,0 +1,69 @@
+//=== Serialization/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/Serialization/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>());
+}
