Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- ThinLTOBitcodeWriter.h - Bitcode writing pass for ThinLTO ----------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This pass prepares a module containing type metadata for ThinLTO by splitting
  10. // it into regular and thin LTO parts if possible, and writing both parts to
  11. // a multi-module bitcode file. Modules that do not contain type metadata are
  12. // written unmodified as a single module.
  13. //
  14. //===----------------------------------------------------------------------===//
  15.  
  16. #ifndef LLVM_TRANSFORMS_IPO_THINLTOBITCODEWRITER_H
  17. #define LLVM_TRANSFORMS_IPO_THINLTOBITCODEWRITER_H
  18.  
  19. #include <llvm/IR/PassManager.h>
  20.  
  21. namespace llvm {
  22. class Module;
  23. class raw_ostream;
  24.  
  25. class ThinLTOBitcodeWriterPass
  26.     : public PassInfoMixin<ThinLTOBitcodeWriterPass> {
  27.   raw_ostream &OS;
  28.   raw_ostream *ThinLinkOS;
  29.  
  30. public:
  31.   // Writes bitcode to OS. Also write thin link file to ThinLinkOS, if
  32.   // it's not nullptr.
  33.   ThinLTOBitcodeWriterPass(raw_ostream &OS, raw_ostream *ThinLinkOS)
  34.       : OS(OS), ThinLinkOS(ThinLinkOS) {}
  35.  
  36.   PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
  37.  
  38.   static bool isRequired() { return true; }
  39. };
  40.  
  41. } // namespace llvm
  42.  
  43. #endif
  44.