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...) \ + 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