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

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

 





On 06/12/2017 11:54 PM, Sami Kerola wrote:
On 12 June 2017 at 09:40, Rüdiger Meier <sweet_f_a@xxxxxx> wrote:
On 06/11/2017 10:36 AM, Sami Kerola wrote:

On 9 June 2017 at 22:10, Rüdiger Meier <sweet_f_a@xxxxxx> wrote:


Sorry this was broken. But I've checked now all clang and gcc versions.
Looks
like for clang the warning is only enabled when using C++ (clang++). So
the
fallthrough warning appears currently only on gcc>=7 and this works to
disable
it in a compatible way:

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

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


Thank you for review Rudi. I had a look of the c.h again and did the
change a little bit differently:

#ifdef __has_cpp_attribute
# if __has_cpp_attribute(deprecated)


Is this a typoo? s/deprecated/fallthrough

Hi Rudi,

Yes, it was a typo. Fixed in following.

https://github.com/kerolasa/lelux-utiliteetit/commit/aa1ed6ac309a2bd6f0c5371a3117618074e7634a

#  define UL_FALLTHROUGH __attribute__((fallthrough))
# elif __has_cpp_attribute(clang::fallthrough)
#  define UL_FALLTHROUGH [[clang::fallthrough]]


I still wonder. Have you really seen such a fallthrough warning from clang?
I've even tried with explicit -Wimplicit-fallthrough but could not get one.

As far as I understood these namespaced "clang::" attributes are for C++
only.

man clang:
    Non-standard C++11 Attributes
        Clang's non-standard C++11 attributes live in the clang attribute
namespace

So IMO it makes no sense to use clang::fallthrough for C code.

Removed in same commit. Strange enough I'm pretty sure that attribute
worked.

Yes, clang does not seem to complain about clang++ attributes. I guess they
don't want to introduce even more incompatibilities. Similar I've noticed
that even old gcc and clang compilers accept (ignore) the  option
-Wimplicit-fallthrough" and probably any other warning option.

FYI I've set up a travis build script to test many gcc and clang versions.
The current build logs contain your and my other pull request
https://travis-ci.org/rudimeier/util-linux/builds/242109953

# endif
#endif
#ifndef UL_FALLTHROUGH
# define UL_FALLTHROUGH /* FALLTHRU */
#endif


BTW just for cosmetics. Maybe we should rename UL_FALLTHROUGH to
__ul_fallthrough
like we have already __ul_calloc_size. IMO it would look more obvious to the
reader.

I don't have strong opinion about that, changed to one you proposed.

Thanks, let's see whether Karel likes this attribute at all ;)

Also I would use it without semicolon because some compilers may complain
about
useless ";" statements.

Semicolon is removed. Whether this will fool various indent tools is something
to be seen.

--
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