summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Afanasyev <anton.a.afanasyev@gmail.com>2019-06-07 18:13:48 +0000
committerAnton Afanasyev <anton.a.afanasyev@gmail.com>2019-06-07 18:13:48 +0000
commit44282a60c90fdded249d57d91b12c6c0907102ec (patch)
treea7858e59103329eb79500832dc6eb8c619d26c5a
parent4c9db2045a50e9afcc8196d4269d3092cb72d0c4 (diff)
downloadbcm5719-llvm-44282a60c90fdded249d57d91b12c6c0907102ec.tar.gz
bcm5719-llvm-44282a60c90fdded249d57d91b12c6c0907102ec.zip
[Support][Test] Time profiler: add regression test
Summary: Add output to `llvm::errs()` when `-ftime-trace` option is enabled, add regression test checking this option works as expected. Reviewers: thakis, aganea Subscribers: cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D61914 > llvm-svn: 362792 llvm-svn: 362821
-rw-r--r--clang/test/Driver/check-time-trace.cpp23
-rw-r--r--clang/tools/driver/cc1_main.cpp5
2 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/Driver/check-time-trace.cpp b/clang/test/Driver/check-time-trace.cpp
new file mode 100644
index 00000000000..3df41728133
--- /dev/null
+++ b/clang/test/Driver/check-time-trace.cpp
@@ -0,0 +1,23 @@
+// RUN: %clangxx -ftime-trace -mllvm --time-trace-granularity=0 %s 2>&1 | grep "Time trace json-file dumped to" \
+// RUN: | awk '{print $NF}' | xargs cat \
+// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
+// RUN: | FileCheck %s
+
+// CHECK: "traceEvents": [
+// CHECK: "args":
+// CHECK: "detail":
+// CHECK: "dur":
+// CHECK: "name":
+// CHECK-NEXT: "ph":
+// CHECK-NEXT: "pid":
+// CHECK-NEXT: "tid":
+// CHECK-NEXT: "ts":
+// CHECK: "name": "clang"
+// CHECK: "name": "process_name"
+
+#include <iostream>
+
+int main() {
+ std::cout << "Foo" << std::endl;
+ return 0;
+}
diff --git a/clang/tools/driver/cc1_main.cpp b/clang/tools/driver/cc1_main.cpp
index ae60fefdcf5..caf73195fe5 100644
--- a/clang/tools/driver/cc1_main.cpp
+++ b/clang/tools/driver/cc1_main.cpp
@@ -241,6 +241,11 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
llvm::timeTraceProfilerWrite(*profilerOutput);
llvm::timeTraceProfilerCleanup();
+
+ llvm::errs() << "Time trace json-file dumped to " << Path.str() << "\n";
+ llvm::errs()
+ << "Use chrome://tracing or Speedscope App "
+ "(https://www.speedscope.app) for flamegraph visualization\n";
}
// Our error handler depends on the Diagnostics object, which we're
OpenPOWER on IntegriCloud