<div dir="ltr">My modules bootstrap is broken; I'm not certain this change is responsible, but it looks likely. You should be able to reproduce by configuring with<div><br></div><div>  cmake -DLLVM_ENABLE_MODULES=1 -DLLVM_USE_SPLIT_DWARF=1</div><div><br></div><div>The error I get is:</div><div><br></div><div><div>  "clang: for the -split-dwarf option: may only occur zero or one times!"</div></div><div><br></div><div>Simpler repro:</div><div><br></div><div>  clang -fmodules -gsplit-dwarf any-file-that-imports-a-module.cpp</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 24, 2015 at 5:31 PM, Adrian Prantl <span dir="ltr"><<a href="mailto:aprantl@apple.com" target="_blank">aprantl@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: adrian<br>
Date: Tue Feb 24 19:31:45 2015<br>
New Revision: 230423<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=230423&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=230423&view=rev</a><br>
Log:<br>
Wrap clang module files in a Mach-O, ELF, or COFF container.<br>
This is a necessary prerequisite for debugging with modules.<br>
The .pcm files become containers that hold the serialized AST which allows<br>
us to store debug information in the module file that can be shared by all<br>
object files that were built importing the module.<br>
<br>
This reapplies r230044 with a fixed configure+make build and updated<br>
dependencies and testcase requirements. Over the last iteration this<br>
version adds<br>
- missing target requirements for testcases that specify an x86 triple,<br>
- a missing clangCodeGen.a dependency to libClang.a in the make build.<br>
<br>
rdar://problem/19104245<br>
<br>
Added:<br>
    cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h<br>
    cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp<br>
    cfe/trunk/test/Modules/module_container.m<br>
Modified:<br>
    cfe/trunk/docs/PCHInternals.rst<br>
    cfe/trunk/include/clang/Frontend/FrontendActions.h<br>
    cfe/trunk/include/clang/Serialization/ASTReader.h<br>
    cfe/trunk/include/clang/Serialization/ASTWriter.h<br>
    cfe/trunk/lib/CodeGen/CMakeLists.txt<br>
    cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
    cfe/trunk/lib/Frontend/CMakeLists.txt<br>
    cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp<br>
    cfe/trunk/lib/Frontend/FrontendActions.cpp<br>
    cfe/trunk/lib/Frontend/MultiplexConsumer.cpp<br>
    cfe/trunk/lib/Serialization/ASTReader.cpp<br>
    cfe/trunk/lib/Serialization/CMakeLists.txt<br>
    cfe/trunk/lib/Serialization/GeneratePCH.cpp<br>
    cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp<br>
    cfe/trunk/lib/Serialization/ModuleManager.cpp<br>
    cfe/trunk/test/ARCMT/check-with-pch.m<br>
    cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m<br>
    cfe/trunk/test/ARCMT/objcmt-with-pch.m<br>
    cfe/trunk/test/ARCMT/objcmt-with-pch.m.result<br>
    cfe/trunk/test/CMakeLists.txt<br>
    cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp<br>
    cfe/trunk/test/CodeGen/atomic-ops.c<br>
    cfe/trunk/test/CodeGen/big-atomic-ops.c<br>
    cfe/trunk/test/Frontend/ast-codegen.c<br>
    cfe/trunk/test/Index/TestClassForwardDecl.m<br>
    cfe/trunk/test/Index/c-index-api-loadTU-test.m<br>
    cfe/trunk/test/Index/c-index-getCursor-test.m<br>
    cfe/trunk/test/Index/pch-with-module.m<br>
    cfe/trunk/test/Index/print-mangled-name.cpp<br>
    cfe/trunk/test/Modules/dependency-gen-inferred-map.m<br>
    cfe/trunk/test/Modules/dependency-gen-pch.m<br>
    cfe/trunk/test/Modules/irgen.c<br>
    cfe/trunk/test/Modules/self-import-header.m<br>
    cfe/trunk/test/Modules/<a href="http://templates-2.mm" target="_blank">templates-2.mm</a><br>
    cfe/trunk/test/Modules/<a href="http://templates.mm" target="_blank">templates.mm</a><br>
    cfe/trunk/test/Modules/va_list.m<br>
    cfe/trunk/test/OpenMP/atomic_read_codegen.c<br>
    cfe/trunk/test/OpenMP/barrier_codegen.cpp<br>
    cfe/trunk/test/OpenMP/critical_codegen.cpp<br>
    cfe/trunk/test/OpenMP/flush_codegen.cpp<br>
    cfe/trunk/test/OpenMP/for_codegen.cpp<br>
    cfe/trunk/test/OpenMP/master_codegen.cpp<br>
    cfe/trunk/test/OpenMP/parallel_codegen.cpp<br>
    cfe/trunk/test/OpenMP/parallel_private_codegen.cpp<br>
    cfe/trunk/test/OpenMP/simd_codegen.cpp<br>
    cfe/trunk/test/OpenMP/single_codegen.cpp<br>
    cfe/trunk/test/OpenMP/taskyield_codegen.cpp<br>
    cfe/trunk/test/OpenMP/threadprivate_codegen.cpp<br>
    cfe/trunk/test/PCH/__va_list_tag.c<br>
    cfe/trunk/test/PCH/arc.m<br>
    cfe/trunk/test/PCH/asm.c<br>
    cfe/trunk/test/PCH/chain-external-defs.c<br>
    cfe/trunk/test/PCH/chain-trivial.c<br>
    cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp<br>
    cfe/trunk/test/PCH/external-defs.c<br>
    cfe/trunk/test/PCH/floating-literal.c<br>
    cfe/trunk/test/PCH/local_static.cpp<br>
    cfe/trunk/test/PCH/pchpch.c<br>
    cfe/trunk/test/PCH/reloc.c<br>
    cfe/trunk/test/PCH/subscripting-literals.m<br>
    cfe/trunk/test/PCH/target-options.c<br>
    cfe/trunk/test/PCH/tentative-defs.c<br>
    cfe/trunk/test/PCH/thread-local.cpp<br>
    cfe/trunk/test/PCH/va_arg.c<br>
    cfe/trunk/test/PCH/va_arg.cpp<br>
    cfe/trunk/tools/arcmt-test/Makefile<br>
    cfe/trunk/tools/c-arcmt-test/Makefile<br>
    cfe/trunk/tools/c-index-test/Makefile<br>
    cfe/trunk/tools/clang-check/Makefile<br>
    cfe/trunk/tools/diagtool/Makefile<br>
    cfe/trunk/tools/libclang/CMakeLists.txt<br>
    cfe/trunk/tools/libclang/Makefile<br>
    cfe/trunk/unittests/AST/Makefile<br>
    cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile<br>
    cfe/trunk/unittests/ASTMatchers/Makefile<br>
    cfe/trunk/unittests/CodeGen/Makefile<br>
    cfe/trunk/unittests/Frontend/Makefile<br>
    cfe/trunk/unittests/Sema/Makefile<br>
    cfe/trunk/unittests/Tooling/Makefile<br>
    cfe/trunk/unittests/libclang/Makefile<br>
<br>
Modified: cfe/trunk/docs/PCHInternals.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/PCHInternals.rst?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/PCHInternals.rst?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/docs/PCHInternals.rst (original)<br>
+++ cfe/trunk/docs/PCHInternals.rst Tue Feb 24 19:31:45 2015<br>
@@ -65,6 +65,9 @@ be included at the beginning of the tran<br>
 AST file format required for modules are discussed in the section on<br>
 :ref:`modules <pchinternals-modules>`.<br>
<br>
+Clang's AST files are Mach-O, ELF, or COFF containers that contain a<br>
+``__clangast`` section which holds the AST bitstream.<br>
+<br>
 Clang's AST files are designed with a compact on-disk representation, which<br>
 minimizes both creation time and the time required to initially load the AST<br>
 file.  The AST file itself contains a serialized representation of Clang's<br>
<br>
Added: cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h?rev=230423&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h?rev=230423&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h (added)<br>
+++ cfe/trunk/include/clang/CodeGen/CodeGenModuleContainer.h Tue Feb 24 19:31:45 2015<br>
@@ -0,0 +1,34 @@<br>
+//===--- CodeGen/ModuleContainerGenerator.h - Emit .pcm files ---*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLVM_CLANG_CODEGEN_MODULE_CONTAINER_H<br>
+#define LLVM_CLANG_CODEGEN_MODULE_CONTAINER_H<br>
+<br>
+#include "ModuleBuilder.h"<br>
+#include <string><br>
+<br>
+namespace llvm {<br>
+class raw_ostream;<br>
+}<br>
+<br>
+namespace clang {<br>
+<br>
+class PCHGenerator;<br>
+class TargetOptions;<br>
+<br>
+/// \brief Create a CodeGenerator instance.<br>
+/// It is the responsibility of the caller to call delete on<br>
+/// the allocated CodeGenerator instance.<br>
+CodeGenerator *CreateModuleContainerGenerator(<br>
+    DiagnosticsEngine &Diags, const std::string &ModuleName,<br>
+    const CodeGenOptions &CGO, const TargetOptions &TO, const LangOptions &LO,<br>
+    llvm::raw_ostream *OS, PCHGenerator *PCHGen);<br>
+}<br>
+<br>
+#endif<br>
<br>
Modified: cfe/trunk/include/clang/Frontend/FrontendActions.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendActions.h?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendActions.h?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Frontend/FrontendActions.h (original)<br>
+++ cfe/trunk/include/clang/Frontend/FrontendActions.h Tue Feb 24 19:31:45 2015<br>
@@ -69,6 +69,14 @@ protected:<br>
                                                  StringRef InFile) override;<br>
 };<br>
