summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2013-03-20 17:00:25 +0000
committerEli Bendersky <eliben@google.com>2013-03-20 17:00:25 +0000
commit0f9b8503dece38059743e3adc6083ea493b73744 (patch)
tree564a88d36b5161fafaf2bc4ed84f982045fd4f7c
parent279ad470b679be919ca220e2b664d9cf94055bc5 (diff)
downloadllvm-0f9b8503dece38059743e3adc6083ea493b73744.tar.gz
llvm-0f9b8503dece38059743e3adc6083ea493b73744.tar.bz2
llvm-0f9b8503dece38059743e3adc6083ea493b73744.tar.xz
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
-rw-r--r--include/llvm/Support/IRReader.h7
-rw-r--r--lib/Support/CMakeLists.txt1
-rw-r--r--lib/Support/IRReader.cpp21
3 files changed, 29 insertions, 0 deletions
diff --git a/include/llvm/Support/IRReader.h b/include/llvm/Support/IRReader.h
index 6d8a9b30ae..c3ee3ed318 100644
--- a/include/llvm/Support/IRReader.h
+++ b/include/llvm/Support/IRReader.h
@@ -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;
diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt
index 5ba69fc3c8..f661249c76 100644
--- a/lib/Support/CMakeLists.txt
+++ b/lib/Support/CMakeLists.txt
@@ -27,6 +27,7 @@ add_llvm_library(LLVMSupport
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
+ IRReader.cpp
IsInf.cpp
IsNAN.cpp
Locale.cpp
diff --git a/lib/Support/IRReader.cpp b/lib/Support/IRReader.cpp
new file mode 100644
index 0000000000..1dc56dddcb
--- /dev/null
+++ b/lib/Support/IRReader.cpp
@@ -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"));
+