aboutsummaryrefslogtreecommitdiffstats
path: root/tools/opt
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-05-27 20:06:51 +0000
committerDan Gohman <gohman@apple.com>2010-05-27 20:06:51 +0000
commitd928fb670fb3b0818fc23738e9c2418980bb141e (patch)
tree68719880eae13bc8ff7e27b0953370bbbbc2a562 /tools/opt
parent57041b6f3337f733eff945ca0c43434eb20c8410 (diff)
downloadexternal_llvm-d928fb670fb3b0818fc23738e9c2418980bb141e.zip
external_llvm-d928fb670fb3b0818fc23738e9c2418980bb141e.tar.gz
external_llvm-d928fb670fb3b0818fc23738e9c2418980bb141e.tar.bz2
Don't special-case stdout in llvm::WriteBitcodeToFile; just consider
it to be the caller's responsibility to provide a stream in binary mode. This fixes a layering violation and avoids an outs() call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104878 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/opt')
-rw-r--r--tools/opt/opt.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index d094ed1..cf520de 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -377,12 +377,16 @@ int main(int argc, char **argv) {
}
// Figure out what stream we are supposed to write to...
- // FIXME: outs() is not binary!
raw_ostream *Out = 0;
bool DeleteStream = false;
if (!NoOutput && !AnalyzeOnly) {
if (OutputFilename == "-") {
- Out = &outs(); // Default to printing to stdout...
+ // Print to stdout.
+ Out = &outs();
+ // If we're printing a bitcode file, switch stdout to binary mode.
+ // FIXME: This switches outs() globally, not just for the bitcode output.
+ if (!OutputAssembly)
+ sys::Program::ChangeStdoutToBinary();
} else {
if (NoOutput || AnalyzeOnly) {
errs() << "WARNING: The -o (output filename) option is ignored when\n"