mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 04:39:44 +00:00
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
This commit is contained in:
parent
57041b6f33
commit
d928fb670f
@ -40,7 +40,8 @@ namespace llvm {
|
||||
std::string *ErrMsg = 0);
|
||||
|
||||
/// WriteBitcodeToFile - Write the specified module to the specified
|
||||
/// raw output stream.
|
||||
/// raw output stream. For streams where it matters, the given stream
|
||||
/// should be in "binary" mode.
|
||||
void WriteBitcodeToFile(const Module *M, raw_ostream &Out);
|
||||
|
||||
/// WriteBitcodeToStream - Write the specified module to the specified
|
||||
|
@ -1662,10 +1662,6 @@ void llvm::WriteBitcodeToFile(const Module *M, raw_ostream &Out) {
|
||||
|
||||
WriteBitcodeToStream( M, Stream );
|
||||
|
||||
// If writing to stdout, set binary mode.
|
||||
if (&llvm::outs() == &Out)
|
||||
sys::Program::ChangeStdoutToBinary();
|
||||
|
||||
// Write the generated bitstream to "Out".
|
||||
Out.write((char*)&Buffer.front(), Buffer.size());
|
||||
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user