Re: [PATCH 01/11] misc: fallthrough fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This patch looks a bit ugly, for example:

## gcc 4.8.1

  CC       text-utils/more-more.o
../text-utils/more.c: In function ‘command’:
../text-utils/more.c:1273:4: warning: empty declaration [enabled by 
default]
    UL_FALLTHROUGH;

## icc 16.0.0

text-utils/more.c(1273): warning #1292: unknown attribute "fallthrough"
                        UL_FALLTHROUGH;
                        ^

> diff --git a/include/c.h b/include/c.h
> index a5162b964..8a67b5dfb 100644
> --- a/include/c.h
> +++ b/include/c.h
> @@ -77,6 +77,24 @@
>  #endif
>  
>  /*
> + * Statement Attributes
> + */
> +#if defined(__clang__)
> +# ifndef __has_cpp_attribute
> +#  define __has_cpp_attribute(x) 0
> +# endif
> +# if __has_cpp_attribute(clang::fallthrough)
> +#  define UL_FALLTHROUGH [[clang::fallthrough]]
> +# else
> +#  define UL_FALLTHROUGH /* fall through */
> +# endif
> +#elif defined(__GNUC__) || defined(__GNUG__)
> +# define UL_FALLTHROUGH __attribute__((fallthrough))
> +#else
> +# define UL_FALLTHROUGH /* FALLTHRU */
> +#endif
> +
> +/*

Maybe just simplify like this:

#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif

#if __has_cpp_attribute(fallthrough)
# define UL_FALLTHROUGH [[fallthrough]]
#else
# define UL_FALLTHROUGH /* fall through */
#endif

The attribute works without "clang::" prefix on recent gcc and clang, 
and maybe icc in future.

Otherwise we could check for the attribute in configure, using 
autoconf-archive
  AX_GCC_FUNC_ATTRIBUTE(fallthrough)
https://www.gnu.org/software/autoconf-archive/ax_gcc_func_attribute.html

cu,
Rudi
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux