Index: src/IceConverter.cpp |
diff --git a/src/IceConverter.cpp b/src/IceConverter.cpp |
index df64cff9ab92db0510b3630fac16f60a81c98cea..cdb0052972bd68205fd7237f85de4e81b7a2708f 100644 |
--- a/src/IceConverter.cpp |
+++ b/src/IceConverter.cpp |
@@ -59,15 +59,13 @@ public: |
// Caller is expected to delete the returned Ice::Cfg object. |
Ice::Cfg *convertFunction(const Function *F) { |
- static Ice::TimerIdT IDllvmConvert = |
- Ice::GlobalContext::getTimerID("llvmConvert"); |
- Ice::TimerMarker T(IDllvmConvert, Ctx); |
VarMap.clear(); |
NodeMap.clear(); |
Func = new Ice::Cfg(Ctx); |
Func->setFunctionName(F->getName()); |
Func->setReturnType(convertToIceType(F->getReturnType())); |
Func->setInternal(F->hasInternalLinkage()); |
+ Ice::TimerMarker T(Ice::TimerStack::TT_llvmConvert, Func); |
// The initial definition/use of each arg is the entry node. |
for (auto ArgI = F->arg_begin(), ArgE = F->arg_end(); ArgI != ArgE; |
@@ -617,8 +615,7 @@ private: |
namespace Ice { |
void Converter::convertToIce() { |
- static TimerIdT IDconvertToIce = GlobalContext::getTimerID("convertToIce"); |
- TimerMarker T(IDconvertToIce, Ctx); |
+ TimerMarker T(TimerStack::TT_convertToIce, Ctx); |
nameUnnamedGlobalAddresses(Mod); |
if (!Ctx->getFlags().DisableGlobals) |
convertGlobals(Mod); |
@@ -626,13 +623,21 @@ void Converter::convertToIce() { |
} |
void Converter::convertFunctions() { |
+ TimerStackIdT StackID = GlobalContext::TSK_Funcs; |
for (const Function &I : *Mod) { |
if (I.empty()) |
continue; |
+ TimerIdT TimerID = 0; |
+ if (Ctx->getFlags().TimeEachFunction) { |
+ TimerID = Ctx->getTimerID(StackID, I.getName()); |
+ Ctx->pushTimer(TimerID, StackID); |
+ } |
LLVM2ICEConverter FunctionConverter(Ctx, Mod->getContext()); |
Cfg *Fcn = FunctionConverter.convertFunction(&I); |
translateFcn(Fcn); |
+ if (Ctx->getFlags().TimeEachFunction) |
+ Ctx->popTimer(TimerID, StackID); |
} |
emitConstants(); |