BitcodeWriterPass.cpp revision 288943
1276479Sdim//===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// BitcodeWriterPass implementation.
11193323Sed//
12193323Sed//===----------------------------------------------------------------------===//
13193323Sed
14276479Sdim#include "llvm/Bitcode/BitcodeWriterPass.h"
15193323Sed#include "llvm/Bitcode/ReaderWriter.h"
16276479Sdim#include "llvm/IR/Module.h"
17276479Sdim#include "llvm/IR/PassManager.h"
18193323Sed#include "llvm/Pass.h"
19193323Sedusing namespace llvm;
20193323Sed
21280031SdimPreservedAnalyses BitcodeWriterPass::run(Module &M) {
22288943Sdim  WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
23276479Sdim  return PreservedAnalyses::all();
24276479Sdim}
25276479Sdim
26193323Sednamespace {
27193323Sed  class WriteBitcodePass : public ModulePass {
28198090Srdivacky    raw_ostream &OS; // raw_ostream to print on
29288943Sdim    bool ShouldPreserveUseListOrder;
30288943Sdim
31193323Sed  public:
32193323Sed    static char ID; // Pass identification, replacement for typeid
33288943Sdim    explicit WriteBitcodePass(raw_ostream &o, bool ShouldPreserveUseListOrder)
34288943Sdim        : ModulePass(ID), OS(o),
35288943Sdim          ShouldPreserveUseListOrder(ShouldPreserveUseListOrder) {}
36249423Sdim
37276479Sdim    const char *getPassName() const override { return "Bitcode Writer"; }
38249423Sdim
39276479Sdim    bool runOnModule(Module &M) override {
40288943Sdim      WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
41193323Sed      return false;
42193323Sed    }
43193323Sed  };
44193323Sed}
45193323Sed
46193323Sedchar WriteBitcodePass::ID = 0;
47193323Sed
48288943SdimModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str,
49288943Sdim                                          bool ShouldPreserveUseListOrder) {
50288943Sdim  return new WriteBitcodePass(Str, ShouldPreserveUseListOrder);
51193323Sed}
52