Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. //===-- llvm/CodeGen/ParallelCG.h - Parallel code generation ----*- C++ -*-===//
  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 header declares functions that can be used for parallel code generation.
  10. //
  11. //===----------------------------------------------------------------------===//
  12.  
  13. #ifndef LLVM_CODEGEN_PARALLELCG_H
  14. #define LLVM_CODEGEN_PARALLELCG_H
  15.  
  16. #include "llvm/Support/CodeGen.h"
  17. #include <functional>
  18. #include <memory>
  19.  
  20. namespace llvm {
  21.  
  22. template <typename T> class ArrayRef;
  23. class Module;
  24. class TargetMachine;
  25. class raw_pwrite_stream;
  26.  
  27. /// Split M into OSs.size() partitions, and generate code for each. Takes a
  28. /// factory function for the TargetMachine TMFactory. Writes OSs.size() output
  29. /// files to the output streams in OSs. The resulting output files if linked
  30. /// together are intended to be equivalent to the single output file that would
  31. /// have been code generated from M.
  32. ///
  33. /// Writes bitcode for individual partitions into output streams in BCOSs, if
  34. /// BCOSs is not empty.
  35. void splitCodeGen(
  36.     Module &M, ArrayRef<raw_pwrite_stream *> OSs,
  37.     ArrayRef<llvm::raw_pwrite_stream *> BCOSs,
  38.     const std::function<std::unique_ptr<TargetMachine>()> &TMFactory,
  39.     CodeGenFileType FileType = CGFT_ObjectFile, bool PreserveLocals = false);
  40.  
  41. } // namespace llvm
  42.  
  43. #endif
  44.