Hi Marek, On Fri, Oct 21, 2011 at 5:16 PM, Marek Vasut <marek.va...@gmail.com> wrote: > The current implementation of debug doesn't play well with GCC4.6. > This implementation also fixes GCC4.6 complaints about unused variables > while maintaining code size. > > Signed-off-by: Mike Frysinger <vap...@gentoo.org> > Signed-off-by: Marek Vasut <marek.va...@gmail.com> > Cc: Wolfgang Denk <w...@denx.de> > Cc: Simon Glass <s...@chromium.org> > --- > include/common.h | 20 ++++++++++++-------- > 1 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/include/common.h b/include/common.h > index eb19a44..c3b23551 100644 > --- a/include/common.h > +++ b/include/common.h > @@ -116,20 +116,24 @@ typedef volatile unsigned char vu_char; > #include <flash.h> > #include <image.h> > > -#ifdef DEBUG > -#define debug(fmt,args...) printf (fmt ,##args) > -#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args); > -#else > -#define debug(fmt,args...) > -#define debugX(level,fmt,args...) > -#endif /* DEBUG */ > - > #ifdef DEBUG > # define _DEBUG 1 > #else > # define _DEBUG 0 > #endif > > +#define debug_cond(cond, fmt, args...) \
Yes this is much nicer. Could perhaps add a little comment about how to use this and to avoid putting debug() inside #ifdef? > + do { \ > + if (cond) \ > + printf(fmt, ##args); \ > + } while (0) > + > +#define debug(fmt, args...) \ > + debug_cond(_DEBUG, fmt, ##args) > + > +#define debugX(level, fmt, args...) \ > + debug_cond((_DEBUG && DEBUG >= (level)), fmt, ##args) > + > /* > * An assertion is run-time check done in debug mode only. If DEBUG is not > * defined then it is skipped. If DEBUG is defined and the assertion fails, > -- > 1.7.6.3 > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot