diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-11-30 21:42:47 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-11-30 21:42:47 +0000 |
commit | 2776b4c624db4b79b8b7d8eb4f5a55ab6e6dab92 (patch) | |
tree | 238578ab334d73a88ed620721cc6b9fb32f92602 /llvm | |
parent | 366a2e812d251934628679a77d1ba44f384c863c (diff) | |
download | bcm5719-llvm-2776b4c624db4b79b8b7d8eb4f5a55ab6e6dab92.tar.gz bcm5719-llvm-2776b4c624db4b79b8b7d8eb4f5a55ab6e6dab92.zip |
Add a -time-compilations=<N> option to llc.
This causes llc to repeat the module compilation N times, making it
possible to get more accurate information from -time-passes when
compiling small modules.
llvm-svn: 169040
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/tools/llc/llc.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/tools/llc/llc.cpp b/llvm/tools/llc/llc.cpp index 4d4a74c009e..41ec815719e 100644 --- a/llvm/tools/llc/llc.cpp +++ b/llvm/tools/llc/llc.cpp @@ -51,6 +51,11 @@ InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-")); static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename")); +static cl::opt<unsigned> +TimeCompilations("time-compilations", cl::Hidden, cl::init(1u), + cl::value_desc("N"), + cl::desc("Repeat compilation N times for timing")); + // Determine optimization level. static cl::opt<char> OptLevel("O", @@ -71,6 +76,8 @@ DisableSimplifyLibCalls("disable-simplify-libcalls", cl::desc("Disable simplify-libcalls"), cl::init(false)); +static int compileModule(char**, LLVMContext&); + // GetFileNameRoot - Helper function to get the basename of a filename. static inline std::string GetFileNameRoot(const std::string &InputFilename) { @@ -181,6 +188,15 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "llvm system compiler\n"); + // Compile the module TimeCompilations times to give better compile time + // metrics. + for (unsigned I = TimeCompilations; I; --I) + if (int RetVal = compileModule(argv, Context)) + return RetVal; + return 0; +} + +static int compileModule(char **argv, LLVMContext &Context) { // Load the module to be compiled... SMDiagnostic Err; std::auto_ptr<Module> M; |