blob: 4167f6da509ab67c2ddd07e56ffa2578ea9200b5 [file] [log] [blame]
Stephen Hines36b56882014-04-23 16:57:46 -07001//===- BitcodeWriterPass.cpp - Bitcode writing pass -----------------------===//
Chris Lattnere8e1e4b2007-05-06 02:30:12 +00002//
3// The LLVM Compiler Infrastructure
4//
Chris Lattner4ee451d2007-12-29 20:36:04 +00005// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
Chris Lattnere8e1e4b2007-05-06 02:30:12 +00007//
8//===----------------------------------------------------------------------===//
9//
10// BitcodeWriterPass implementation.
11//
12//===----------------------------------------------------------------------===//
13
Stephen Hines36b56882014-04-23 16:57:46 -070014#include "llvm/Bitcode/BitcodeWriterPass.h"
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000015#include "llvm/Bitcode/ReaderWriter.h"
Stephen Hines36b56882014-04-23 16:57:46 -070016#include "llvm/IR/Module.h"
17#include "llvm/IR/PassManager.h"
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000018#include "llvm/Pass.h"
19using namespace llvm;
20
Stephen Hines36b56882014-04-23 16:57:46 -070021PreservedAnalyses BitcodeWriterPass::run(Module *M) {
22 WriteBitcodeToFile(M, OS);
23 return PreservedAnalyses::all();
24}
25
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000026namespace {
27 class WriteBitcodePass : public ModulePass {
Chris Lattnerb515d752009-08-23 07:49:08 +000028 raw_ostream &OS; // raw_ostream to print on
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000029 public:
Daniel Dunbard1ce3b42008-10-22 17:39:14 +000030 static char ID; // Pass identification, replacement for typeid
Daniel Dunbard1ce3b42008-10-22 17:39:14 +000031 explicit WriteBitcodePass(raw_ostream &o)
Owen Anderson90c579d2010-08-06 18:33:48 +000032 : ModulePass(ID), OS(o) {}
Joe Abbey170a15e2012-11-25 15:23:39 +000033
Stephen Hines36b56882014-04-23 16:57:46 -070034 const char *getPassName() const override { return "Bitcode Writer"; }
Joe Abbey170a15e2012-11-25 15:23:39 +000035
Stephen Hines36b56882014-04-23 16:57:46 -070036 bool runOnModule(Module &M) override {
Chris Lattnerb515d752009-08-23 07:49:08 +000037 WriteBitcodeToFile(&M, OS);
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000038 return false;
39 }
40 };
41}
42
43char WriteBitcodePass::ID = 0;
Chris Lattnere8e1e4b2007-05-06 02:30:12 +000044
Daniel Dunbard1ce3b42008-10-22 17:39:14 +000045ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) {
46 return new WriteBitcodePass(Str);
47}