[m-rev.] for review: Avoid clang warning about preprocessor macro.

Julien Fischer jfischer at opturion.com
Wed Feb 28 17:42:48 AEDT 2018


Hi Peter,

On Wed, 28 Feb 2018, Peter Wang wrote:

> runtime/mercury_trail.h:
>    Simplify expansion of MR_USE_TAGGED_TRAIL to prevent a clang warning:
>    macro expansion producing 'defined' has undefined behavior
> ---
> runtime/mercury_trail.h | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/runtime/mercury_trail.h b/runtime/mercury_trail.h
> index 345505823..f639b2781 100644
> --- a/runtime/mercury_trail.h
> +++ b/runtime/mercury_trail.h
> @@ -1,6 +1,7 @@
> // vim: ts=4 sw=4 expandtab ft=c
> 
> // Copyright (C) 1997-2000, 2004-2005, 2007-2008 The University of Melbourne.
> +// Copyright (C) 2015-2016, 2018 The Mercury team.
> // This file may only be copied under the terms of the GNU Library General
> // Public License - see the file COPYING.LIB in the Mercury distribution.
> 
> @@ -180,12 +181,14 @@ typedef enum {
> } MR_trail_entry_kind;
> #define MR_LAST_TRAIL_ENTRY_KIND MR_func_entry
> 
> -// MR_USE_TAGGED_TRAIL is true iff we have enough tag bits to store
> -// an MR_trail_entry_kind as a pointer tag and MR_FORCE_NO_TAGGED_TRAIL
> -// is undefined.
> +// MR_USE_TAGGED_TRAIL is true iff MR_FORCE_NO_TAGGED_TRAIL is not defined, and
> +// there are enough tag bits to store an MR_trail_entry_kind as a pointer tag.
> 
> -#define MR_USE_TAGGED_TRAIL (!defined(MR_FORCE_NO_TAGGED_TRAIL) &&      \
> -    ((1<<MR_TAGBITS) > MR_LAST_TRAIL_ENTRY_KIND))
> +#ifdef MR_FORCE_NO_TAGGED_TRAIL
> +  #define MR_USE_TAGGED_TRAIL (0)
> +#else
> +  #define MR_USE_TAGGED_TRAIL ((1<<MR_TAGBITS) > MR_LAST_TRAIL_ENTRY_KIND)
> +#endif

That's fine.

Julien.


More information about the reviews mailing list