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

Reply via email to