#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/system_error.h"
+#include "llvm/Support/Timer.h"
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
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;
--- /dev/null
+//===- 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"));
+