[lld] r286493 - [LTO] Call llvm_shutdown on early exit.
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 10 11:39:05 PST 2016
Author: davide
Date: Thu Nov 10 13:39:05 2016
New Revision: 286493
URL: http://llvm.org/viewvc/llvm-project?rev=286493&view=rev
Log:
[LTO] Call llvm_shutdown on early exit.
In a non-LTO build is a nop. In a LTO build, we deallocate/destroy
managed static and this allows us to get the output of, e.g.,
-time-passes without performing a full shutdown.
Differential Revision: https://reviews.llvm.org/D26517
Added:
lld/trunk/test/ELF/lto/timepasses.ll
Modified:
lld/trunk/ELF/Error.cpp
Modified: lld/trunk/ELF/Error.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Error.cpp?rev=286493&r1=286492&r2=286493&view=diff
==============================================================================
--- lld/trunk/ELF/Error.cpp (original)
+++ lld/trunk/ELF/Error.cpp Thu Nov 10 13:39:05 2016
@@ -12,6 +12,7 @@
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Error.h"
+#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/raw_ostream.h"
#if !defined(_MSC_VER) && !defined(__MINGW32__)
@@ -50,6 +51,12 @@ void elf::error(std::error_code EC, cons
void elf::exitLld(int Val) {
outs().flush();
errs().flush();
+
+ // Dealloc/destroy ManagedStatic variables before calling
+ // _exit(). In a non-LTO build, this is a nop. In an LTO
+ // build allows us to get the output of -time-passes.
+ llvm_shutdown();
+
_exit(Val);
}
Added: lld/trunk/test/ELF/lto/timepasses.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/timepasses.ll?rev=286493&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/timepasses.ll (added)
+++ lld/trunk/test/ELF/lto/timepasses.ll Thu Nov 10 13:39:05 2016
@@ -0,0 +1,13 @@
+; REQUIRES: x86
+; RUN: llvm-as %s -o %t.o
+; RUN: lld -flavor gnu %t.o -o %t.so -shared -mllvm -time-passes 2>&1 | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @patatino() {
+ ret void
+}
+
+; We should get the output of -time-passes even when --full-shutdown is not specified.
+; CHECK: Total Execution Time
More information about the llvm-commits
mailing list