[lld] 69da7e2 - Revert an accidental commit af5ca40b47b3e85c3add81ccdc0b787c4bc355ae

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 12 22:18:04 PST 2019


Author: Rui Ueyama
Date: 2019-12-13T15:17:40+09:00
New Revision: 69da7e29dea659563f3b64edb7b45cb2aec817c2

URL: https://github.com/llvm/llvm-project/commit/69da7e29dea659563f3b64edb7b45cb2aec817c2
DIFF: https://github.com/llvm/llvm-project/commit/69da7e29dea659563f3b64edb7b45cb2aec817c2.diff

LOG: Revert an accidental commit af5ca40b47b3e85c3add81ccdc0b787c4bc355ae

Added: 
    

Modified: 
    lld/ELF/Config.h
    lld/ELF/Driver.cpp
    lld/ELF/ICF.cpp
    lld/ELF/LTO.cpp
    lld/ELF/MarkLive.cpp
    lld/ELF/Options.td
    lld/ELF/SyntheticSections.cpp
    lld/ELF/Writer.cpp
    llvm/include/llvm/LTO/Config.h
    llvm/lib/LTO/LTO.cpp

Removed: 
    lld/test/ELF/check-time-trace.s
    lld/test/ELF/lto/thinlto-time-trace.ll


################################################################################
diff  --git a/lld/ELF/Config.h b/lld/ELF/Config.h
index 6d804ee2bbe6..d7e715ebf357 100644
--- a/lld/ELF/Config.h
+++ b/lld/ELF/Config.h
@@ -191,7 +191,6 @@ struct Configuration {
   bool trace;
   bool thinLTOEmitImportsFiles;
   bool thinLTOIndexOnly;
-  bool timeTraceEnabled;
   bool tocOptimize;
   bool undefinedVersion;
   bool useAndroidRelrTags = false;
@@ -241,7 +240,6 @@ struct Configuration {
   unsigned ltoo;
   unsigned optimize;
   unsigned thinLTOJobs;
-  unsigned timeTraceGranularity;
   int32_t splitStackAdjustSize;
 
   // The following config options do not directly correspond to any

diff  --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index cc4cefc6ed97..c721e872e12e 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -56,7 +56,6 @@
 #include "llvm/Support/Path.h"
 #include "llvm/Support/TarWriter.h"
 #include "llvm/Support/TargetSelect.h"
-#include "llvm/Support/TimeProfiler.h"
 #include "llvm/Support/raw_ostream.h"
 #include <cstdlib>
 #include <utility>
@@ -491,10 +490,6 @@ void LinkerDriver::main(ArrayRef<const char *> argsArr) {
   if (args.hasArg(OPT_version))
     return;
 
-  // Initialize time trace.
-  if (config->timeTraceEnabled)
-    timeTraceProfilerInitialize(config->timeTraceGranularity, config->progName);
-
   initLLVM();
   createFiles(args);
   if (errorCount())
@@ -514,34 +509,19 @@ void LinkerDriver::main(ArrayRef<const char *> argsArr) {
   switch (config->ekind) {
   case ELF32LEKind:
     link<ELF32LE>(args);
-    break;
+    return;
   case ELF32BEKind:
     link<ELF32BE>(args);
-    break;
+    return;
   case ELF64LEKind:
     link<ELF64LE>(args);
-    break;
+    return;
   case ELF64BEKind:
     link<ELF64BE>(args);
-    break;
+    return;
   default:
     llvm_unreachable("unknown Config->EKind");
   }
-
-  if (config->timeTraceEnabled) {
-    std::string path = args.getLastArgValue(OPT_time_trace_file_eq);
-    if (path.empty())
-      path = (config->outputFile + ".time-trace").str();
-
-    std::error_code ec;
-    raw_fd_ostream os(path, errorCode, sys::fs::F_Text);
-    if (ec) {
-      error("cannot open " + path + ": " + ec.message());
-      return;
-    }
-    timeTraceProfilerWrite(os);
-    timeTraceProfilerCleanup();
-  }
 }
 
 static std::string getRpath(opt::InputArgList &args) {
@@ -973,9 +953,6 @@ static void readConfigs(opt::InputArgList &args) {
       getOldNewOptions(args, OPT_thinlto_object_suffix_replace_eq);
   config->thinLTOPrefixReplace =
       getOldNewOptions(args, OPT_thinlto_prefix_replace_eq);
-  config->timeTraceEnabled = args.hasArg(OPT_time_trace);
-  config->timeTraceGranularity =
-      args::getInteger(args, OPT_time_trace_granularity, 500);
   config->trace = args.hasArg(OPT_trace);
   config->undefined = args::getStrings(args, OPT_undefined);
   config->undefinedVersion =
@@ -1620,7 +1597,6 @@ static Symbol *addUndefined(StringRef name) {
 // Because all bitcode files that the program consists of are passed to
 // the compiler at once, it can do a whole-program optimization.
 template <class ELFT> void LinkerDriver::compileBitcodeFiles() {
-  llvm::TimeTraceScope timeScope("LTO");
   // Compile bitcode files and replace bitcode symbols.
   lto.reset(new BitcodeCompiler);
   for (BitcodeFile *file : bitcodeFiles)
@@ -1747,8 +1723,6 @@ template <class ELFT> static uint32_t getAndFeatures() {
 // Do actual linking. Note that when this function is called,
 // all linker scripts have already been parsed.
 template <class ELFT> void LinkerDriver::link(opt::InputArgList &args) {
-  llvm::TimeTraceScope timeScope("ExecuteLinker");
-
   // If a -hash-style option was not given, set to a default value,
   // which varies depending on the target.
   if (!args.hasArg(OPT_hash_style)) {
@@ -1788,11 +1762,8 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &args) {
   // symbols that we need to the symbol table. This process might
   // add files to the link, via autolinking, these files are always
   // appended to the Files vector.
-  {
-    llvm::TimeTraceScope timeScope("Parse input files");
-    for (size_t i = 0; i < files.size(); ++i)
-      parseFile(files[i]);
-  }
+  for (size_t i = 0; i < files.size(); ++i)
+    parseFile(files[i]);
 
   // Now that we have every file, we can decide if we will need a
   // dynamic symbol table.
@@ -2010,15 +1981,11 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &args) {
   // merging MergeInputSections into a single MergeSyntheticSection. From this
   // point onwards InputSectionDescription::sections should be used instead of
   // sectionBases.
-  {
-    llvm::TimeTraceScope timeScope("Merge input sections");
-    for (BaseCommand *base : script->sectionCommands)
-      if (auto *sec = dyn_cast<OutputSection>(base))
-        sec->finalizeInputSections();
-    llvm::erase_if(inputSections, [](InputSectionBase *s) {
-      return isa<MergeInputSection>(s);
-    });
-  }
+  for (BaseCommand *base : script->sectionCommands)
+    if (auto *sec = dyn_cast<OutputSection>(base))
+      sec->finalizeInputSections();
+  llvm::erase_if(inputSections,
+                 [](InputSectionBase *s) { return isa<MergeInputSection>(s); });
 
   // Two input sections with 
diff erent output sections should not be folded.
   // ICF runs after processSectionCommands() so that we know the output sections.

diff  --git a/lld/ELF/ICF.cpp b/lld/ELF/ICF.cpp
index 7838a45557cc..5e38066f45ba 100644
--- a/lld/ELF/ICF.cpp
+++ b/lld/ELF/ICF.cpp
@@ -84,7 +84,6 @@
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/BinaryFormat/ELF.h"
 #include "llvm/Object/ELF.h"
-#include "llvm/Support/TimeProfiler.h"
 #include "llvm/Support/xxhash.h"
 #include <algorithm>
 #include <atomic>
@@ -453,7 +452,6 @@ static void print(const Twine &s) {
 
 // The main function of ICF.
 template <class ELFT> void ICF<ELFT>::run() {
-  llvm::TimeTraceScope timeScope("ICF");
   // Compute isPreemptible early. We may add more symbols later, so this loop
   // cannot be merged with the later computeIsPreemptible() pass which is used
   // by scanRelocations().

diff  --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp
index 3f677d86f13a..524d552b0b84 100644
--- a/lld/ELF/LTO.cpp
+++ b/lld/ELF/LTO.cpp
@@ -108,9 +108,6 @@ static lto::Config createConfig() {
   c.DebugPassManager = config->ltoDebugPassManager;
   c.DwoDir = config->dwoDir;
 
-  c.TimeTraceEnabled = config->timeTraceEnabled;
-  c.TimeTraceGranularity = config->timeTraceGranularity;
-
   c.CSIRProfile = config->ltoCSProfileFile;
   c.RunCSIRInstr = config->ltoCSProfileGenerate;
 

diff  --git a/lld/ELF/MarkLive.cpp b/lld/ELF/MarkLive.cpp
index b77fab9abb62..bb0105c28928 100644
--- a/lld/ELF/MarkLive.cpp
+++ b/lld/ELF/MarkLive.cpp
@@ -31,7 +31,6 @@
 #include "lld/Common/Strings.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/Object/ELF.h"
-#include "llvm/Support/TimeProfiler.h"
 #include <functional>
 #include <vector>
 
@@ -324,7 +323,6 @@ template <class ELFT> void MarkLive<ELFT>::moveToMain() {
 // input sections. This function make some or all of them on
 // so that they are emitted to the output file.
 template <class ELFT> void markLive() {
-  llvm::TimeTraceScope timeScope("GC");
   // If -gc-sections is not given, no sections are removed.
   if (!config->gcSections) {
     for (InputSectionBase *sec : inputSections)

diff  --git a/lld/ELF/Options.td b/lld/ELF/Options.td
index 3ee1d17b31df..b86a670915c1 100644
--- a/lld/ELF/Options.td
+++ b/lld/ELF/Options.td
@@ -358,12 +358,6 @@ defm threads: B<"threads",
     "Run the linker multi-threaded (default)",
     "Do not run the linker multi-threaded">;
 
-def time_trace: F<"time-trace">, HelpText<"Record time trace">;
-def time_trace_file_eq: J<"time-trace-file=">, HelpText<"Specify time trace output file">;
-
-defm time_trace_granularity: Eq<"time-trace-granularity",
-  "Minimum time granularity (in microseconds) traced by time profiler">;
-
 defm toc_optimize : B<"toc-optimize",
     "(PowerPC64) Enable TOC related optimizations (default)",
     "(PowerPC64) Disable TOC related optimizations">;

diff  --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp
index e765d2a9465b..d014da220817 100644
--- a/lld/ELF/SyntheticSections.cpp
+++ b/lld/ELF/SyntheticSections.cpp
@@ -36,7 +36,6 @@
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/LEB128.h"
 #include "llvm/Support/MD5.h"
-#include "llvm/Support/TimeProfiler.h"
 #include <cstdlib>
 #include <thread>
 
@@ -3133,7 +3132,6 @@ MergeSyntheticSection *createMergeSynthetic(StringRef name, uint32_t type,
 }
 
 template <class ELFT> void splitSections() {
-  llvm::TimeTraceScope timeScope("Split sections");
   // splitIntoPieces needs to be called on each MergeInputSection
   // before calling finalizeContents().
   parallelForEach(inputSections, [](InputSectionBase *sec) {

diff  --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 67fd2b9a8c53..38009bdd9aa3 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -27,7 +27,6 @@
 #include "llvm/ADT/StringSwitch.h"
 #include "llvm/Support/RandomNumberGenerator.h"
 #include "llvm/Support/SHA1.h"
-#include "llvm/Support/TimeProfiler.h"
 #include "llvm/Support/xxhash.h"
 #include <climits>
 
@@ -140,10 +139,7 @@ static bool needsInterpSection() {
          script->needsInterpSection();
 }
 
-template <class ELFT> void writeResult() {
-  llvm::TimeTraceScope timeScope("Write output file");
-  Writer<ELFT>().run();
-}
+template <class ELFT> void writeResult() { Writer<ELFT>().run(); }
 
 static void removeEmptyPTLoad(std::vector<PhdrEntry *> &phdrs) {
   llvm::erase_if(phdrs, [&](const PhdrEntry *p) {

diff  --git a/lld/test/ELF/check-time-trace.s b/lld/test/ELF/check-time-trace.s
deleted file mode 100644
index 8144b2abefb5..000000000000
--- a/lld/test/ELF/check-time-trace.s
+++ /dev/null
@@ -1,39 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-
-# Test implicit trace file name
-# RUN: ld.lld -time-trace -time-trace-granularity=0 -o %t1.elf %t.o
-# RUN: cat %t1.elf.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: ld.lld -time-trace -time-trace-file=%t2.json -time-trace-granularity=0 -o %t2.elf %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: ld.lld -time-trace -time-trace-file=- -time-trace-granularity=0 -o %t3.elf %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: "traceEvents": [
-# Check one event has correct fields
-# CHECK: "dur":
-# CHECK-NEXT: "name":
-# CHECK-NEXT: "ph":
-# CHECK-NEXT: "pid":
-# CHECK-NEXT: "tid":
-# CHECK-NEXT: "ts":
-
-# Check there is an ExecuteLinker event
-# CHECK: "name": "ExecuteLinker"
-
-# Check process_name entry field
-# CHECK: "name": "ld.lld{{(.exe)?}}"
-# CHECK: "name": "process_name"
-
-.globl _start
-_start:
-  ret

diff  --git a/lld/test/ELF/lto/thinlto-time-trace.ll b/lld/test/ELF/lto/thinlto-time-trace.ll
deleted file mode 100644
index 1b8335cbb9a9..000000000000
--- a/lld/test/ELF/lto/thinlto-time-trace.ll
+++ /dev/null
@@ -1,43 +0,0 @@
-; REQUIRES: x86
-
-; Test ThinLTO with time trace
-; RUN: opt -module-summary %s -o %t1.o
-; RUN: opt -module-summary %p/Inputs/thinlto.ll -o %t2.o
-
-; Test single-threaded
-; RUN: ld.lld --thinlto-jobs=1 -time-trace -time-trace-granularity=0 -shared %t1.o %t2.o -o %t3.so
-; RUN: cat %t3.so.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 multi-threaded
-; RUN: ld.lld -time-trace -time-trace-granularity=0 -shared %t1.o %t2.o -o %t4.so
-; RUN: cat %t4.so.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
-
-; CHECK: "traceEvents": [
-; Check fields for an event are present
-; CHECK: "args":
-; CHECK-NEXT: "detail":
-; CHECK: "dur":
-; CHECK-NEXT: "name":
-; CHECK-NEXT: "ph":
-; CHECK-NEXT: "pid":
-; CHECK-NEXT: "tid":
-; CHECK-NEXT: "ts":
-
-; Check that an optimisation event is present
-; CHECK: "name": "OptModule"
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-declare void @g(...)
-
-define void @f() {
-entry:
-  call void (...) @g()
-  ret void
-}
-

diff  --git a/llvm/include/llvm/LTO/Config.h b/llvm/include/llvm/LTO/Config.h
index 6db1235a692c..754e3126f8a9 100644
--- a/llvm/include/llvm/LTO/Config.h
+++ b/llvm/include/llvm/LTO/Config.h
@@ -117,12 +117,6 @@ struct Config {
   /// Statistics output file path.
   std::string StatsFile;
 
-  /// Time trace enabled
-  bool TimeTraceEnabled = false;
-
-  /// Time trace granularity
-  unsigned TimeTraceGranularity = 500;
-
   bool ShouldDiscardValueNames = true;
   DiagnosticHandlerFunction DiagHandler;
 

diff  --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp
index e2c8aa159896..0d48090e4268 100644
--- a/llvm/lib/LTO/LTO.cpp
+++ b/llvm/lib/LTO/LTO.cpp
@@ -39,7 +39,6 @@
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/ThreadPool.h"
 #include "llvm/Support/Threading.h"
-#include "llvm/Support/TimeProfiler.h"
 #include "llvm/Support/VCSRevision.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Target/TargetMachine.h"
@@ -1134,9 +1133,6 @@ class InProcessThinBackend : public ThinBackendProc {
                 &ResolvedODR,
             const GVSummaryMapTy &DefinedGlobals,
             MapVector<StringRef, BitcodeModule> &ModuleMap) {
-          if (Conf.TimeTraceEnabled)
-            timeTraceProfilerInitialize(Conf.TimeTraceGranularity,
-                                        "thin backend");
           Error E = runThinLTOBackendThread(
               AddStream, Cache, Task, BM, CombinedIndex, ImportList, ExportList,
               ResolvedODR, DefinedGlobals, ModuleMap);
@@ -1147,8 +1143,6 @@ class InProcessThinBackend : public ThinBackendProc {
             else
               Err = std::move(E);
           }
-          if (timeTraceProfilerEnabled())
-            timeTraceProfilerFinishThread();
         },
         BM, std::ref(CombinedIndex), std::ref(ImportList), std::ref(ExportList),
         std::ref(ResolvedODR), std::ref(DefinedGlobals), std::ref(ModuleMap));


        


More information about the llvm-commits mailing list