On Tue, Apr 14, 2020 at 4:09 PM Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: > > + if (s->scope != s->declared_scope) { > > This comparison can never succeed for labels declared with __label__ > because s->scope is a block scope and s->declared_scope a label one. Hold on.. I'm sure I tested it. Oh. What I tested wasn't what I sent you, and I'd fixed things due to the testing but not updated the patch file. Oops. The test is supposed to be if (s->declared_scope != label_scope) { which is the whole point of that 'declared_scope'. So the concept of the patch is that the 'declared_scope' (and 'label_scope') are the same kind of scope (and comparable): it is the applicability of the label itself (either the whole function or some sub-expression statement). And the the visibility of the -symbol- ends up being different, and is the s->scope thing. But while my testing wasn't quite as limited as my wrong-version patch implied, it _was_ limited. So it might miss some other case. Linus