<br>
+/// \brief Emits the output of a GeneratePCHAction or GenerateModuleAction into<br>
+/// a Mach-O/ELF/COFF container.<br>
+class GeneratePCMContainerAction : public FrontendAction {<br>
+protected:<br>
+  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,<br>
+                                                 StringRef InFile) override;<br>
+};<br>
+<br>
 class GeneratePCHAction : public ASTFrontendAction {<br>
 protected:<br>
   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,<br>
<br>
Modified: cfe/trunk/include/clang/Serialization/ASTReader.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Serialization/ASTReader.h (original)<br>
+++ cfe/trunk/include/clang/Serialization/ASTReader.h Tue Feb 24 19:31:45 2015<br>
@@ -1127,6 +1127,10 @@ private:<br>
 public:<br>
   void ResolveImportedPath(ModuleFile &M, std::string &Filename);<br>
   static void ResolveImportedPath(std::string &Filename, StringRef Prefix);<br>
+  /// \brief Initialize a BitstreamReader with the `__clangast` section from an<br>
+  /// object file container found in Buffer.<br>
+  static void InitStreamFileWithModule(llvm::MemoryBufferRef Buffer,<br>
+                                       llvm::BitstreamReader &StreamFile);<br>
<br>
 private:<br>
   struct ImportedModule {<br>
<br>
Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Serialization/ASTWriter.h (original)<br>
+++ cfe/trunk/include/clang/Serialization/ASTWriter.h Tue Feb 24 19:31:45 2015<br>
@@ -823,10 +823,13 @@ class PCHGenerator : public SemaConsumer<br>
   std::string OutputFile;<br>
   clang::Module *Module;<br>
   std::string isysroot;<br>
-  raw_ostream *Out;<br>
   Sema *SemaPtr;<br>
-  SmallVector<char, 128> Buffer;<br>
+  // This buffer is always large, but BitstreamWriter really wants a<br>
+  // SmallVectorImpl<char>.<br>
+  SmallVector<char, 0> Buffer;<br>
   llvm::BitstreamWriter Stream;<br>
+  std::function<void(SmallVectorImpl<char>*)><br>
+    SerializationFinishedCallback;<br>
   ASTWriter Writer;<br>
   bool AllowASTWithErrors;<br>
   bool HasEmittedPCH;<br>
@@ -836,16 +839,21 @@ protected:<br>
   const ASTWriter &getWriter() const { return Writer; }<br>
<br>
 public:<br>
-  PCHGenerator(const Preprocessor &PP, StringRef OutputFile,<br>
+  PCHGenerator(const Preprocessor &PP,<br>
+               StringRef OutputFile,<br>
                clang::Module *Module,<br>
-               StringRef isysroot, raw_ostream *Out,<br>
+               StringRef isysroot,<br>
                bool AllowASTWithErrors = false);<br>
   ~PCHGenerator();<br>
   void InitializeSema(Sema &S) override { SemaPtr = &S; }<br>
   void HandleTranslationUnit(ASTContext &Ctx) override;<br>
   ASTMutationListener *GetASTMutationListener() override;<br>
   ASTDeserializationListener *GetASTDeserializationListener() override;<br>
-<br>
+  /// \brief Register a callback to be invoked when the serialization is done.<br>
+  void RegisterSerializationFinishedCallback(<br>
+    const std::function<void(SmallVectorImpl<char>*)> Fn) {<br>
+    SerializationFinishedCallback = Fn;<br>
+  }<br>
   bool hasEmittedPCH() const { return HasEmittedPCH; }<br>
 };<br>
<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CMakeLists.txt (original)<br>
+++ cfe/trunk/lib/CodeGen/CMakeLists.txt Tue Feb 24 19:31:45 2015<br>
@@ -1,4 +1,5 @@<br>
 set(LLVM_LINK_COMPONENTS<br>
+  ${LLVM_TARGETS_TO_BUILD}<br>
   Analysis<br>
   BitReader<br>
   BitWriter<br>
@@ -63,6 +64,7 @@ add_clang_library(clangCodeGen<br>
   CodeGenAction.cpp<br>
   CodeGenFunction.cpp<br>
   CodeGenModule.cpp<br>
+  CodeGenModuleContainer.cpp<br>
   CodeGenPGO.cpp<br>
   CodeGenTBAA.cpp<br>
   CodeGenTypes.cpp<br>
<br>
Added: cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp?rev=230423&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp?rev=230423&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp (added)<br>
+++ cfe/trunk/lib/CodeGen/CodeGenModuleContainer.cpp Tue Feb 24 19:31:45 2015<br>
@@ -0,0 +1,150 @@<br>
+//===--- CodeGenModuleContainer.cpp - Emit .pcm files ---------------------===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#include "clang/CodeGen/CodeGenModuleContainer.h"<br>
+#include "CodeGenModule.h"<br>
+#include "clang/AST/ASTContext.h"<br>
+#include "clang/AST/DeclObjC.h"<br>
+#include "clang/AST/Expr.h"<br>
+#include "clang/AST/RecursiveASTVisitor.h"<br>
+#include "clang/Basic/Diagnostic.h"<br>
+#include "clang/Basic/TargetInfo.h"<br>
+#include "clang/CodeGen/BackendUtil.h"<br>
+#include "clang/Frontend/CodeGenOptions.h"<br>
+#include "clang/Serialization/ASTWriter.h"<br>
+#include "llvm/ADT/StringRef.h"<br>
+#include "llvm/IR/Constants.h"<br>
+#include "llvm/IR/DataLayout.h"<br>
+#include "llvm/IR/LLVMContext.h"<br>
+#include "llvm/IR/Module.h"<br>
+#include "llvm/Support/TargetRegistry.h"<br>
+#include <memory><br>
+using namespace clang;<br>
+<br>
+namespace {<br>
+class ModuleContainerGenerator : public CodeGenerator {<br>
+  DiagnosticsEngine &Diags;<br>
+  std::unique_ptr<const llvm::DataLayout> TD;<br>
+  ASTContext *Ctx;<br>
+  const CodeGenOptions CodeGenOpts;<br>
+  const TargetOptions TargetOpts;<br>
+  const LangOptions LangOpts;<br>
+  llvm::LLVMContext VMContext;<br>
+  std::unique_ptr<llvm::Module> M;<br>
+  std::unique_ptr<CodeGen::CodeGenModule> Builder;<br>
+  raw_ostream *OS;<br>
+  SmallVectorImpl<char> *SerializedASTBuffer;<br>
+<br>
+public:<br>
+  ModuleContainerGenerator(DiagnosticsEngine &diags,<br>
+                           const std::string &ModuleName,<br>
+                           const CodeGenOptions &CGO, const TargetOptions &TO,<br>
+                           const LangOptions &LO, raw_ostream *OS,<br>
+                           PCHGenerator *PCHGen)<br>
+      : Diags(diags), CodeGenOpts(CGO), TargetOpts(TO), LangOpts(LO),<br>
+        M(new llvm::Module(ModuleName, VMContext)), OS(OS) {<br>
+    PCHGen->RegisterSerializationFinishedCallback(<br>
+      [&](SmallVectorImpl<char> *Buf){<br>
+        SerializedASTBuffer = Buf;<br>
+      });<br>
+  }<br>
+<br>
+  virtual ~ModuleContainerGenerator() {}<br>
+  llvm::Module *GetModule() override { return M.get(); }<br>
+  llvm::Module *ReleaseModule() override { return M.release(); }<br>
+<br>
+  /// Lifted from ModuleBuilder.<br>
+  const Decl *GetDeclForMangledName(StringRef MangledName) override {<br>
+    GlobalDecl Result;<br>
+    if (!Builder->lookupRepresentativeDecl(MangledName, Result))<br>
+      return nullptr;<br>
+    const Decl *D = Result.getCanonicalDecl().getDecl();<br>
+    if (auto FD = dyn_cast<FunctionDecl>(D)) {<br>
+      if (FD->hasBody(FD))<br>
+        return FD;<br>
+    } else if (auto TD = dyn_cast<TagDecl>(D)) {<br>
+      if (auto Def = TD->getDefinition())<br>
+        return Def;<br>
+    }<br>
+    return D;<br>
+  }<br>
+<br>
+  void Initialize(ASTContext &Context) override {<br>
+    Ctx = &Context;<br>
+    M->setTargetTriple(Ctx->getTargetInfo().getTriple().getTriple());<br>
+    M->setDataLayout(Ctx->getTargetInfo().getTargetDescription());<br>
+    TD.reset(new llvm::DataLayout(Ctx->getTargetInfo().getTargetDescription()));<br>
+    Builder.reset(<br>
+        new CodeGen::CodeGenModule(Context, CodeGenOpts, *M, *TD, Diags));<br>
+  }<br>
+<br>
+  /// Emit a container holding the serialized AST.<br>
+  void HandleTranslationUnit(ASTContext &Ctx) override {<br>
+    if (Diags.hasErrorOccurred()) {<br>
+      if (Builder)<br>
+        Builder->clear();<br>
+      M.reset();<br>
+      return;<br>
+    }<br>
+<br>
+    // Finalize the Builder.<br>
+    if (Builder)<br>
+      Builder->Release();<br>
+<br>
+    // Initialize the backend if we haven't done so already.<br>
+    LLVMInitializeAllTargetInfos();<br>
+    LLVMInitializeAllTargets();<br>
+    LLVMInitializeAllAsmPrinters();<br>
+    LLVMInitializeAllTargetMCs();<br>
+<br>
+    // Ensure the target exists.<br>
+    std::string Error;<br>
+    auto Triple = Ctx.getTargetInfo().getTriple();<br>
+    if (!llvm::TargetRegistry::lookupTarget(Triple.getTriple(), Error))<br>
+      llvm::report_fatal_error(Error);<br>
+<br>
+    // Emit the serialized Clang AST into its own section.<br>
+    auto Size = SerializedASTBuffer->size();<br>
+    auto Int8Ty = llvm::Type::getInt8Ty(VMContext);<br>
+    auto *Ty = llvm::ArrayType::get(Int8Ty, Size);<br>
+    auto *Data = llvm::ConstantDataArray::getString(VMContext,<br>
+        StringRef(SerializedASTBuffer->data(), Size), /*AddNull=*/false);<br>
+    auto *ASTSym = new llvm::GlobalVariable(*M, Ty, /*constant*/ true,<br>
+        llvm::GlobalVariable::InternalLinkage, Data, "__clang_ast");<br>
+    ASTSym->setAlignment(8);<br>
+    if (Triple.isOSBinFormatMachO())<br>
+      // Include Mach-O segment name.<br>
+      ASTSym->setSection("__CLANG,__clangast");<br>
+    else if (Triple.isOSBinFormatCOFF())<br>
+      // Adhere to COFF eight-character limit.<br>
+      ASTSym->setSection("clangast");<br>
+    else<br>
+      ASTSym->setSection("__clangast");<br>
+<br>
+    // Use the LLVM backend to emit the pcm.<br>
+    clang::EmitBackendOutput(Diags, CodeGenOpts, TargetOpts, LangOpts,<br>
+                      Ctx.getTargetInfo().getTargetDescription(), M.get(),<br>
+                      BackendAction::Backend_EmitObj, OS);<br>
+<br>
+    // Make sure the module container hits disk now.<br>
+    OS->flush();<br>
+<br>
+    // Free up some memory, in case the process is kept alive.<br>
+    SerializedASTBuffer->clear();<br>
+  }<br>
+};<br>
+}<br>
+<br>
+CodeGenerator *clang::CreateModuleContainerGenerator(<br>
+    DiagnosticsEngine &Diags, const std::string &ModuleName,<br>
+    const CodeGenOptions &CGO, const TargetOptions &TO, const LangOptions &LO,<br>
+    llvm::raw_ostream *OS, PCHGenerator *PCHGen) {<br>
+  return<br>
+    new ModuleContainerGenerator(Diags, ModuleName, CGO, TO, LO, OS, PCHGen);<br>
+}<br>
<br>
Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/ASTUnit.cpp Tue Feb 24 19:31:45 2015<br>
@@ -914,13 +914,20 @@ class PrecompilePreambleConsumer : publi<br>
   unsigned &Hash;<br>
   std::vector<Decl *> TopLevelDecls;<br>
   PrecompilePreambleAction *Action;<br>
+  raw_ostream *Out;<br>
+  SmallVectorImpl<char> *SerializedASTBuffer;<br>
<br>
 public:<br>
   PrecompilePreambleConsumer(ASTUnit &Unit, PrecompilePreambleAction *Action,<br>
                              const Preprocessor &PP, StringRef isysroot,<br>
                              raw_ostream *Out)<br>
-    : PCHGenerator(PP, "", nullptr, isysroot, Out, /*AllowASTWithErrors=*/true),<br>
-      Unit(Unit), Hash(Unit.getCurrentTopLevelHashValue()), Action(Action) {<br>
+    : PCHGenerator(PP, "", nullptr, isysroot, /*AllowASTWithErrors=*/true),<br>
+      Unit(Unit), Hash(Unit.getCurrentTopLevelHashValue()), Action(Action),<br>
+      Out(Out) {<br>
+    RegisterSerializationFinishedCallback(<br>
+      [&](SmallVectorImpl<char> *Buf){<br>
+        SerializedASTBuffer = Buf;<br>
+      });<br>
     Hash = 0;<br>
   }<br>
<br>
@@ -941,6 +948,13 @@ public:<br>
   void HandleTranslationUnit(ASTContext &Ctx) override {<br>
     PCHGenerator::HandleTranslationUnit(Ctx);<br>
     if (hasEmittedPCH()) {<br>
+      // Write the generated bitstream to "Out".<br>
+      Out->write((char *)&SerializedASTBuffer->front(),<br>
+                 SerializedASTBuffer->size());<br>
+      // Make sure it hits disk now.<br>
+      Out->flush();<br>
+      SerializedASTBuffer->clear();<br>
+<br>
       // Translate the top-level declarations we captured during<br>
       // parsing into declaration IDs in the precompiled<br>
       // preamble. This will allow us to deserialize those top-level<br>
<br>
Modified: cfe/trunk/lib/Frontend/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/CMakeLists.txt (original)<br>
+++ cfe/trunk/lib/Frontend/CMakeLists.txt Tue Feb 24 19:31:45 2015<br>
@@ -45,6 +45,7 @@ add_clang_library(clangFrontend<br>
   LINK_LIBS<br>
   clangAST<br>
   clangBasic<br>
+  clangCodeGen<br>
   clangDriver<br>
   clangEdit<br>
   clangLex<br>
<br>
Modified: cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/ChainedIncludesSource.cpp Tue Feb 24 19:31:45 2015<br>
@@ -156,11 +156,13 @@ IntrusiveRefCntPtr<ExternalSemaSource> c<br>
                                                  &Clang->getPreprocessor());<br>
     Clang->createASTContext();<br>
<br>
-    SmallVector<char, 256> serialAST;<br>
-    llvm::raw_svector_ostream OS(serialAST);<br>
-    auto consumer =<br>
-        llvm::make_unique<PCHGenerator>(Clang->getPreprocessor(), "-", nullptr,<br>
-                                        /*isysroot=*/"", &OS);<br>
+    auto consumer = llvm::make_unique<PCHGenerator>(Clang->getPreprocessor(),<br>
+                                       "-", nullptr, /*isysroot=*/"");<br>
+    SmallVectorImpl<char> *serialAST;<br>
+    consumer->RegisterSerializationFinishedCallback(<br>
+      [&](SmallVectorImpl<char> *Buf){<br>
+        serialAST = Buf;<br>
+      });<br>
     Clang->getASTContext().setASTMutationListener(<br>
                                             consumer->GetASTMutationListener());<br>
     Clang->setASTConsumer(std::move(consumer));<br>
@@ -197,7 +199,9 @@ IntrusiveRefCntPtr<ExternalSemaSource> c<br>
<br>
     ParseAST(Clang->getSema());<br>
     Clang->getDiagnosticClient().EndSourceFile();<br>
-    SerialBufs.push_back(llvm::MemoryBuffer::getMemBufferCopy(OS.str()));<br>
+    SerialBufs.push_back(llvm::MemoryBuffer::<br>
+        getMemBufferCopy(StringRef(serialAST->data(), serialAST->size())));<br>
+    serialAST->clear();<br>
     source->CIs.push_back(Clang.release());<br>
   }<br>
<br>
<br>
Modified: cfe/trunk/lib/Frontend/FrontendActions.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendActions.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendActions.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/FrontendActions.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/FrontendActions.cpp Tue Feb 24 19:31:45 2015<br>
@@ -10,10 +10,13 @@<br>
 #include "clang/Frontend/FrontendActions.h"<br>
 #include "clang/AST/ASTConsumer.h"<br>
 #include "clang/Basic/FileManager.h"<br>
+#include "clang/Basic/TargetInfo.h"<br>
+#include "clang/CodeGen/CodeGenModuleContainer.h"<br>
 #include "clang/Frontend/ASTConsumers.h"<br>
 #include "clang/Frontend/ASTUnit.h"<br>
 #include "clang/Frontend/CompilerInstance.h"<br>
 #include "clang/Frontend/FrontendDiagnostic.h"<br>
+#include "clang/Frontend/MultiplexConsumer.h"<br>
 #include "clang/Frontend/Utils.h"<br>
 #include "clang/Lex/HeaderSearch.h"<br>
 #include "clang/Lex/Pragma.h"<br>
@@ -85,8 +88,23 @@ GeneratePCHAction::CreateASTConsumer(Com<br>
<br>
   if (!CI.getFrontendOpts().RelocatablePCH)<br>
     Sysroot.clear();<br>
-  return llvm::make_unique<PCHGenerator>(CI.getPreprocessor(), OutputFile,<br>
-                                         nullptr, Sysroot, OS);<br>
+<br>
+  std::vector<std::unique_ptr<ASTConsumer>> Consumers;<br>
+  Consumers.push_back(llvm::make_unique<PCHGenerator>(CI.getPreprocessor(),<br>
+                                                      OutputFile, nullptr,<br>
+                                                      Sysroot));<br>
+<br>
+  auto CGOpts = CI.getCodeGenOpts();<br>
+  // The debug info emitted by ModuleContainerGenerator is not affected by the<br>
+  // optimization level.<br>
+  CGOpts.OptimizationLevel = 0;<br>
+  CGOpts.setDebugInfo(CodeGenOptions::LimitedDebugInfo);<br>
+  Consumers.push_back(std::unique_ptr<ASTConsumer>(<br>
+      CreateModuleContainerGenerator(CI.getDiagnostics(), "PCH", CGOpts,<br>
+                                     CI.getTargetOpts(), CI.getLangOpts(), OS,<br>
+                                     cast<PCHGenerator>(Consumers[0].get()))));<br>
+<br>
+  return llvm::make_unique<MultiplexConsumer>(std::move(Consumers));<br>
 }<br>
<br>
 bool GeneratePCHAction::ComputeASTConsumerArguments(CompilerInstance &CI,<br>
@@ -122,8 +140,22 @@ GenerateModuleAction::CreateASTConsumer(<br>
   if (ComputeASTConsumerArguments(CI, InFile, Sysroot, OutputFile, OS))<br>
     return nullptr;<br>
<br>
-  return llvm::make_unique<PCHGenerator>(CI.getPreprocessor(), OutputFile,<br>
-                                         Module, Sysroot, OS);<br>
+  std::vector<std::unique_ptr<ASTConsumer>> Consumers;<br>
+  Consumers.push_back(llvm::make_unique<PCHGenerator>(CI.getPreprocessor(),<br>
+                                                      OutputFile, Module,<br>
+                                                      Sysroot));<br>
+<br>
+  auto CGOpts = CI.getCodeGenOpts();<br>
+  // The debug info emitted by ModuleContainerGenerator is not affected by the<br>
+  // optimization level.<br>
+  CGOpts.OptimizationLevel = 0;<br>
+  CGOpts.setDebugInfo(CodeGenOptions::LimitedDebugInfo);<br>
+  Consumers.push_back(<br>
+      std::unique_ptr<ASTConsumer>(CreateModuleContainerGenerator(<br>
+          CI.getDiagnostics(), Module->getFullModuleName(), CGOpts,<br>
+          CI.getTargetOpts(), CI.getLangOpts(), OS,<br>
+          cast<PCHGenerator>(Consumers[0].get()))));<br>
+  return llvm::make_unique<MultiplexConsumer>(std::move(Consumers));<br>
 }<br>
<br>
 static SmallVectorImpl<char> &<br>
<br>
Modified: cfe/trunk/lib/Frontend/MultiplexConsumer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/MultiplexConsumer.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/MultiplexConsumer.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/MultiplexConsumer.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/MultiplexConsumer.cpp Tue Feb 24 19:31:45 2015<br>
@@ -33,11 +33,14 @@ public:<br>
   void ReaderInitialized(ASTReader *Reader) override;<br>
   void IdentifierRead(serialization::IdentID ID,<br>
                       IdentifierInfo *II) override;<br>
+  void MacroRead(serialization::MacroID ID, MacroInfo *MI) override;<br>
   void TypeRead(serialization::TypeIdx Idx, QualType T) override;<br>
   void DeclRead(serialization::DeclID ID, const Decl *D) override;<br>
   void SelectorRead(serialization::SelectorID iD, Selector Sel) override;<br>
   void MacroDefinitionRead(serialization::PreprocessedEntityID,<br>
                            MacroDefinition *MD) override;<br>
+  void ModuleRead(serialization::SubmoduleID ID, Module *Mod) override;<br>
+<br>
 private:<br>
   std::vector<ASTDeserializationListener*> Listeners;<br>
 };<br>
@@ -59,6 +62,12 @@ void MultiplexASTDeserializationListener<br>
     Listeners[i]->IdentifierRead(ID, II);<br>
 }<br>
<br>
+void MultiplexASTDeserializationListener::MacroRead(<br>
+    serialization::MacroID ID, MacroInfo *MI) {<br>
+  for (auto &Listener : Listeners)<br>
+    Listener->MacroRead(ID, MI);<br>
+}<br>
+<br>
 void MultiplexASTDeserializationListener::TypeRead(<br>
     serialization::TypeIdx Idx, QualType T) {<br>
   for (size_t i = 0, e = Listeners.size(); i != e; ++i)<br>
@@ -83,6 +92,12 @@ void MultiplexASTDeserializationListener<br>
     Listeners[i]->MacroDefinitionRead(ID, MD);<br>
 }<br>
<br>
+void MultiplexASTDeserializationListener::ModuleRead(<br>
+    serialization::SubmoduleID ID, Module *Mod) {<br>
+  for (auto &Listener : Listeners)<br>
+    Listener->ModuleRead(ID, Mod);<br>
+}<br>
+<br>
 // This ASTMutationListener forwards its notifications to a set of<br>
 // child listeners.<br>
 class MultiplexASTMutationListener : public ASTMutationListener {<br>
@@ -98,11 +113,13 @@ public:<br>
                                const VarTemplateSpecializationDecl *D) override;<br>
   void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD,<br>
                                       const FunctionDecl *D) override;<br>
+  void ResolvedExceptionSpec(const FunctionDecl *FD) override;<br>
   void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType) override;<br>
   void CompletedImplicitDefinition(const FunctionDecl *D) override;<br>
   void StaticDataMemberInstantiated(const VarDecl *D) override;<br>
   void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,<br>
                                     const ObjCInterfaceDecl *IFD) override;<br>
+  void FunctionDefinitionInstantiated(const FunctionDecl *D) override;<br>
   void AddedObjCPropertyInClassExtension(const ObjCPropertyDecl *Prop,<br>
                                     const ObjCPropertyDecl *OrigProp,<br>
                                     const ObjCCategoryDecl *ClassExt) override;<br>
@@ -149,6 +166,11 @@ void MultiplexASTMutationListener::Added<br>
   for (size_t i = 0, e = Listeners.size(); i != e; ++i)<br>
     Listeners[i]->AddedCXXTemplateSpecialization(TD, D);<br>
 }<br>
+void MultiplexASTMutationListener::ResolvedExceptionSpec(<br>
+    const FunctionDecl *FD) {<br>
+  for (auto &Listener : Listeners)<br>
+    Listener->ResolvedExceptionSpec(FD);<br>
+}<br>
 void MultiplexASTMutationListener::DeducedReturnType(const FunctionDecl *FD,<br>
                                                      QualType ReturnType) {<br>
   for (size_t i = 0, e = Listeners.size(); i != e; ++i)<br>
@@ -170,6 +192,11 @@ void MultiplexASTMutationListener::Added<br>
   for (size_t i = 0, e = Listeners.size(); i != e; ++i)<br>
     Listeners[i]->AddedObjCCategoryToInterface(CatD, IFD);<br>
 }<br>
+void MultiplexASTMutationListener::FunctionDefinitionInstantiated(<br>
+    const FunctionDecl *D) {<br>
+  for (auto &Listener : Listeners)<br>
+    Listener->FunctionDefinitionInstantiated(D);<br>
+}<br>
 void MultiplexASTMutationListener::AddedObjCPropertyInClassExtension(<br>
                                              const ObjCPropertyDecl *Prop,<br>
                                              const ObjCPropertyDecl *OrigProp,<br>
<br>
Modified: cfe/trunk/lib/Serialization/ASTReader.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)<br>
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Feb 24 19:31:45 2015<br>
@@ -46,6 +46,8 @@<br>
 #include "llvm/ADT/Hashing.h"<br>
 #include "llvm/ADT/StringExtras.h"<br>
 #include "llvm/Bitcode/BitstreamReader.h"<br>
+#include "llvm/Object/COFF.h"<br>
+#include "llvm/Object/ObjectFile.h"<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "llvm/Support/FileSystem.h"<br>
 #include "llvm/Support/MemoryBuffer.h"<br>
@@ -632,6 +634,27 @@ void PCHValidator::ReadCounter(const Mod<br>
 // AST reader implementation<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+void ASTReader::InitStreamFileWithModule(llvm::MemoryBufferRef Buffer,<br>
+                                         llvm::BitstreamReader &StreamFile) {<br>
+  if (auto OF = llvm::object::ObjectFile::createObjectFile(Buffer)) {<br>
+    bool IsCOFF = isa<llvm::object::COFFObjectFile>(OF.get().get());<br>
+    // Find the clang AST section in the container.<br>
+    for (auto &Section : OF->get()->sections()) {<br>
+      StringRef Name;<br>
+      Section.getName(Name);<br>
+      if ((!IsCOFF && Name == "__clangast") ||<br>
+          ( IsCOFF && Name ==   "clangast")) {<br>
+        StringRef Buf;<br>
+        Section.getContents(Buf);<br>
+        return StreamFile.init((const unsigned char*)Buf.begin(),<br>
+                               (const unsigned char*)Buf.end());<br>
+      }<br>
+    }<br>
+  }<br>
+  StreamFile.init((const unsigned char *)Buffer.getBufferStart(),<br>
+                  (const unsigned char *)Buffer.getBufferEnd());<br>
+}<br>
+<br>
 void ASTReader::setDeserializationListener(ASTDeserializationListener *Listener,<br>
                                            bool TakeOwnership) {<br>
   DeserializationListener = Listener;<br>
@@ -3883,9 +3906,10 @@ ASTReader::ReadASTCore(StringRef FileNam<br>
<br>
   ModuleFile &F = *M;<br>
   BitstreamCursor &Stream = F.Stream;<br>
+  InitStreamFileWithModule(F.Buffer->getMemBufferRef(), F.StreamFile);<br>
   Stream.init(&F.StreamFile);<br>
-  F.SizeInBits = F.Buffer->getBufferSize() * 8;<br>
-<br>
+  F.SizeInBits = F.StreamFile.getBitcodeBytes().getExtent() * 8;<br>
+<br>
   // Sniff for the signature.<br>
   if (Stream.Read(8) != 'C' ||<br>
       Stream.Read(8) != 'P' ||<br>
@@ -4174,8 +4198,7 @@ std::string ASTReader::getOriginalSource<br>
<br>
   // Initialize the stream<br>
   llvm::BitstreamReader StreamFile;<br>
-  StreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),<br>
-                  (const unsigned char *)(*Buffer)->getBufferEnd());<br>
+  InitStreamFileWithModule((*Buffer)->getMemBufferRef(), StreamFile);<br>
   BitstreamCursor Stream(StreamFile);<br>
<br>
   // Sniff for the signature.<br>
@@ -4270,8 +4293,7 @@ bool ASTReader::readASTFileControlBlock(<br>
<br>
   // Initialize the stream<br>
   llvm::BitstreamReader StreamFile;<br>
-  StreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),<br>
-                  (const unsigned char *)(*Buffer)->getBufferEnd());<br>
+  InitStreamFileWithModule((*Buffer)->getMemBufferRef(), StreamFile);<br>
   BitstreamCursor Stream(StreamFile);<br>
<br>
   // Sniff for the signature.<br>
<br>
Modified: cfe/trunk/lib/Serialization/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Serialization/CMakeLists.txt (original)<br>
+++ cfe/trunk/lib/Serialization/CMakeLists.txt Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 set(LLVM_LINK_COMPONENTS<br>
   BitReader<br>
+  Object<br>
   Support<br>
   )<br>
<br>
<br>
Modified: cfe/trunk/lib/Serialization/GeneratePCH.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GeneratePCH.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GeneratePCH.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Serialization/GeneratePCH.cpp (original)<br>
+++ cfe/trunk/lib/Serialization/GeneratePCH.cpp Tue Feb 24 19:31:45 2015<br>
@@ -19,7 +19,6 @@<br>
 #include "clang/Lex/Preprocessor.h"<br>
 #include "clang/Sema/SemaConsumer.h"<br>
 #include "llvm/Bitcode/BitstreamWriter.h"<br>
-#include "llvm/Support/raw_ostream.h"<br>
 #include <string><br>
<br>
 using namespace clang;<br>
@@ -28,10 +27,11 @@ PCHGenerator::PCHGenerator(const Preproc<br>
                            StringRef OutputFile,<br>
                            clang::Module *Module,<br>
                            StringRef isysroot,<br>
-                           raw_ostream *OS, bool AllowASTWithErrors)<br>
+                           bool AllowASTWithErrors)<br>
   : PP(PP), OutputFile(OutputFile), Module(Module),<br>
