diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-30 05:39:52 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-30 05:39:52 +0000 |
commit | 30bc7e8e560941f730fd94109e81ac600767b0ab (patch) | |
tree | 51f348b906fbd229a78ae75fef418f098e11e5c6 | |
parent | bfb7a1d6eba6714bd71db921092332da65b774c0 (diff) |
make -ftime-report work even in -disable-free mode. Woo, finally.
rdar://7781603
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99878 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/driver/cc1_main.cpp | 5 | ||||
-rw-r--r-- | tools/driver/driver.cpp | 19 |
2 files changed, 18 insertions, 6 deletions
diff --git a/tools/driver/cc1_main.cpp b/tools/driver/cc1_main.cpp index ec7fed7ec9..5770a1a115 100644 --- a/tools/driver/cc1_main.cpp +++ b/tools/driver/cc1_main.cpp @@ -31,6 +31,7 @@ #include "llvm/ADT/OwningPtr.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ManagedStatic.h" +#include "llvm/Support/Timer.h" #include "llvm/Support/raw_ostream.h" #include "llvm/System/DynamicLibrary.h" #include "llvm/Target/TargetSelect.h" @@ -272,6 +273,10 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd, } } + // If any timers were active but haven't been destroyed yet, print their + // results now. This happens in -disable-free mode. + llvm::TimerGroup::printAll(llvm::errs()); + // When running with -disable-free, don't do any destruction or shutdown. if (Clang->getFrontendOpts().DisableFree) { Clang.take(); diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index 2108c8fbdb..daab519e95 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -24,6 +24,7 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/Regex.h" +#include "llvm/Support/Timer.h" #include "llvm/Support/raw_ostream.h" #include "llvm/System/Host.h" #include "llvm/System/Path.h" @@ -73,10 +74,10 @@ static const char *SaveStringInSet(std::set<std::string> &SavedStrings, /// \param Args - The vector of command line arguments. /// \param Edit - The override command to perform. /// \param SavedStrings - Set to use for storing string representations. -void ApplyOneQAOverride(llvm::raw_ostream &OS, - std::vector<const char*> &Args, - llvm::StringRef Edit, - std::set<std::string> &SavedStrings) { +static void ApplyOneQAOverride(llvm::raw_ostream &OS, + std::vector<const char*> &Args, + llvm::StringRef Edit, + std::set<std::string> &SavedStrings) { // This does not need to be efficient. if (Edit[0] == '^') { @@ -140,8 +141,9 @@ void ApplyOneQAOverride(llvm::raw_ostream &OS, /// ApplyQAOverride - Apply a comma separate list of edits to the /// input argument lists. See ApplyOneQAOverride. -void ApplyQAOverride(std::vector<const char*> &Args, const char *OverrideStr, - std::set<std::string> &SavedStrings) { +static void ApplyQAOverride(std::vector<const char*> &Args, + const char *OverrideStr, + std::set<std::string> &SavedStrings) { llvm::raw_ostream *OS = &llvm::errs(); if (OverrideStr[0] == '#') { @@ -265,6 +267,11 @@ int main(int argc, const char **argv) { if (C.get()) Res = TheDriver.ExecuteCompilation(*C); + + // If any timers were active but haven't been destroyed yet, print their + // results now. This happens in -disable-free mode. + llvm::TimerGroup::printAll(llvm::errs()); + llvm::llvm_shutdown(); return Res; |