[LLVMdev] [llvm-commits] [PATCH] Allow per-thread re-direction of outs()/errs()
Justin Holewinski
justin.holewinski at gmail.com
Thu May 31 22:21:56 PDT 2012
On Thu, May 31, 2012 at 8:06 PM, Chris Lattner <clattner at apple.com> wrote:
>
> On May 31, 2012, at 2:39 PM, Justin Holewinski wrote:
>
> > The attached patch add the ability to programmatically re-direct
> outs()/errs() to an arbitrary raw_ostream instance, maintaining the
> raw_ostream instances in a stack structure so clients can push/pop streams
> at will. The stack is also maintained in thread-local storage, so
> different threads can re-direct individually. This allows for two use
> cases:
> >
> > 1. Compilers can attach custom streams to outs()/errs() to intercept
> output from LLVM without needing to play with STDOUT/STDERR.
> > 2. Compilers can receive LLVM output from different threads
> individually, instead of having all diagnostics dumped to a single stream.
>
> This isn't the right approach. Nothing in the library part of the
> compiler should be hard coding a stream to write to. What are you trying
> to accomplish?
>
There are a lot of places where warning/debug information is passed
directly to errs(). For example, take the Linker class. You can tell it
to omit errors/warnings, but it would be preferable to let it emit the
errors/warnings to some compiler-controlled stream for message triaging.
For compilers that are (a) multi-threaded, or (b) invoked as part of an
embedded library, writing any information from the core libraries directly
to stderr is bad. I want to be able to capture this output without messing
with the process' stdout/stderr streams.
This patch essentially prevents LLVM library code from having to hard-code
streams for error/warning/diagnostic output. Library code can just use
outs()/errs() as they do now, but the compiler process/thread now has the
ability to re-direct this output as it sees fit. If no such functionality
is needed, the default behavior is to write to stdout/stderr as it does now.
>
> -Chris
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
--
Thanks,
Justin Holewinski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120531/5206dc1b/attachment.html>
More information about the llvm-dev
mailing list