-    isysroot(isysroot.str()), Out(OS),<br>
-    SemaPtr(nullptr), Stream(Buffer), Writer(Stream),<br>
+    isysroot(isysroot.str()),<br>
+    SemaPtr(nullptr), Stream(Buffer),<br>
+    Writer(Stream),<br>
     AllowASTWithErrors(AllowASTWithErrors),<br>
     HasEmittedPCH(false) {<br>
 }<br>
@@ -52,14 +52,8 @@ void PCHGenerator::HandleTranslationUnit<br>
   assert(SemaPtr && "No Sema?");<br>
   Writer.WriteAST(*SemaPtr, OutputFile, Module, isysroot, hasErrors);<br>
<br>
-  // Write the generated bitstream to "Out".<br>
-  Out->write((char *)&Buffer.front(), Buffer.size());<br>
-<br>
-  // Make sure it hits disk now.<br>
-  Out->flush();<br>
-<br>
-  // Free up some memory, in case the process is kept alive.<br>
-  Buffer.clear();<br>
+  if (SerializationFinishedCallback)<br>
+    SerializationFinishedCallback(&Buffer);<br>
<br>
   HasEmittedPCH = true;<br>
 }<br>
<br>
Modified: cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp (original)<br>
+++ cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp Tue Feb 24 19:31:45 2015<br>
@@ -15,6 +15,7 @@<br>
 #include "clang/Basic/FileManager.h"<br>
 #include "clang/Lex/HeaderSearch.h"<br>
 #include "clang/Serialization/ASTBitCodes.h"<br>
