1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

Don't allow formatted_ostream to be unbuffered, even if its underlying buffer

is.
 - The problem is that formatted_ostream forces its underlying buffer to be
   unbuffered, so if some client happens to wrap a formatted_ostream around
   something, but still use the underlying stream, then we can end up writing on
   a fully unbuffered output (which was never intended to be unbuffered).

 - This makes clang (and presumably llvm-gcc) -emit-llvm -S a mere 10x faster.

llvm-svn: 82434
This commit is contained in:
Daniel Dunbar 2009-09-21 03:56:00 +00:00
parent 64e3a9984b
commit 84e383fc42

View File

@ -105,10 +105,15 @@ namespace llvm
// own buffering, and it doesn't need or want TheStream to do another
// layer of buffering underneath. Resize the buffer to what TheStream
// had been using, and tell TheStream not to do its own buffering.
//
// If the underlying stream is unbuffered, just use its preferred buffer
// size. We can't treat this as an honest wish for unbuffered output,
// because it could very well be a stream we previously forced to be
// unbuffered.
if (size_t BufferSize = TheStream->GetBufferSize())
SetBufferSize(BufferSize);
else
SetUnbuffered();
SetBuffered();
TheStream->SetUnbuffered();
Scanned = 0;