Thread (20 messages) 20 messages, 10 authors, 2019-02-12

Re: [Intel-gfx] [PATCH 1/3] treewide: Lift switch variables out of switches

From: Matthew Wilcox <willy@infradead.org>
Date: 2019-01-23 19:18:14
Also in: dri-devel, intel-gfx, intel-wired-lan, linux-fsdevel, linux-kbuild, linux-mm, linux-usb, lkml, netdev

On Wed, Jan 23, 2019 at 04:17:30PM +0200, Jani Nikula wrote:
Can't have:

	switch (i) {
		int j;
	case 0:
        	/* ... */
	}

because it can't be turned into:

	switch (i) {
		int j = 0; /* not valid C */
	case 0:
        	/* ... */
	}

but can have e.g.:

	switch (i) {
	case 0:
		{
			int j = 0;
	        	/* ... */
		}
	}

I think Kees' approach of moving such variable declarations to the
enclosing block scope is better than adding another nesting block.
Another nesting level would be bad, but I think this is OK:

	switch (i) {
	case 0: {
		int j = 0;
        	/* ... */
	}
	case 1: {
		void *p = q;
		/* ... */
	}
	}

I can imagine Kees' patch might have a bad effect on stack consumption,
unless GCC can be relied on to be smart enough to notice the
non-overlapping liveness of the vriables and use the same stack slots
for both.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help