+#include "clang/Serialization/ASTReader.h"<br>
 #include "clang/Serialization/GlobalModuleIndex.h"<br>
 #include "clang/Serialization/Module.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
@@ -501,8 +502,8 @@ bool GlobalModuleIndexBuilder::loadModul<br>
<br>
   // Initialize the input stream<br>
   llvm::BitstreamReader InStreamFile;<br>
-  InStreamFile.init((const unsigned char *)(*Buffer)->getBufferStart(),<br>
-                    (const unsigned char *)(*Buffer)->getBufferEnd());<br>
+  ASTReader::InitStreamFileWithModule((*Buffer)->getMemBufferRef(),<br>
+                                      InStreamFile);<br>
   llvm::BitstreamCursor InStream(InStreamFile);<br>
<br>
   // Sniff for the signature.<br>
<br>
Modified: cfe/trunk/lib/Serialization/ModuleManager.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ModuleManager.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ModuleManager.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Serialization/ModuleManager.cpp (original)<br>
+++ cfe/trunk/lib/Serialization/ModuleManager.cpp Tue Feb 24 19:31:45 2015<br>
@@ -13,6 +13,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
 #include "clang/Lex/HeaderSearch.h"<br>
 #include "clang/Lex/ModuleMap.h"<br>
+#include "clang/Serialization/ASTReader.h"<br>
 #include "clang/Serialization/GlobalModuleIndex.h"<br>
 #include "clang/Serialization/ModuleManager.h"<br>
 #include "llvm/Support/MemoryBuffer.h"<br>
