mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82434 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
93c6c77340
commit
cc1c702f62
@ -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…
x
Reference in New Issue
Block a user