BitcodeWriterPass.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // BitcodeWriterPass implementation.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #include "llvm/Bitcode/BitcodeWriterPass.h"
  14. #include "llvm/Bitcode/ReaderWriter.h"
  15. #include "llvm/IR/Module.h"
  16. #include "llvm/IR/PassManager.h"
  17. #include "llvm/Pass.h"
  18. using namespace llvm;
  19. PreservedAnalyses BitcodeWriterPass::run(Module &M) {
  20. WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
  21. return PreservedAnalyses::all();
  22. }
  23. namespace {
  24. class WriteBitcodePass : public ModulePass {
  25. raw_ostream &OS; // raw_ostream to print on
  26. bool ShouldPreserveUseListOrder;
  27. public:
  28. static char ID; // Pass identification, replacement for typeid
  29. explicit WriteBitcodePass(raw_ostream &o, bool ShouldPreserveUseListOrder)
  30. : ModulePass(ID), OS(o),
  31. ShouldPreserveUseListOrder(ShouldPreserveUseListOrder) {}
  32. const char *getPassName() const override { return "Bitcode Writer"; }
  33. bool runOnModule(Module &M) override {
  34. WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
  35. return false;
  36. }
  37. };
  38. }
  39. char WriteBitcodePass::ID = 0;
  40. ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str,
  41. bool ShouldPreserveUseListOrder) {
  42. return new WriteBitcodePass(Str, ShouldPreserveUseListOrder);
  43. }