BitcodeWriterPass.cpp revision 276479
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
21276479SdimPreservedAnalyses BitcodeWriterPass::run(Module *M) {
22276479Sdim  WriteBitcodeToFile(M, OS);
23276479Sdim  return PreservedAnalyses::all();
24276479Sdim}
25276479Sdim
26193323Sednamespace {
27193323Sed  class WriteBitcodePass : public ModulePass {
28198090Srdivacky    raw_ostream &OS; // raw_ostream to print on
29193323Sed  public:
30193323Sed    static char ID; // Pass identification, replacement for typeid
31193323Sed    explicit WriteBitcodePass(raw_ostream &o)
32212904Sdim      : ModulePass(ID), OS(o) {}
33249423Sdim
34276479Sdim    const char *getPassName() const override { return "Bitcode Writer"; }
35249423Sdim
36276479Sdim    bool runOnModule(Module &M) override {
37198090Srdivacky      WriteBitcodeToFile(&M, OS);
38193323Sed      return false;
39193323Sed    }
40193323Sed  };
41193323Sed}
42193323Sed
43193323Sedchar WriteBitcodePass::ID = 0;
44193323Sed
45193323SedModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) {
46193323Sed  return new WriteBitcodePass(Str);
47193323Sed}
48