BitcodeWriterPass.cpp [plain text]
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/Pass.h"
using namespace llvm;
namespace {
class WriteBitcodePass : public ModulePass {
std::ostream *Out;
raw_ostream *RawOut; public:
static char ID; explicit WriteBitcodePass(std::ostream &o)
: ModulePass(&ID), Out(&o), RawOut(0) {}
explicit WriteBitcodePass(raw_ostream &o)
: ModulePass(&ID), Out(0), RawOut(&o) {}
const char *getPassName() const { return "Bitcode Writer"; }
bool runOnModule(Module &M) {
if (Out) {
WriteBitcodeToFile(&M, *Out);
} else {
WriteBitcodeToFile(&M, *RawOut);
}
return false;
}
};
}
char WriteBitcodePass::ID = 0;
ModulePass *llvm::CreateBitcodeWriterPass(std::ostream &Str) {
return new WriteBitcodePass(Str);
}
ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) {
return new WriteBitcodePass(Str);
}