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:
parent
64e3a9984b
commit
84e383fc42
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user