[LLVMdev] Old DOUT

Chris Lattner clattner at apple.com
Fri Dec 11 09:35:30 PST 2009


On Dec 11, 2009, at 9:03 AM, David Greene wrote:

>> 
>> If you're asking if a new dbgs() might be useful, "yes if specified well". 
>> If you're asking if you can convert everything to using it, "no".
> 
> I'm not sure what you mean here.  It's not ok to convert code under DEBUG() or
> #ifndef NDEBUG to use dbgs()?

Right.

> Then what's the point of providing it?

I don't know what dbgs does, so I don't know!

> My intent is to have dbgs() == errs() when debug mode is disabled.

Do you know why DOUT was removed?  The problem is that things like this:

 DOUT << foo();

evaluate foo even when assertions are disabled.  This is bad, and bringing it back with a new name is not good.

>>> There are some tricky cases where dump routines are used either to
>>> print error messages or to print debug information.  In those cases
>>> I may have to parameterize the dump routine with the stream.
>> 
>> What do you mean?
> 
> For example, SDNode::dump() is used to both print out debug information
> and to do dumps in error context (cannot select, etc.).
> 
> One option is to make the signature SDNode::dump(raw_ostream &) or create
> a new overload.

The normal pattern is to define print(raw_ostream&) and have dump() call print(errs()).

-Chris



More information about the llvm-dev mailing list