76 lines · cpp
1// RUN: rm -rf %t && mkdir -p %t && cd %t2// RUN: %clangxx -S -no-canonical-prefixes -ftime-trace -ftime-trace-granularity=0 -ftime-trace-verbose -o out %s3// RUN: cat out.json \4// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \5// RUN: | FileCheck %s6// RUN: %clangxx -S -no-canonical-prefixes -ftime-trace=new-name.json -ftime-trace-granularity=0 -ftime-trace-verbose -o out %s7// RUN: cat new-name.json \8// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \9// RUN: | FileCheck %s10// RUN: mkdir dir1 dir211// RUN: %clangxx -S -no-canonical-prefixes -ftime-trace=dir1 -ftime-trace-granularity=0 -ftime-trace-verbose -o out %s12// RUN: cat dir1/out.json \13// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \14// RUN: | FileCheck %s15// RUN: %clangxx -S -no-canonical-prefixes -ftime-trace=dir2/ -ftime-trace-granularity=0 -ftime-trace-verbose -o out %s16// RUN: cat dir2/out.json \17// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \18// RUN: | FileCheck %s19 20// CHECK: "beginningOfTime": {{[0-9]{16},}}21// CHECK-NEXT: "traceEvents": [22// CHECK: "args":23// CHECK: "detail":24// CHECK: "dur":25// CHECK: "name":26// CHECK-NEXT: "ph":27// CHECK-NEXT: "pid":28// CHECK-NEXT: "tid":29// CHECK-NEXT: "ts":30// CHECK: "name": "{{clang|llvm}}{{.*}}"31// CHECK: "name": "process_name"32// CHECK: "name": "thread_name"33 34// RUN: mkdir d e f && cp %s d/a.cpp && touch d/b.c35 36/// TODO: Support -fno-integrated-as.37// RUN: %clang -### -c -ftime-trace -ftime-trace-granularity=0 -ftime-trace-verbose -fintegrated-as d/a.cpp -o e/a.o 2>&1 | FileCheck %s --check-prefix=COMPILE138// COMPILE1: -cc1{{.*}} "-ftime-trace=e/a.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"39 40// RUN: %clang -### -c -ftime-trace -ftime-trace-granularity=0 -ftime-trace-verbose d/a.cpp d/b.c -dumpdir f/ 2>&1 | FileCheck %s --check-prefix=COMPILE241// COMPILE2: -cc1{{.*}} "-ftime-trace=f/a.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"42// COMPILE2: -cc1{{.*}} "-ftime-trace=f/b.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"43 44/// -o specifies the link output. Create ${output}-${basename}.json.45// RUN: %clang -### -ftime-trace -ftime-trace-granularity=0 -ftime-trace-verbose d/a.cpp d/b.c -o e/x 2>&1 | FileCheck %s --check-prefix=LINK146// LINK1: -cc1{{.*}} "-ftime-trace=e/x-a.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"47// LINK1: -cc1{{.*}} "-ftime-trace=e/x-b.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"48 49/// -dumpdir is f/g, not ending with a path separator. We create f/g${basename}.json.50// RUN: %clang -### -ftime-trace -ftime-trace-granularity=0 -ftime-trace-verbose d/a.cpp d/b.c -o e/x -dumpdir f/g 2>&1 | FileCheck %s --check-prefix=LINK251// LINK2: -cc1{{.*}} "-ftime-trace=f/ga.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"52// LINK2: -cc1{{.*}} "-ftime-trace=f/gb.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"53 54// RUN: %clang -### -ftime-trace=e -ftime-trace-granularity=0 -ftime-trace-verbose d/a.cpp d/b.c -o f/x -dumpdir f/ 2>&1 | FileCheck %s --check-prefix=LINK355// LINK3: -cc1{{.*}} "-ftime-trace=e{{/|\\\\}}a-{{[^.]*}}.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"56// LINK3: -cc1{{.*}} "-ftime-trace=e{{/|\\\\}}b-{{[^.]*}}.json" "-ftime-trace-granularity=0" "-ftime-trace-verbose"57 58// RUN: %clang -### -ftime-trace -ftime-trace=e -ftime-trace-granularity=1 -ftime-trace-verbose -xassembler d/a.cpp 2>&1 | \59// RUN: FileCheck %s --check-prefix=UNUSED60// UNUSED: warning: argument unused during compilation: '-ftime-trace'61// UNUSED-NEXT: warning: argument unused during compilation: '-ftime-trace=e'62// UNUSED-NEXT: warning: argument unused during compilation: '-ftime-trace-granularity=1'63// UNUSED-NEXT: warning: argument unused during compilation: '-ftime-trace-verbose'64// UNUSED-NOT: warning:65 66template <typename T>67struct Struct {68 T Num;69};70 71int main() {72 Struct<int> S;73 74 return 0;75}76