From 592488a4ef92ce8e454dc029808ed1b6612b7312 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 6 May 2007 04:43:00 +0000 Subject: [PATCH] add support to llvm-prof for reading from a bitcode file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36836 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-prof/Makefile | 2 +- tools/llvm-prof/llvm-prof.cpp | 20 +++++++++++++++++--- tools/opt/opt.cpp | 8 ++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/llvm-prof/Makefile b/tools/llvm-prof/Makefile index b745e654927..72e2bcf184b 100644 --- a/tools/llvm-prof/Makefile +++ b/tools/llvm-prof/Makefile @@ -9,7 +9,7 @@ LEVEL = ../.. TOOLNAME = llvm-prof -LINK_COMPONENTS = bcreader analysis +LINK_COMPONENTS = bcreader bitreader analysis REQUIRES_EH := 1 include $(LEVEL)/Makefile.common diff --git a/tools/llvm-prof/llvm-prof.cpp b/tools/llvm-prof/llvm-prof.cpp index 6b1d514bcd6..7b1e2922533 100644 --- a/tools/llvm-prof/llvm-prof.cpp +++ b/tools/llvm-prof/llvm-prof.cpp @@ -18,8 +18,10 @@ #include "llvm/Assembly/AsmAnnotationWriter.h" #include "llvm/Analysis/ProfileInfoLoader.h" #include "llvm/Bytecode/Reader.h" +#include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ManagedStatic.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/System/Signals.h" #include #include @@ -30,6 +32,7 @@ using namespace llvm; namespace { + cl::opt Bitcode("bitcode"); cl::opt BytecodeFile(cl::Positional, cl::desc(""), cl::Required); @@ -116,9 +119,20 @@ int main(int argc, char **argv) { // Read in the bytecode file... std::string ErrorMessage; - Module *M = ParseBytecodeFile(BytecodeFile, - Compressor::decompressToNewBuffer, - &ErrorMessage); + Module *M; + if (Bitcode) { + MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(&BytecodeFile[0], + BytecodeFile.size()); + if (Buffer == 0) + ErrorMessage = "Error reading file '" + BytecodeFile + "'"; + else + M = ParseBitcodeFile(Buffer, &ErrorMessage); + delete Buffer; + } else { + M = ParseBytecodeFile(BytecodeFile, + Compressor::decompressToNewBuffer, + &ErrorMessage); + } if (M == 0) { std::cerr << argv[0] << ": " << BytecodeFile << ": " << ErrorMessage << "\n"; diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index 6c770858930..218e5f0b1de 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -268,12 +268,8 @@ int main(int argc, char **argv) { // Load the input module... std::auto_ptr M; if (Bitcode) { - MemoryBuffer *Buffer; - if (InputFilename == "-") { - Buffer = MemoryBuffer::getSTDIN(); - } else { - Buffer = MemoryBuffer::getFile(&InputFilename[0], InputFilename.size()); - } + MemoryBuffer *Buffer + = MemoryBuffer::getFileOrSTDIN(&InputFilename[0], InputFilename.size()); if (Buffer == 0) ErrorMessage = "Error reading file '" + InputFilename + "'";