1e7cb3744SRussell Gallop; REQUIRES: x86
2e7cb3744SRussell Gallop
3e7cb3744SRussell Gallop; Test ThinLTO with time trace
4e7cb3744SRussell Gallop; RUN: opt -module-summary %s -o %t1.o
5e7cb3744SRussell Gallop; RUN: opt -module-summary %p/Inputs/thinlto.ll -o %t2.o
6e7cb3744SRussell Gallop
7e7cb3744SRussell Gallop; Test single-threaded
8*661c089aSFangrui Song; RUN: ld.lld --thinlto-jobs=1 --time-trace --time-trace-granularity=0 -shared %t1.o %t2.o -o %t3.so
9e7cb3744SRussell Gallop; RUN: cat %t3.so.time-trace \
10e7cb3744SRussell Gallop; RUN:   | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
11e7cb3744SRussell Gallop; RUN:   | FileCheck %s
12e7cb3744SRussell Gallop
13e7cb3744SRussell Gallop; Test multi-threaded
14*661c089aSFangrui Song; RUN: ld.lld --time-trace --time-trace-granularity=0 -shared %t1.o %t2.o -o %t4.so
15e7cb3744SRussell Gallop; RUN: cat %t4.so.time-trace \
16e7cb3744SRussell Gallop; RUN:   | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
17e7cb3744SRussell Gallop; RUN:   | FileCheck %s
18e7cb3744SRussell Gallop
19e7cb3744SRussell Gallop; CHECK: "traceEvents": [
20e7cb3744SRussell Gallop; Check fields for an event are present
21e7cb3744SRussell Gallop; CHECK: "args":
22e7cb3744SRussell Gallop; CHECK-NEXT: "detail":
23e7cb3744SRussell Gallop; CHECK: "dur":
24e7cb3744SRussell Gallop; CHECK-NEXT: "name":
25e7cb3744SRussell Gallop; CHECK-NEXT: "ph":
26e7cb3744SRussell Gallop; CHECK-NEXT: "pid":
27e7cb3744SRussell Gallop; CHECK-NEXT: "tid":
28e7cb3744SRussell Gallop; CHECK-NEXT: "ts":
29e7cb3744SRussell Gallop
30e7cb3744SRussell Gallop; Check that an optimisation event is present
31e7cb3744SRussell Gallop; CHECK: "name": "OptModule"
32e7cb3744SRussell Gallop
33e7cb3744SRussell Galloptarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
34e7cb3744SRussell Galloptarget triple = "x86_64-unknown-linux-gnu"
35e7cb3744SRussell Gallop
36e7cb3744SRussell Gallopdeclare void @g(...)
37e7cb3744SRussell Gallop
38e7cb3744SRussell Gallopdefine void @f() {
39e7cb3744SRussell Gallopentry:
40e7cb3744SRussell Gallop  call void (...) @g()
41e7cb3744SRussell Gallop  ret void
42e7cb3744SRussell Gallop}
43e7cb3744SRussell Gallop
44