@@ -135,10 +136,10 @@ ModuleManager::addModule(StringRef FileN<br>
<br>
       New->Buffer = std::move(*Buf);<br>
     }<br>
-<br>
-    // Initialize the stream<br>
-    New->StreamFile.init((const unsigned char *)New->Buffer->getBufferStart(),<br>
-                         (const unsigned char *)New->Buffer->getBufferEnd());<br>
+<br>
+    // Initialize the stream.<br>
+    ASTReader::InitStreamFileWithModule(New->Buffer->getMemBufferRef(),<br>
+                                        New->StreamFile);<br>
   }<br>
<br>
   if (ExpectedSignature) {<br>
<br>
Modified: cfe/trunk/test/ARCMT/check-with-pch.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/check-with-pch.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/check-with-pch.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/ARCMT/check-with-pch.m (original)<br>
+++ cfe/trunk/test/ARCMT/check-with-pch.m Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 %S/Common.h -emit-pch -o %t.pch<br>
 // RUN: %clang_cc1 -include-pch %t.pch -arcmt-check -verify -triple x86_64-apple-darwin10 -fblocks -Werror %s<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // rdar://9601437<br>
 @interface I9601437 {<br>
<br>
Modified: cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m (original)<br>
+++ cfe/trunk/test/ARCMT/migrate-on-pch-and-module.m Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,7 @@<br>
 // RUN: rm -rf %t-mcp<br>
 // RUN: %clang_cc1 -objcmt-migrate-subscripting -emit-pch -o %t.pch %s -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -F %S/Inputs -fmodules -fmodules-cache-path=%t-mcp -w<br>
 // RUN: %clang_cc1 -objcmt-migrate-subscripting -include-pch %t.pch %s -migrate -o %t.remap -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -F %S/Inputs -fmodules -fmodules-cache-path=%t-mcp<br>
+// REQUIRES: x86-registered-target<br>
<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
Modified: cfe/trunk/test/ARCMT/objcmt-with-pch.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-with-pch.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-with-pch.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/ARCMT/objcmt-with-pch.m (original)<br>
+++ cfe/trunk/test/ARCMT/objcmt-with-pch.m Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c %S/Common.h -emit-pch -o %t.pch<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -include-pch %t.pch<br>
<br>
Modified: cfe/trunk/test/ARCMT/objcmt-with-pch.m.result<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-with-pch.m.result?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-with-pch.m.result?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/ARCMT/objcmt-with-pch.m.result (original)<br>
+++ cfe/trunk/test/ARCMT/objcmt-with-pch.m.result Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c %S/Common.h -emit-pch -o %t.pch<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -include-pch %t.pch<br>
<br>
Modified: cfe/trunk/test/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CMakeLists.txt (original)<br>
+++ cfe/trunk/test/CMakeLists.txt Tue Feb 24 19:31:45 2015<br>
@@ -58,7 +58,7 @@ set(CLANG_TEST_PARAMS<br>
 if( NOT CLANG_BUILT_STANDALONE )<br>
   list(APPEND CLANG_TEST_DEPS<br>
     llvm-config<br>
-    llc opt FileCheck count not llvm-symbolizer llvm-profdata<br>
+    llc opt FileCheck count not llvm-symbolizer llvm-profdata llvm-objdump<br>
     )<br>
 endif()<br>
<br>
<br>
Modified: cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp (original)<br>
+++ cfe/trunk/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -S -emit-llvm -std=c++11 -include %S/ser.h %s -o - | FileCheck %s<br>
 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -emit-pch -o %t-ser.pch -std=c++11 -x c++ %S/ser.h<br>
 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -S -emit-llvm -std=c++11 -include-pch %t-ser.pch %s -o - | FileCheck %s<br>
<br>
Modified: cfe/trunk/test/CodeGen/atomic-ops.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/atomic-ops.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/atomic-ops.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGen/atomic-ops.c (original)<br>
+++ cfe/trunk/test/CodeGen/atomic-ops.c Tue Feb 24 19:31:45 2015<br>
@@ -1,4 +1,5 @@<br>
 // RUN: %clang_cc1 %s -emit-llvm -o - -ffreestanding -triple=i686-apple-darwin9 | FileCheck %s<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // Also test serialization of atomic operations here, to avoid duplicating the<br>
 // test.<br>
<br>
Modified: cfe/trunk/test/CodeGen/big-atomic-ops.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/big-atomic-ops.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/big-atomic-ops.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGen/big-atomic-ops.c (original)<br>
+++ cfe/trunk/test/CodeGen/big-atomic-ops.c Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,5 @@<br>
 // RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-macosx10.9.0 | FileCheck %s<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 // Also test serialization of atomic operations here, to avoid duplicating the<br>
 // test.<br>
 // RUN: %clang_cc1 %s -emit-pch -o %t -triple=x86_64-apple-macosx10.9.0<br>
<br>
Modified: cfe/trunk/test/Frontend/ast-codegen.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/ast-codegen.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/ast-codegen.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Frontend/ast-codegen.c (original)<br>
+++ cfe/trunk/test/Frontend/ast-codegen.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: %clang -target i386-unknown-unknown -emit-ast -o %t.ast %s<br>
 // RUN: %clang -target i386-unknown-unknown -emit-llvm -S -o - %t.ast | FileCheck %s<br>
<br>
<br>
Modified: cfe/trunk/test/Index/TestClassForwardDecl.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/TestClassForwardDecl.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/TestClassForwardDecl.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/TestClassForwardDecl.m (original)<br>
+++ cfe/trunk/test/Index/TestClassForwardDecl.m Tue Feb 24 19:31:45 2015<br>
@@ -1,7 +1,7 @@<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-pch -x objective-c %s -o %t.ast<br>
 // RUN: c-index-test -test-file-scan %t.ast %s | FileCheck -check-prefix=CHECK-scan %s<br>
 // RUN: c-index-test -test-load-tu %t.ast local | FileCheck -check-prefix=CHECK-load %s<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 // This test checks how the @class resolves as a cursor when the @interface is implicitly defined.<br>
 // See TestClassDecl.m for the corresponding test case. (<rdar://problem/7383421>)<br>
<br>
<br>
Modified: cfe/trunk/test/Index/c-index-api-loadTU-test.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/c-index-api-loadTU-test.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/c-index-api-loadTU-test.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/c-index-api-loadTU-test.m (original)<br>
+++ cfe/trunk/test/Index/c-index-api-loadTU-test.m Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,6 @@<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-pch -x objective-c %s -o %t.ast<br>
 // RUN: c-index-test -test-load-tu %t.ast all > %t 2>&1 && FileCheck --input-file=%t %s<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 @interface Foo<br>
 {<br>
   __attribute__((iboutlet)) id myoutlet;<br>
<br>
Modified: cfe/trunk/test/Index/c-index-getCursor-test.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/c-index-getCursor-test.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/c-index-getCursor-test.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/c-index-getCursor-test.m (original)<br>
+++ cfe/trunk/test/Index/c-index-getCursor-test.m Tue Feb 24 19:31:45 2015<br>
@@ -166,3 +166,4 @@ void f() {<br>
 // CHECK: [57:1 - 57:10] FunctionDecl=f:57:6 (Definition)<br>
 // CHECK: [58:4 - 58:8] VarDecl=my_var:58:8 (Definition)<br>
 // CHECK: [58:8 - 58:15] macro expansion=CONCAT:55:9<br>
+// REQUIRES: x86-registered-target<br>
<br>
Modified: cfe/trunk/test/Index/pch-with-module.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/pch-with-module.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/pch-with-module.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/pch-with-module.m (original)<br>
+++ cfe/trunk/test/Index/pch-with-module.m Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t.cache<br>
 // RUN: c-index-test -write-pch %t.h.pch %s -target x86_64-apple-macosx10.7 -fobjc-arc -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs -Xclang -fdisable-module-hash<br>
 // RUN: %clang -fsyntax-only %s -target x86_64-apple-macosx10.7 -include %t.h -fobjc-arc -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \<br>
<br>
Modified: cfe/trunk/test/Index/print-mangled-name.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/print-mangled-name.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/print-mangled-name.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/print-mangled-name.cpp (original)<br>
+++ cfe/trunk/test/Index/print-mangled-name.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-pch %s -o %t_linux.ast<br>
 // RUN: c-index-test -test-print-mangle %t_linux.ast | FileCheck %s --check-prefix=ITANIUM<br>
<br>
<br>
Modified: cfe/trunk/test/Modules/dependency-gen-inferred-map.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/dependency-gen-inferred-map.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/dependency-gen-inferred-map.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/dependency-gen-inferred-map.m (original)<br>
+++ cfe/trunk/test/Modules/dependency-gen-inferred-map.m Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // Test that the virtual file "__inferred_module.map" doesn't show up as dependency.<br>
<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t-mcp<br>
 // RUN: %clang_cc1 -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -dependency-file %t.d -MT %s.o -F %S/Inputs -fsyntax-only -fmodules -fmodules-cache-path=%t-mcp %s<br>
 // RUN: FileCheck %s < %t.d<br>
<br>
Modified: cfe/trunk/test/Modules/dependency-gen-pch.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/dependency-gen-pch.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/dependency-gen-pch.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/dependency-gen-pch.m (original)<br>
+++ cfe/trunk/test/Modules/dependency-gen-pch.m Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // RUN: rm -rf %t-mcp<br>
 // RUN: mkdir -p %t-mcp<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // RUN: %clang_cc1 -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -module-file-deps -dependency-file %t.d -MT %s.o -I %S/Inputs -fmodules -fdisable-module-hash -fmodules-cache-path=%t-mcp -emit-pch -o %t.pch %s<br>
 // RUN: FileCheck %s < %t.d<br>
<br>
Modified: cfe/trunk/test/Modules/irgen.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/irgen.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/irgen.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/irgen.c (original)<br>
+++ cfe/trunk/test/Modules/irgen.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t<br>
 // RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=irgen -triple x86_64-apple-darwin10 %S/Inputs/module.map<br>
 // RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -I %S/Inputs -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s<br>
<br>
Added: cfe/trunk/test/Modules/module_container.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/module_container.m?rev=230423&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/module_container.m?rev=230423&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/module_container.m (added)<br>
+++ cfe/trunk/test/Modules/module_container.m Tue Feb 24 19:31:45 2015<br>
@@ -0,0 +1,14 @@<br>
+@import DependsOnModule;<br>
+// REQUIRES: x86-registered-target<br>
+// RUN: rm -rf %t-MachO %t-ELF %t-COFF<br>
+// RUN: %clang_cc1 -triple=x86_64-apple-darwin -fmodules -fdisable-module-hash -fmodules-cache-path=%t-MachO -F %S/Inputs %s<br>
+// RUN: %clang_cc1 -triple=x86_64-linux-elf -fmodules -fdisable-module-hash -fmodules-cache-path=%t-ELF -F %S/Inputs %s<br>
+// RUN: %clang_cc1 -triple=x86_64-windows-coff -fmodules -fdisable-module-hash -fmodules-cache-path=%t-COFF -F %S/Inputs %s<br>
+<br>
+// RUN: llvm-objdump -section-headers %t-MachO/DependsOnModule.pcm %t-ELF/DependsOnModule.pcm %t-COFF/DependsOnModule.pcm | FileCheck %s<br>
+// CHECK: file format Mach-O 64-bit x86-64<br>
+// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} DATA<br>
+// CHECK: file format ELF64-x86-64<br>
+// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} DATA<br>
+// CHECK: file format COFF-x86-64<br>
+// CHECK: clangast   {{[0-9a-f]+}} {{[0-9a-f]+}}<br>
<br>
Modified: cfe/trunk/test/Modules/self-import-header.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/self-import-header.m (original)<br>
+++ cfe/trunk/test/Modules/self-import-header.m Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,5 @@<br>
 // rdar://13840148<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t<br>
 // RUN: %clang -fsyntax-only -isysroot %S/Inputs/System/usr/include -fmodules -fmodules-cache-path=%t \<br>
 // RUN:    -target x86_64-darwin \<br>
<br>
Modified: cfe/trunk/test/Modules/<a href="http://templates-2.mm" target="_blank">templates-2.mm</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/templates-2.mm?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/templates-2.mm?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/<a href="http://templates-2.mm" target="_blank">templates-2.mm</a> (original)<br>
+++ cfe/trunk/test/Modules/<a href="http://templates-2.mm" target="_blank">templates-2.mm</a> Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -verify %s -Wno-objc-root-class<br>
 // RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -emit-llvm %s -o - -Wno-objc-root-class | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 @import templates_top;<br>
<br>
 struct TestEmitDefaultedSpecialMembers {<br>
<br>
Modified: cfe/trunk/test/Modules/<a href="http://templates.mm" target="_blank">templates.mm</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/templates.mm?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/templates.mm?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/<a href="http://templates.mm" target="_blank">templates.mm</a> (original)<br>
+++ cfe/trunk/test/Modules/<a href="http://templates.mm" target="_blank">templates.mm</a> Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -verify %s -Wno-objc-root-class<br>
 // RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -emit-llvm %s -o - -Wno-objc-root-class | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 @import templates_left;<br>
<br>
 void testInlineRedeclEarly() {<br>
<br>
Modified: cfe/trunk/test/Modules/va_list.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/va_list.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/va_list.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/va_list.m (original)<br>
+++ cfe/trunk/test/Modules/va_list.m Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: rm -rf %t<br>
 // RUN: %clang_cc1 -triple x86_64-apple-macosx10 -fmodules -fmodules-cache-path=%t \<br>
 // RUN:     -fmodules-ignore-macro=PREFIX -DPREFIX -I %S/Inputs/va_list \<br>
<br>
Modified: cfe/trunk/test/OpenMP/atomic_read_codegen.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/atomic_read_codegen.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/atomic_read_codegen.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/atomic_read_codegen.c (original)<br>
+++ cfe/trunk/test/OpenMP/atomic_read_codegen.c Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c -triple x86_64-apple-darwin10 -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c -triple x86_64-apple-darwin10 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/barrier_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/barrier_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/barrier_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/barrier_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/barrier_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/critical_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/critical_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/critical_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/critical_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/critical_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/flush_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/flush_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/flush_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/flush_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/flush_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -g -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/for_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/for_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/for_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/for_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/for_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -3,9 +3,9 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -g -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 //<br>
 // expected-no-diagnostics<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
-<br>
 // CHECK: [[IDENT_T_TY:%.+]] = type { i32, i32, i32, i32, i8* }<br>
 // CHECK-LABEL: define {{.*void}} @{{.*}}without_schedule_clause{{.*}}(float* {{.+}}, float* {{.+}}, float* {{.+}}, float* {{.+}})<br>
 void without_schedule_clause(float *a, float *b, float *c, float *d) {<br>
<br>
Modified: cfe/trunk/test/OpenMP/master_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/master_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/master_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/master_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/master_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/parallel_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/parallel_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/parallel_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,9 +2,9 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -g -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix=CHECK-DEBUG %s<br>
 // expected-no-diagnostics<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
-<br>
 // CHECK-DAG: %ident_t = type { i32, i32, i32, i32, i8* }<br>
 // CHECK-DAG: %struct.anon = type { i32* }<br>
 // CHECK-DAG: %struct.anon.0 = type { i8*** }<br>
<br>
Modified: cfe/trunk/test/OpenMP/parallel_private_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_private_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_private_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/parallel_private_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/parallel_private_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -4,9 +4,9 @@<br>
 // RUN: %clang_cc1 -verify -fopenmp=libiomp5 -x c++ -std=c++11 -DLAMBDA -triple %itanium_abi_triple -emit-llvm %s -o - | FileCheck -check-prefix=LAMBDA %s<br>
 // RUN: %clang_cc1 -verify -fopenmp=libiomp5 -x c++ -fblocks -DBLOCKS -triple %itanium_abi_triple -emit-llvm %s -o - | FileCheck -check-prefix=BLOCKS %s<br>
 // expected-no-diagnostics<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
-<br>
 template <class T><br>
 struct S {<br>
   T f;<br>
<br>
Modified: cfe/trunk/test/OpenMP/simd_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/simd_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/simd_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/simd_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/simd_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,7 +1,7 @@<br>
 // RUN: %clang_cc1 -verify -fopenmp=libiomp5 -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -o - | FileCheck %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -g -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
-//<br>
+// REQUIRES: x86-registered-target<br>
 // expected-no-diagnostics<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
Modified: cfe/trunk/test/OpenMP/single_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/single_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/single_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/single_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/single_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/taskyield_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/taskyield_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/taskyield_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/taskyield_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/taskyield_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -2,7 +2,7 @@<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -std=c++11 -triple x86_64-unknown-unknown -emit-pch -o %t %s<br>
 // RUN: %clang_cc1 -fopenmp=libiomp5 -x c++ -triple x86_64-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s<br>
 // expected-no-diagnostics<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER<br>
 #define HEADER<br>
<br>
<br>
Modified: cfe/trunk/test/OpenMP/threadprivate_codegen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/threadprivate_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/threadprivate_codegen.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/OpenMP/threadprivate_codegen.cpp (original)<br>
+++ cfe/trunk/test/OpenMP/threadprivate_codegen.cpp Tue Feb 24 19:31:45 2015<br>
@@ -18,7 +18,7 @@<br>
 // CHECK-DEBUG-DAG: [[S4:%.+]] = type { [[INT]], [[INT]] }<br>
 // CHECK-DEBUG-DAG: [[S5:%.+]] = type { [[INT]], [[INT]], [[INT]] }<br>
 // CHECK-DEBUG-DAG: [[SMAIN:%.+]] = type { [[INT]], double, double }<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 struct S1 {<br>
   int a;<br>
   S1()<br>
<br>
Modified: cfe/trunk/test/PCH/__va_list_tag.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/__va_list_tag.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/__va_list_tag.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/__va_list_tag.c (original)<br>
+++ cfe/trunk/test/PCH/__va_list_tag.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // PR13189<br>
 // rdar://problem/11741429<br>
 // Test this without pch.<br>
<br>
Modified: cfe/trunk/test/PCH/arc.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/arc.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/arc.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/arc.m (original)<br>
+++ cfe/trunk/test/PCH/arc.m Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // Test this without pch.<br>
 // RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -fobjc-arc -include %S/Inputs/arc.h -fsyntax-only -emit-llvm-only %s<br>
<br>
<br>
Modified: cfe/trunk/test/PCH/asm.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/asm.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/asm.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/asm.c (original)<br>
+++ cfe/trunk/test/PCH/asm.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // Test this without pch.<br>
 // RUN: %clang_cc1 -triple i386-unknown-unknown -include %S/asm.h -fsyntax-only -verify %s<br>
<br>
<br>
Modified: cfe/trunk/test/PCH/chain-external-defs.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/chain-external-defs.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/chain-external-defs.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/chain-external-defs.c (original)<br>
+++ cfe/trunk/test/PCH/chain-external-defs.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // Test with pch.<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t1.pch %S/Inputs/chain-external-defs1.h<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t2.pch %S/Inputs/chain-external-defs2.h -include-pch %t1.pch<br>
<br>
Modified: cfe/trunk/test/PCH/chain-trivial.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/chain-trivial.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/chain-trivial.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/chain-trivial.c (original)<br>
+++ cfe/trunk/test/PCH/chain-trivial.c Tue Feb 24 19:31:45 2015<br>
@@ -1,2 +1,3 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-pch -o %t1 %S/Inputs/chain-trivial1.h<br>
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-pch -o %t2 -include-pch %t1 %S/Inputs/chain-trivial2.h<br>
<br>
Modified: cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp (original)<br>
+++ cfe/trunk/test/PCH/cxx-ms-function-specialization-class-scope.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: %clang_cc1 -fms-extensions -triple i386-unknown-unknown  -x c++-header -emit-pch -o %t %S/cxx-ms-function-specialization-class-scope.h<br>
 // RUN: %clang_cc1 -fms-extensions -triple i386-unknown-unknown -include-pch %t -fsyntax-only -verify %s<br>
 // expected-no-diagnostics<br>
<br>
Modified: cfe/trunk/test/PCH/external-defs.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/external-defs.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/external-defs.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/external-defs.c (original)<br>
+++ cfe/trunk/test/PCH/external-defs.c Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // Test with pch.<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/external-defs.h<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -emit-llvm -o %t %s<br>
<br>
Modified: cfe/trunk/test/PCH/floating-literal.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/floating-literal.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/floating-literal.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/floating-literal.c (original)<br>
+++ cfe/trunk/test/PCH/floating-literal.c Tue Feb 24 19:31:45 2015<br>
@@ -1,4 +1,5 @@<br>
 // RUN: %clang_cc1 -triple mips64-none-linux-gnu -emit-pch -o %t %s<br>
+// REQUIRES: mips-registered-target<br>
 // RUN: %clang_cc1 -x ast -ast-print %t | FileCheck %s<br>
<br>
 // Make sure the semantics of FloatingLiterals are stored correctly in<br>
<br>
Modified: cfe/trunk/test/PCH/local_static.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/local_static.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/local_static.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/local_static.cpp (original)<br>
+++ cfe/trunk/test/PCH/local_static.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,3 +1,4 @@<br>
+// REQUIRES: x86-registered-target<br>
 // Test this without PCH.<br>
 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.9.0 -include %S/local_static.h -fsyntax-only %s -emit-llvm -o %t.no_pch.ll %s<br>
 // RUN: FileCheck --input-file %t.no_pch.ll %s<br>
<br>
Modified: cfe/trunk/test/PCH/pchpch.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/pchpch.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/pchpch.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/pchpch.c (original)<br>
+++ cfe/trunk/test/PCH/pchpch.c Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,7 @@<br>
 // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pch -o %t1 %S/pchpch1.h<br>
 // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pch -o %t2 %S/pchpch2.h -include-pch %t1<br>
 // RUN: %clang_cc1 -triple i386-unknown-unknown -fsyntax-only %s -include-pch %t2<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // The purpose of this test is to make sure that a PCH created while including<br>
 // an existing PCH can be loaded.<br>
<br>
Modified: cfe/trunk/test/PCH/reloc.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/reloc.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/reloc.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/reloc.c (original)<br>
+++ cfe/trunk/test/PCH/reloc.c Tue Feb 24 19:31:45 2015<br>
@@ -3,6 +3,7 @@<br>
 // RUN: %clang -target x86_64-apple-darwin10 -fsyntax-only \<br>
 // RUN:   -include-pch %t -isysroot %S/libroot %s -Xclang -verify<br>
 // RUN: not %clang -target x86_64-apple-darwin10 -include-pch %t %s<br>
+// REQUIRES: x86-registered-target<br>
<br>
 #include <reloc.h><br>
<br>
<br>
Modified: cfe/trunk/test/PCH/subscripting-literals.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/subscripting-literals.m?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/subscripting-literals.m?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/subscripting-literals.m (original)<br>
+++ cfe/trunk/test/PCH/subscripting-literals.m Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,7 @@<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t.nopch.ll %s<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-pch -o %t.pch %s<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t.pch.ll %s -include-pch %t.pch<br>
+// REQUIRES: x86-registered-target<br>
 // RUN: diff %t.nopch.ll %t.pch.ll<br>
<br>
 #ifndef HEADER<br>
<br>
Modified: cfe/trunk/test/PCH/target-options.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/target-options.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/target-options.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/target-options.c (original)<br>
+++ cfe/trunk/test/PCH/target-options.c Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // RUN: %clang_cc1 -triple=x86_64-apple-darwin9 -emit-pch -o %t.pch %S/target-options.h<br>
 // RUN: not %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include-pch %t.pch %s -emit-llvm -o - > %t.err 2>&1<br>
 // RUN: FileCheck %s < %t.err<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // CHECK: for the target<br>
<br>
Modified: cfe/trunk/test/PCH/tentative-defs.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/tentative-defs.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/tentative-defs.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/tentative-defs.c (original)<br>
+++ cfe/trunk/test/PCH/tentative-defs.c Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,7 @@<br>
 // Test with pch.<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/tentative-defs.h<br>
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -verify -emit-llvm -o %t %s<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // RUN: grep "@variable = common global i32 0" %t | count 1<br>
 // RUN: grep "@incomplete_array = common global .*1 x i32" %t | count 1<br>
<br>
Modified: cfe/trunk/test/PCH/thread-local.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/thread-local.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/thread-local.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/thread-local.cpp (original)<br>
+++ cfe/trunk/test/PCH/thread-local.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,6 +1,6 @@<br>
 // RUN: %clang_cc1 -pedantic-errors -std=c++11 -triple x86_64-linux-gnu -emit-pch %s -o %t<br>
 // RUN: %clang_cc1 -pedantic-errors -std=c++11 -triple x86_64-linux-gnu -include-pch %t -verify %s<br>
-<br>
+// REQUIRES: x86-registered-target<br>
 #ifndef HEADER_INCLUDED<br>
<br>
 #define HEADER_INCLUDED<br>
<br>
Modified: cfe/trunk/test/PCH/va_arg.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/va_arg.c?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/va_arg.c?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/va_arg.c (original)<br>
+++ cfe/trunk/test/PCH/va_arg.c Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // Test this without pch.<br>
 // RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include %S/va_arg.h %s -emit-llvm -o -<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // Test with pch.<br>
 // RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -emit-pch -o %t %S/va_arg.h<br>
<br>
Modified: cfe/trunk/test/PCH/va_arg.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/va_arg.cpp?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/va_arg.cpp?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/PCH/va_arg.cpp (original)<br>
+++ cfe/trunk/test/PCH/va_arg.cpp Tue Feb 24 19:31:45 2015<br>
@@ -1,5 +1,6 @@<br>
 // Test this without pch.<br>
 // RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include %S/Inputs/va_arg.h %s -emit-llvm -o -<br>
+// REQUIRES: x86-registered-target<br>
<br>
 // Test with pch.<br>
 // RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -emit-pch -x c++-header -o %t %S/Inputs/va_arg.h<br>
<br>
Modified: cfe/trunk/tools/arcmt-test/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/arcmt-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/arcmt-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/arcmt-test/Makefile (original)<br>
+++ cfe/trunk/tools/arcmt-test/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -17,9 +17,11 @@ TOOL_NO_EXPORTS = 1<br>
 NO_INSTALL = 1<br>
<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo mc objcarcopts option support<br>
 USEDLIBS = clangARCMigrate.a clangRewrite.a \<br>
-                clangFrontend.a clangDriver.a clangSerialization.a clangParse.a \<br>
+                clangFrontend.a clangCodeGen.a \<br>
+                 clangDriver.a clangSerialization.a clangParse.a \<br>
                 clangSema.a clangEdit.a clangAnalysis.a clangAST.a clangLex.a \<br>
                 clangBasic.a<br>
<br>
<br>
Modified: cfe/trunk/tools/c-arcmt-test/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-arcmt-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-arcmt-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/c-arcmt-test/Makefile (original)<br>
+++ cfe/trunk/tools/c-arcmt-test/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -21,7 +21,8 @@ NO_INSTALL = 1<br>
 # LINK_COMPONENTS before including Makefile.rules<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo support mc objcarcopts option<br>
<br>
 # Note that 'USEDLIBS' must include all of the core clang libraries<br>
 # when -static is given to linker on cygming.<br>
@@ -33,7 +34,7 @@ USEDLIBS = clang.a \<br>
           clangToolingCore.a \<br>
           clangRewriteFrontend.a \<br>
           clangRewrite.a \<br>
-          clangFrontend.a clangDriver.a \<br>
+          clangFrontend.a clangCodeGen.a clangDriver.a \<br>
           clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \<br>
           clangSerialization.a clangParse.a clangSema.a \<br>
           clangAnalysis.a clangEdit.a clangAST.a clangLex.a clangBasic.a<br>
<br>
Modified: cfe/trunk/tools/c-index-test/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/c-index-test/Makefile (original)<br>
+++ cfe/trunk/tools/c-index-test/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -22,13 +22,15 @@ TOOL_NO_EXPORTS = 1<br>
 # LINK_COMPONENTS before including Makefile.rules<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo support mc objcarcopts option<br>
<br>
 # Note that 'USEDLIBS' must include all of the core clang libraries<br>
 # when -static is given to linker on cygming.<br>
 USEDLIBS = clang.a \<br>
           clangIndex.a clangFormat.a clangRewrite.a \<br>
-          clangFrontend.a clangDriver.a \<br>
+           clangCodeGen.a \<br>
+          clangFrontend.a clangCodeGen.a clangDriver.a \<br>
           clangTooling.a \<br>
           clangToolingCore.a \<br>
           clangSerialization.a clangParse.a clangSema.a \<br>
<br>
Modified: cfe/trunk/tools/clang-check/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-check/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-check/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/clang-check/Makefile (original)<br>
+++ cfe/trunk/tools/clang-check/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -15,8 +15,9 @@ TOOLNAME = clang-check<br>
 TOOL_NO_EXPORTS = 1<br>
<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
-USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a \<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo mc option objcarcopts support<br>
+USEDLIBS = clangFrontend.a clangCodeGen.a clangSerialization.a clangDriver.a \<br>
            clangTooling.a clangParse.a clangSema.a \<br>
            clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \<br>
            clangStaticAnalyzerCore.a clangAnalysis.a clangRewriteFrontend.a \<br>
<br>
Modified: cfe/trunk/tools/diagtool/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/diagtool/Makefile (original)<br>
+++ cfe/trunk/tools/diagtool/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -20,7 +20,7 @@ include $(CLANG_LEVEL)/../../Makefile.co<br>
 LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
 USEDLIBS = clangFrontend.a clangDriver.a clangSerialization.a clangParse.a \<br>
            clangSema.a clangAnalysis.a clangEdit.a clangAST.a clangLex.a \<br>
-           clangBasic.a<br>
+           clangBasic.a clangCodeGen.a<br>
<br>
 include $(CLANG_LEVEL)/Makefile<br>
<br>
<br>
Modified: cfe/trunk/tools/libclang/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CMakeLists.txt?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/libclang/CMakeLists.txt (original)<br>
+++ cfe/trunk/tools/libclang/CMakeLists.txt Tue Feb 24 19:31:45 2015<br>
@@ -40,6 +40,7 @@ set(SOURCES<br>
 set(LIBS<br>
   clangAST<br>
   clangBasic<br>
+  clangCodeGen<br>
   clangFrontend<br>
   clangIndex<br>
   clangLex<br>
<br>
Modified: cfe/trunk/tools/libclang/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/tools/libclang/Makefile (original)<br>
+++ cfe/trunk/tools/libclang/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -16,12 +16,13 @@ LINK_LIBS_IN_SHARED = 1<br>
 SHARED_LIBRARY = 1<br>
<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := AsmParser BitReader Core MC MCParser Option Support<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter core \<br>
+                   instrumentation ipo mc mcparser objcarcopts option support<br>
 USEDLIBS = clangIndex.a clangARCMigrate.a \<br>
           clangRewriteFrontend.a \<br>
           clangFormat.a \<br>
           clangTooling.a clangToolingCore.a \<br>
-          clangFrontend.a clangDriver.a \<br>
+          clangFrontend.a clangCodeGen.a clangDriver.a \<br>
           clangSerialization.a \<br>
           clangParse.a clangSema.a \<br>
           clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \<br>
<br>
Modified: cfe/trunk/unittests/AST/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/AST/Makefile (original)<br>
+++ cfe/trunk/unittests/AST/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -10,9 +10,10 @@<br>
 CLANG_LEVEL = ../..<br>
 TESTNAME = AST<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation mc option objcarcopts support<br>
 USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a \<br>
-           clangRewrite.a clangRewriteFrontend.a \<br>
+           clangCodeGen.a clangRewrite.a clangRewriteFrontend.a \<br>
            clangParse.a clangSema.a clangAnalysis.a \<br>
            clangEdit.a clangAST.a clangASTMatchers.a clangLex.a clangBasic.a<br>
<br>
<br>
Modified: cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile (original)<br>
+++ cfe/trunk/unittests/ASTMatchers/Dynamic/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -11,10 +11,11 @@ CLANG_LEVEL = ../../..<br>
<br>
 TESTNAME = DynamicASTMatchers<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
-USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a \<br>
-           clangRewrite.a clangRewriteFrontend.a clangParse.a clangSema.a \<br>
-           clangAnalysis.a clangEdit.a clangAST.a clangASTMatchers.a \<br>
-           clangLex.a clangBasic.a clangDynamicASTMatchers.a<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo mc option objcarcopts support<br>
+USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a    \<br>
+           clangCodeGen.a clangRewrite.a clangRewriteFrontend.a clangParse.a    \<br>
+           clangSema.a clangAnalysis.a clangEdit.a clangAST.a                   \<br>
+           clangASTMatchers.a clangLex.a clangBasic.a clangDynamicASTMatchers.a<br>
<br>
 include $(CLANG_LEVEL)/unittests/Makefile<br>
<br>
Modified: cfe/trunk/unittests/ASTMatchers/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/ASTMatchers/Makefile (original)<br>
+++ cfe/trunk/unittests/ASTMatchers/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -13,9 +13,10 @@ PARALLEL_DIRS = Dynamic<br>
<br>
 TESTNAME = ASTMatchers<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation mc option objcarcopts support<br>
 USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a \<br>
-           clangRewrite.a clangRewriteFrontend.a \<br>
+           clangCodeGen.a clangRewrite.a clangRewriteFrontend.a \<br>
            clangParse.a clangSema.a clangAnalysis.a \<br>
            clangEdit.a clangAST.a clangASTMatchers.a clangLex.a clangBasic.a<br>
<br>
<br>
Modified: cfe/trunk/unittests/CodeGen/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/CodeGen/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/CodeGen/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/CodeGen/Makefile (original)<br>
+++ cfe/trunk/unittests/CodeGen/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -10,9 +10,9 @@<br>
 CLANG_LEVEL = ../..<br>
 TESTNAME = CodeGen<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader mc option \<br>
-                   profiledata support<br>
-USEDLIBS = clangCodeGen.a clangFrontend.a clangSerialization.a \<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo mc option objcarcopts profiledata support<br>
+USEDLIBS = clangFrontend.a clangCodeGen.a clangSerialization.a \<br>
            clangDriver.a \<br>
            clangParse.a clangSema.a clangAnalysis.a \<br>
            clangEdit.a clangAST.a clangLex.a clangBasic.a<br>
<br>
Modified: cfe/trunk/unittests/Frontend/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Frontend/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Frontend/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/Frontend/Makefile (original)<br>
+++ cfe/trunk/unittests/Frontend/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -10,7 +10,8 @@<br>
 CLANG_LEVEL = ../..<br>
 TESTNAME = Frontend<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation mc option objcarcopts support<br>
 USEDLIBS = clangFrontendTool.a clangFrontend.a clangDriver.a \<br>
            clangSerialization.a clangCodeGen.a clangParse.a clangSema.a \<br>
            clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \<br>
<br>
Modified: cfe/trunk/unittests/Sema/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Sema/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Sema/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/Sema/Makefile (original)<br>
+++ cfe/trunk/unittests/Sema/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -10,9 +10,10 @@<br>
 CLANG_LEVEL = ../..<br>
 TESTNAME = Sema<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation mc option objcarcopts support<br>
 USEDLIBS = clangTooling.a clangFrontend.a clangSerialization.a clangDriver.a \<br>
-           clangRewrite.a clangRewriteFrontend.a \<br>
+           clangCodeGen.a clangRewrite.a clangRewriteFrontend.a \<br>
            clangParse.a clangSema.a clangAnalysis.a \<br>
            clangEdit.a clangAST.a clangASTMatchers.a clangLex.a clangBasic.a<br>
<br>
<br>
Modified: cfe/trunk/unittests/Tooling/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/Tooling/Makefile (original)<br>
+++ cfe/trunk/unittests/Tooling/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -10,9 +10,10 @@<br>
 CLANG_LEVEL = ../..<br>
 TESTNAME = Tooling<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter \<br>
+                   instrumentation ipo mc option objcarcopts support<br>
 USEDLIBS = clangTooling.a clangToolingCore.a clangFrontend.a \<br>
-          clangSerialization.a clangDriver.a \<br>
+          clangCodeGen.a clangSerialization.a clangDriver.a \<br>
            clangParse.a clangRewrite.a clangRewriteFrontend.a \<br>
           clangSema.a clangAnalysis.a clangEdit.a \<br>
            clangAST.a clangASTMatchers.a clangLex.a clangBasic.a<br>
<br>
Modified: cfe/trunk/unittests/libclang/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/Makefile?rev=230423&r1=230422&r2=230423&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/libclang/Makefile?rev=230423&r1=230422&r2=230423&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/libclang/Makefile (original)<br>
+++ cfe/trunk/unittests/libclang/Makefile Tue Feb 24 19:31:45 2015<br>
@@ -12,13 +12,14 @@ TESTNAME = libclang<br>
 LINK_LIBS_IN_SHARED := 1<br>
<br>
 include $(CLANG_LEVEL)/../../Makefile.config<br>
-LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option<br>
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader ipo objcarcopts \<br>
+                   instrumentation bitwriter support mc option<br>
<br>
 # Note that 'USEDLIBS' must include all of the core clang libraries<br>
 # when -static is given to linker on cygming.<br>
 USEDLIBS = clang.a \<br>
           clangIndex.a clangFormat.a clangRewrite.a \<br>
-          clangFrontend.a clangDriver.a \<br>
+          clangCodeGen.a clangFrontend.a clangDriver.a \<br>
           clangTooling.a \<br>
           clangToolingCore.a \<br>
           clangSerialization.a clangParse.a clangSema.a \<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>