On Tuesday 04 August 2009 18:24, Chris Lattner wrote:> The big issue is things like this: > > DOUT << foo.getName() << "\n"; > > When -debug is disable and even when assertions are turned off, > foo.getName() is still called. When you use:Yep, that's a problem.> DEBUG(errs() << foo.getName() << "\n"); > > When assertions are turned off, the call doesn't exist. It is also a > lot less "magic".Why doesn't DEBUG(DOUT << foo.getName() << "\n"); work? That's how I've always done it. A bit redundant perhaps, but it works. In any event, errs() is probably nicer. I'll have to see if I can do some of the tricks I did with DOUT in these patches. I think so, but I may be asking questions in the future. :) -Dave
2009/8/5 David Greene <dag at cray.com>> On Tuesday 04 August 2009 18:24, Chris Lattner wrote: > > > The big issue is things like this: > > > > DOUT << foo.getName() << "\n"; > > > > When -debug is disable and even when assertions are turned off, > > foo.getName() is still called. When you use: > > Yep, that's a problem. >Right !> > > DEBUG(errs() << foo.getName() << "\n"); > > > > When assertions are turned off, the call doesn't exist. It is also a > > lot less "magic". > > Why doesn't > > DEBUG(DOUT << foo.getName() << "\n"); > > work? That's how I've always done it. A bit redundant perhaps, but it > works. > > In any event, errs() is probably nicer. I'll have to see if I can do some > of > the tricks I did with DOUT in these patches. I think so, but I may be > asking > questions in the future. :) >So I can say DEBUG( err().write_hex(address); err() << "\n"; ); And can I say :- DEBUG( err().write_hex(address) << "\n"; ); does it associate like that ? Sorry I am away from my main computer on a laptop otherwise I would try it :) Aaron> > > -Dave > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090805/37be8066/attachment.html>
On Tue, Aug 4, 2009 at 4:35 PM, David Greene<dag at cray.com> wrote:> On Tuesday 04 August 2009 18:24, Chris Lattner wrote: > >> The big issue is things like this: >> >> DOUT << foo.getName() << "\n"; >> >> When -debug is disable and even when assertions are turned off, >> foo.getName() is still called. When you use: > > Yep, that's a problem. > >> DEBUG(errs() << foo.getName() << "\n"); >> >> When assertions are turned off, the call doesn't exist. It is also a >> lot less "magic". > > Why doesn't > > DEBUG(DOUT << foo.getName() << "\n"); > > work? That's how I've always done it. A bit redundant perhaps, but it works.It is redundant, if you are using DEBUG there is no reason to provide DOUT. And we didn't want to replicate the DOUT behavior for raw_ostream, since it is was too much magic (and could hide performance issues). I didn't explicitly document that DOUT was deprecated, but I did update the documentation here: http://llvm.org/docs/ProgrammersManual.html#DEBUG and put some comments in the 2.6 release notes about changing DOUT to DEBUG. The main missing feature, which sparked this discussion, is the lack of formatted output. Most clients don't use this, and we do have llvm/Support/Format.h, so the hope is the move to DEBUG(errs ...) is largely mechanical. - Daniel
On Tue, Aug 4, 2009 at 5:05 PM, Aaron Gray<aaronngray.lists at googlemail.com> wrote:> So I can say > > DEBUG( err().write_hex(address); err() << "\n"; ); > > And can I say :- > > DEBUG( err().write_hex(address) << "\n"; ); > > does it associate like that ?Yes. You can also use format objects from llvm/Support/Format.h, as in: -- DEBUG(errs() << format("0x%08x", address) << "\n"); -- - Daniel