[lld-macho] Make time-trace* options more permissive.
authorVy Nguyen <vyng@google.com>
Wed, 7 Apr 2021 03:40:41 +0000 (23:40 -0400)
committerVy Nguyen <vyng@google.com>
Wed, 7 Apr 2021 20:00:20 +0000 (16:00 -0400)
If either `time-trace-granularity` or `time-trace-file` is specified, then don't make users specify `-time-trace`.
It seems silly that I have to type all three options, eg, `-time-trace -time-trace-file=- -time-trace-granularity=...`.

Differential Revision: https://reviews.llvm.org/D100011

lld/MachO/Driver.cpp
lld/test/MachO/time-trace.s

index 2f67164..736e456 100644 (file)
@@ -1033,7 +1033,9 @@ bool macho::link(ArrayRef<const char *> argsArr, bool canExitEarly,
 
   config->progName = argsArr[0];
 
-  config->timeTraceEnabled = args.hasArg(OPT_time_trace);
+  config->timeTraceEnabled = args.hasArg(OPT_time_trace) ||
+                             args.hasArg(OPT_time_trace_granularity_eq) ||
+                             args.hasArg(OPT_time_trace_file_eq);
   config->timeTraceGranularity =
       args::getInteger(args, OPT_time_trace_granularity_eq, 500);
 
index b203055..c4e5cc3 100644 (file)
@@ -1,27 +1,27 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
 
-# Test implicit trace file name
+## Test implicit trace file name
 # RUN: %lld --time-trace --time-trace-granularity=0 -o %t1.macho %t.o
 # RUN: cat %t1.macho.time-trace \
 # RUN:   | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
 # RUN:   | FileCheck %s
 
-# Test specified trace file name
-# RUN: %lld --time-trace --time-trace-file=%t2.json --time-trace-granularity=0 -o %t2.macho %t.o
+## Test specified trace file name, also test that `--time-trace` is not needed if the other two are used.
+# RUN: %lld --time-trace-file=%t2.json --time-trace-granularity=0 -o %t2.macho %t.o
 # RUN: cat %t2.json \
 # RUN:   | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
 # RUN:   | FileCheck %s
 
-# Test trace requested to stdout
-# RUN: %lld --time-trace --time-trace-file=- --time-trace-granularity=0 -o %t3.macho %t.o \
+## Test trace requested to stdout, also test that `--time-trace` is not needed if the other two are used.
+# RUN: %lld --time-trace-file=- --time-trace-granularity=0 -o %t3.macho %t.o \
 # RUN:   | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
 # RUN:   | FileCheck %s
 
 # CHECK:      "beginningOfTime": {{[0-9]{16},}}
 # CHECK-NEXT: "traceEvents": [
 
-# Check one event has correct fields
+## Check one event has correct fields
 # CHECK:      "dur":
 # CHECK-NEXT: "name":
 # CHECK-NEXT: "ph":
 # CHECK-NEXT: "tid":
 # CHECK-NEXT: "ts":
 
-# Check there is an ExecuteLinker event
+## Check there is an ExecuteLinker event
 # CHECK: "name": "ExecuteLinker"
 
-# Check process_name entry field
+## Check process_name entry field
 # CHECK: "name": "ld64.lld{{(.exe)?}}"
 # CHECK: "name": "process_name"
 # CHECK: "name": "thread_name"