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