Thread (17 messages) 17 messages, 4 authors, 2019-08-05

Re: [PATCH] net: sctp: Rename fallthrough label to unhandled

From: Neil Horman <nhorman@tuxdriver.com>
Date: 2019-08-01 10:51:34
Also in: linux-sctp, lkml

On Wed, Jul 31, 2019 at 03:23:46PM -0700, Joe Perches wrote:
On Wed, 2019-07-31 at 16:58 -0400, Neil Horman wrote:
quoted
On Wed, Jul 31, 2019 at 09:35:31AM -0700, Joe Perches wrote:
quoted
On Wed, 2019-07-31 at 08:16 -0400, Neil Horman wrote:
quoted
On Wed, Jul 31, 2019 at 04:32:43AM -0700, Joe Perches wrote:
quoted
On Wed, 2019-07-31 at 07:19 -0400, Neil Horman wrote:
quoted
On Tue, Jul 30, 2019 at 10:04:37PM -0700, Joe Perches wrote:
quoted
fallthrough may become a pseudo reserved keyword so this only use of
fallthrough is better renamed to allow it.

Signed-off-by: Joe Perches <joe@perches.com>
Are you referring to the __attribute__((fallthrough)) statement that gcc
supports?  If so the compiler should by all rights be able to differentiate
between a null statement attribute and a explicit goto and label without the
need for renaming here.  Or are you referring to something else?
Hi.

I sent after this a patch that adds

# define fallthrough                    __attribute__((__fallthrough__))

https://lore.kernel.org/patchwork/patch/1108577/

So this rename is a prerequisite to adding this #define.
why not just define __fallthrough instead, like we do for all the other
attributes we alias (i.e. __read_mostly, __protected_by, __unused, __exception,
etc)
Because it's not as intelligible when used as a statement.
I think thats somewhat debatable.  __fallthrough to me looks like an internal
macro, whereas fallthrough looks like a comment someone forgot to /* */

I'd rather see:

	switch (foo) {
	case FOO:
		bar |= baz;
		fallthrough;
	case BAR:
		bar |= qux;
		break;
	default:
		error();
	}

than

	switch (foo) {
	case FOO:
		bar |= baz;
		__fallthrough;
	case BAR:
		bar |= qux;
		break;
	default:
		error();
	}

or esoecially

	switch (foo) {
	case FOO:
		bar |= baz;
		/* fallthrough
*/;
	case BAR:
		bar |= qux;
		break;
	default:
		error();
	}

but <shrug>, bikeshed ahoy!...
You can say that if you want, but you made the point that your think the macro
as you have written is more readable.  You example illustrates though that /*
fallthrough */ is a pretty common comment, and not prefixing it makes it look
like someone didn't add a comment that they meant to.  The __ prefix is standard
practice for defining macros to attributes (212 instances of it by my count).  I
don't mind rewriting the goto labels at all, but I think consistency is
valuable.

Neil
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help