[PATCH] D26517: [LTO] Call llvm_shutdown on exit

Rafael EspĂ­ndola via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 10 11:44:30 PST 2016


lit will add --full-shutdown. You probably want to use lld -flavour
gnu to avoid it.

LGTM with that.

Cheers,
Rafael


On 10 November 2016 at 14:41, Davide Italiano <dccitaliano at gmail.com> wrote:
> davide created this revision.
> davide added reviewers: rafael, Bigcheese.
> davide added a subscriber: llvm-commits.
>
> On a non-lto build is a nop. On 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
>
>
> https://reviews.llvm.org/D26517
>
> Files:
>   ELF/Error.cpp
>   test/ELF/lto/timepasses.ll
>
>
> Index: test/ELF/lto/timepasses.ll
> ===================================================================
> --- /dev/null
> +++ test/ELF/lto/timepasses.ll
> @@ -0,0 +1,13 @@
> +; REQUIRES: x86
> +; RUN: llvm-as %s -o %t.o
> +; RUN: ld.lld -m elf_x86_64 %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
> Index: ELF/Error.cpp
> ===================================================================
> --- ELF/Error.cpp
> +++ ELF/Error.cpp
> @@ -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::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);
>  }
>
>
>


More information about the llvm-commits mailing list