Add timing of the IR parsing code with a new -time-ir-parsing flag

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177543 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Bendersky 2013-03-20 17:00:25 +00:00
parent 279ad470b6
commit 0f9b8503de
3 changed files with 29 additions and 0 deletions

View File

@ -25,6 +25,7 @@
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/system_error.h"
#include "llvm/Support/Timer.h"
namespace llvm {
@ -69,6 +70,10 @@ namespace llvm {
return getLazyIRModule(File.take(), Err, Context);
}
extern const char *TimeIRParsingGroupName;
extern const char *TimeIRParsingName;
extern bool TimeIRParsingIsEnabled;
/// If the given MemoryBuffer holds a bitcode image, return a Module
/// for it. Otherwise, attempt to parse it as LLVM Assembly and return
/// a Module for it. This function *always* takes ownership of the given
@ -76,6 +81,8 @@ namespace llvm {
inline Module *ParseIR(MemoryBuffer *Buffer,
SMDiagnostic &Err,
LLVMContext &Context) {
NamedRegionTimer T(TimeIRParsingName, TimeIRParsingGroupName,
TimeIRParsingIsEnabled);
if (isBitcode((const unsigned char *)Buffer->getBufferStart(),
(const unsigned char *)Buffer->getBufferEnd())) {
std::string ErrMsg;

View File

@ -27,6 +27,7 @@ add_llvm_library(LLVMSupport
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
IRReader.cpp
IsInf.cpp
IsNAN.cpp
Locale.cpp

21
lib/Support/IRReader.cpp Normal file
View File

@ -0,0 +1,21 @@
//===- IRReader.cpp - Reader for LLVM IR files ----------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/IRReader.h"
using namespace llvm;
const char *llvm::TimeIRParsingGroupName = "LLVM IR Parsing";
const char *llvm::TimeIRParsingName = "Parse IR";
bool llvm::TimeIRParsingIsEnabled = false;
static cl::opt<bool,true>
EnableTimeIRParsing("time-ir-parsing", cl::location(TimeIRParsingIsEnabled),
cl::desc("Measure the time IR parsing takes"));