add bitcode support

llvm-svn: 36849
This commit is contained in:
Chris Lattner 2007-05-06 05:47:06 +00:00
parent 11ca4f51ed
commit ec83593e41
4 changed files with 18 additions and 4 deletions

View File

@ -19,13 +19,14 @@
#include "llvm/Module.h"
#include "llvm/Pass.h"
#include "llvm/Assembly/Parser.h"
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/Bytecode/Reader.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compressor.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/MemoryBuffer.h"
#include <iostream>
#include <memory>
using namespace llvm;
// Anonymous namespace to define command line options for debugging.
@ -77,6 +78,13 @@ Module *llvm::ParseInputFile(const std::string &InputFilename) {
ParseError Err;
Module *Result = ParseBytecodeFile(InputFilename,
Compressor::decompressToNewBuffer);
if (!Result) {
std::auto_ptr<MemoryBuffer> Buffer(
MemoryBuffer::getFileOrSTDIN(&InputFilename[0], InputFilename.size()));
if (Buffer.get())
Result = ParseBitcodeFile(Buffer.get());
}
if (!Result && !(Result = ParseAssemblyFile(InputFilename,&Err))) {
std::cerr << "bugpoint: " << Err.getMessage() << "\n";
Result = 0;

View File

@ -22,7 +22,6 @@
#include "llvm/PassManager.h"
#include "llvm/ValueSymbolTable.h"
#include "llvm/Analysis/Verifier.h"
#include "llvm/Bytecode/Writer.h"
#include "llvm/Support/CFG.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/Cloning.h"

View File

@ -11,7 +11,7 @@ LEVEL = ../..
TOOLNAME = bugpoint
LINK_COMPONENTS := bcreader bcwriter asmparser instrumentation scalaropts ipo \
linker
linker bitreader bitwriter
REQUIRES_EH := 1
include $(LEVEL)/Makefile.common

View File

@ -24,6 +24,7 @@
#include "llvm/PassManager.h"
#include "llvm/Analysis/Verifier.h"
#include "llvm/Bytecode/WriteBytecodePass.h"
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/CommandLine.h"
@ -38,6 +39,9 @@
#include <fstream>
using namespace llvm;
static bool Bitcode = false;
namespace {
// ChildOutput - This option captures the name of the child output file that
// is set up by the parent bugpoint process
@ -110,7 +114,10 @@ int BugDriver::runPassesAsChild(const std::vector<const PassInfo*> &Passes) {
// Write bytecode out to disk as the last step...
OStream L(OutFile);
PM.add(new WriteBytecodePass(&L));
if (Bitcode)
PM.add(CreateBitcodeWriterPass(OutFile));
else
PM.add(new WriteBytecodePass(&L));
// Run all queued passes.
PM.run(*Program);