[llvm-commits] [llvm] r82434 - /llvm/trunk/include/llvm/Support/FormattedStream.h
Dan Gohman
gohman at apple.com
Mon Sep 21 16:21:04 PDT 2009
Hi Daniel,
With this change, errs() is now becoming buffered, which is
very inconvenient.
Dan
On Sep 20, 2009, at 8:56 PM, Daniel Dunbar wrote:
> Author: ddunbar
> Date: Sun Sep 20 22:56:00 2009
> New Revision: 82434
>
> URL: http://llvm.org/viewvc/llvm-project?rev=82434&view=rev
> Log:
> 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.
>
> Modified:
> llvm/trunk/include/llvm/Support/FormattedStream.h
>
> Modified: llvm/trunk/include/llvm/Support/FormattedStream.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/FormattedStream.h?rev=82434&r1=82433&r2=82434&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/include/llvm/Support/FormattedStream.h (original)
> +++ llvm/trunk/include/llvm/Support/FormattedStream.h Sun Sep 20
> 22:56:00 2009
> @@ -105,10 +105,15 @@
> // 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;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list