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
This commit is contained in:
Dan Gohman 2010-01-17 17:47:24 +00:00
parent 1efd4fd56b
commit b56bf581a3

View File

@ -373,24 +373,29 @@ int main(int argc, char **argv) {
// FIXME: outs() is not binary! // FIXME: outs() is not binary!
raw_ostream *Out = &outs(); // Default to printing to stdout... raw_ostream *Out = &outs(); // Default to printing to stdout...
if (OutputFilename != "-") { if (OutputFilename != "-") {
// Make sure that the Output file gets unlinked from the disk if we get a if (NoOutput || AnalyzeOnly) {
// SIGINT errs() << "WARNING: The -o (output filename) option is ignored when\n"
sys::RemoveFileOnSignal(sys::Path(OutputFilename)); "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; std::string ErrorInfo;
Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo, Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo,
raw_fd_ostream::F_Binary); raw_fd_ostream::F_Binary);
if (!ErrorInfo.empty()) { if (!ErrorInfo.empty()) {
errs() << ErrorInfo << '\n'; errs() << ErrorInfo << '\n';
delete Out; delete Out;
return 1; return 1;
}
} }
} }
// If the output is set to be emitted to standard out, and standard out is a // 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 // 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. // impress anyone by spewing tons of binary goo to a terminal.
if (!Force && !NoOutput && !OutputAssembly) if (!Force && !NoOutput && !AnalyzeOnly && !OutputAssembly)
if (CheckBitcodeOutputToConsole(*Out, !Quiet)) if (CheckBitcodeOutputToConsole(*Out, !Quiet))
NoOutput = true; NoOutput = true;
@ -517,7 +522,7 @@ int main(int argc, char **argv) {
if (!NoVerify && !VerifyEach) if (!NoVerify && !VerifyEach)
Passes.add(createVerifierPass()); 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 (!NoOutput && !AnalyzeOnly) {
if (OutputAssembly) if (OutputAssembly)
Passes.add(createPrintModulePass(Out)); Passes.add(createPrintModulePass(Out));