Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 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