[llvm-bugs] [Bug 41969] New: -ftime-trace Frontend timer misses Codegen Function for template functions
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue May 21 09:31:55 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=41969
Bug ID: 41969
Summary: -ftime-trace Frontend timer misses Codegen Function
for template functions
Product: clang
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: -New Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: russell_gallop at sn.scee.net
CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org,
neeilans at live.com, richard-llvm at metafoo.co.uk
Created attachment 21982
--> https://bugs.llvm.org/attachment.cgi?id=21982&action=edit
Screenshot of chrome://tracing
Clang "CodeGen Function" timers from -ftime-trace for some functions falls
outside of the "Frontend" timer and thus between Frontend and Backend (see
attached screenshot). I think this should be counted under Frontend. In the
original motivating example the time between "Frontend" and "Backend" was 11%
of the overall execution time so fairly significant.
e.g. at r361164
# Apply patch to trace ALL durations however small (to allow small
reproducible)
diff --git a/llvm/lib/Support/TimeProfiler.cpp
b/llvm/lib/Support/TimeProfiler.cpp
index bc234081564..f63847a8a28 100644
--- a/llvm/lib/Support/TimeProfiler.cpp
+++ b/llvm/lib/Support/TimeProfiler.cpp
@@ -65,8 +65,8 @@ struct TimeTraceProfiler {
E.Duration = steady_clock::now() - E.Start;
// Only include sections longer than TimeTraceGranularity msec.
- if (duration_cast<microseconds>(E.Duration).count() >
TimeTraceGranularity)
- Entries.emplace_back(E);
+ //if (duration_cast<microseconds>(E.Duration).count() >
TimeTraceGranularity)
+ Entries.emplace_back(E);
// Track total time taken by each "name", but only the topmost levels of
// them; e.g. if there's a template instantiation that instantiates other
$ cat test.cpp
template <typename T> void foo(T) {}
void bar() { foo(0); }
$ clang -c -ftime-trace test.cpp
# test.json now has CodeGen Function for foo<int> between "Frontend" and
"Backend"
{
"traceEvents": [
...
{
"args": {
"detail": ""
},
"dur": 1451,
"name": "Frontend",
"ph": "X",
"pid": 1,
"tid": 0,
"ts": 3722
},
{
"args": {
"detail": "foo<int>"
},
"dur": 66,
"name": "CodeGen Function",
"ph": "X",
"pid": 1,
"tid": 0,
"ts": 5177
},
...
{
"args": {
"detail": ""
},
"dur": 2866,
"name": "Backend",
"ph": "X",
"pid": 1,
"tid": 0,
"ts": 5287
},
...
}
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190521/0714146f/attachment.html>
More information about the llvm-bugs
mailing list