From 6df4a6f175f55af8febc1885675dfc6dd0af91ab Mon Sep 17 00:00:00 2001 From: Adam Nemet Date: Tue, 16 Feb 2016 21:41:51 +0000 Subject: [PATCH] [LTO] Support Statistics Summary: I thought -Xlinker -mllvm -Xlinker -stats worked at some point but maybe it never did. For clang, I believe that stats are printed from cc1_main. This patch also prints them for LTO, specifically right after codegen happens. I only looked at the C API for LTO briefly to see if this is a good place. Probably there are still cases where this wouldn't be printed but it seems to be working for the common case. I also experimented putting this in the LTOCodeGenerator destructor but that didn't trigger for me because ld64 does not destroy the LTOCodeGenerator. Reviewers: dexonsmith, joker.eph Subscribers: rafael, joker.eph, llvm-commits Differential Revision: http://reviews.llvm.org/D17302 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261013 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/LTO/LTOCodeGenerator.cpp | 5 +++++ test/tools/lto/print-stats.ll | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 test/tools/lto/print-stats.ll diff --git a/lib/LTO/LTOCodeGenerator.cpp b/lib/LTO/LTOCodeGenerator.cpp index 70626682d55..5d173b262dc 100644 --- a/lib/LTO/LTOCodeGenerator.cpp +++ b/lib/LTO/LTOCodeGenerator.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/LTO/LTOCodeGenerator.h" +#include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Analysis/Passes.h" #include "llvm/Analysis/TargetLibraryInfo.h" @@ -553,6 +554,10 @@ bool LTOCodeGenerator::compileOptimized(ArrayRef Out) { RelocModel, CodeModel::Default, CGOptLevel, FileType, ShouldRestoreGlobalsLinkage); + // If statistics were requested, print them out after codegen. + if (llvm::AreStatisticsEnabled()) + llvm::PrintStatistics(); + return true; } diff --git a/test/tools/lto/print-stats.ll b/test/tools/lto/print-stats.ll new file mode 100644 index 00000000000..eba53d92cd5 --- /dev/null +++ b/test/tools/lto/print-stats.ll @@ -0,0 +1,8 @@ +; RUN: llvm-as %s -o %t.o +; RUN: %ld64 -lto_library %llvmshlibdir/libLTO.dylib -arch x86_64 -dylib -mllvm -stats -o %t.dylib %t.o 2>&1 | FileCheck --check-prefix=STATS %s +; RUN: %ld64 -lto_library %llvmshlibdir/libLTO.dylib -arch x86_64 -dylib -o %t.dylib %t.o 2>&1 | FileCheck --check-prefix=NO_STATS %s + +target triple = "x86_64-apple-macosx10.8.0" + +; STATS: Statistics Collected +; NO_STATS-NOT: Statistics Collected -- 2.11.0