On Monday 07 July 2008 15:36, Chris Lattner wrote:> On Mon, 7 Jul 2008, David Greene wrote: > >>> from our IR to LLVM IR. Those files need to include headers from both > >>> LLVM and our compiler components. That is where the DEBUG conflict > >>> happens. > >> > >> Do you need to use both of the debug mechanisms in the same CPP files? > > > > In some cases, yes. > > I have mixed feelings about this. I consider LLVM's debug macro to really > be an internal implementation detail that shouldn't be "exported" as part > of it's API. It is unfortunate that the C preprocessor is so bad at this > sort of thing.Yes, I understand your feelings here.> Since I think it really is a part of the LLVM internals, I don't think > that mangling it with a prefix is the right way to go. This would > significantly increase verbosity in the code and would be generally > detrimental.Verbose, yes, but "generally detrimental?" That's a pretty strong statement.> As a solution for your problem, would something like this work? > > #include "llvm/Debug.h" > #define LLVM_DEBUG(X) DEBUG(X) > #undef DEBUG > #include "DavidDebug.h" > ...Perhaps. I'll have to think on that. -Dave
On Mon, 7 Jul 2008, David Greene wrote:>> Since I think it really is a part of the LLVM internals, I don't think >> that mangling it with a prefix is the right way to go. This would >> significantly increase verbosity in the code and would be generally >> detrimental. > > Verbose, yes, but "generally detrimental?" That's a pretty strong statement.More specifically, this impacts the tyranical :) 80 column limit we have: DEBUG(cout << "whatever stuff here" << yeah << "ok"); is much more clear to me than: LLVM_DEBUG(cout << "whatever stuff here" << yeah << "ok"); To be specific, excess wrapping and clutter is what I would find detrimental. -Chris -- http://nondot.org/sabre/ http://llvm.org/
On Jul 8, 2008, at 4:57 AM, Chris Lattner wrote:> On Mon, 7 Jul 2008, David Greene wrote: >>> Since I think it really is a part of the LLVM internals, I don't >>> think >>> that mangling it with a prefix is the right way to go. This would >>> significantly increase verbosity in the code and would be generally >>> detrimental. >> >> Verbose, yes, but "generally detrimental?" That's a pretty strong >> statement. > > More specifically, this impacts the tyranical :) 80 column limit we > have: > > > DEBUG(cout << "whatever stuff here" << yeah << "ok"); > > is much more clear to me than: > > LLVM_DEBUG(cout << "whatever stuff here" > << yeah << "ok"); > > To be specific, excess wrapping and clutter is what I would find > detrimental.I completely agree with this point, but then aren't you trading off one aspect of clarity for another? It is a problem with the C preprocessor that hits many projects and the equivalent to the namespace solution for macros is to add a prefix specific to the project. Ie, use LLVM_DEBUG rather than DEBUG. The issue of clutter and excess wrapping is a secondary issue as much of the code in LLVM already is excessively wrapped and, to my eyes, borderline unreadable. At the risk of starting a major thread that has surely been covered many times before: Is there a reason to still cling to the 80 column limit and not consider expanding it to a controversial 100 columns? Dominic