diff options
author | Dan Gohman <gohman@apple.com> | 2010-01-17 17:47:24 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-01-17 17:47:24 +0000 |
commit | b56bf581a3bd8feb3eb454b30ab171bc5131e17c (patch) | |
tree | 536446d60c4c80ad8be3ed38811de3b547646803 /tools | |
parent | 1efd4fd56b3bc21b85ab921c6f77807afc02ecb5 (diff) | |
download | external_llvm-b56bf581a3bd8feb3eb454b30ab171bc5131e17c.zip external_llvm-b56bf581a3bd8feb3eb454b30ab171bc5131e17c.tar.gz external_llvm-b56bf581a3bd8feb3eb454b30ab171bc5131e17c.tar.bz2 |
Don't create a (empty) output file, and don't warn about bitcode output
to a console, when --analyze is used.
Similarly, avoid creating an empty output file when --disable-output is used.
Print a warning when the -o option appears with either --analyze or
--disable-output, to indicate that the option is being ignored.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93685 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/opt/opt.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index a636bd9..a4ad9ab 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -373,24 +373,29 @@ int main(int argc, char **argv) { // FIXME: outs() is not binary! raw_ostream *Out = &outs(); // Default to printing to stdout... if (OutputFilename != "-") { - // Make sure that the Output file gets unlinked from the disk if we get a - // SIGINT - sys::RemoveFileOnSignal(sys::Path(OutputFilename)); - - std::string ErrorInfo; - Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo, - raw_fd_ostream::F_Binary); - if (!ErrorInfo.empty()) { - errs() << ErrorInfo << '\n'; - delete Out; - return 1; + if (NoOutput || AnalyzeOnly) { + errs() << "WARNING: The -o (output filename) option is ignored when\n" + "the --disable-output or --analyze options are used.\n"; + } else { + // Make sure that the Output file gets unlinked from the disk if we get a + // SIGINT + sys::RemoveFileOnSignal(sys::Path(OutputFilename)); + + std::string ErrorInfo; + Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo, + raw_fd_ostream::F_Binary); + if (!ErrorInfo.empty()) { + errs() << ErrorInfo << '\n'; + delete Out; + return 1; + } } } // If the output is set to be emitted to standard out, and standard out is a // console, print out a warning message and refuse to do it. We don't // impress anyone by spewing tons of binary goo to a terminal. - if (!Force && !NoOutput && !OutputAssembly) + if (!Force && !NoOutput && !AnalyzeOnly && !OutputAssembly) if (CheckBitcodeOutputToConsole(*Out, !Quiet)) NoOutput = true; @@ -517,7 +522,7 @@ int main(int argc, char **argv) { if (!NoVerify && !VerifyEach) Passes.add(createVerifierPass()); - // Write bitcode or assembly out to disk or outs() as the last step... + // Write bitcode or assembly out to disk or outs() as the last step... if (!NoOutput && !AnalyzeOnly) { if (OutputAssembly) Passes.add(createPrintModulePass(Out)); |