On Mon, Apr 13, 2020 at 12:32:41PM -0700, Linus Torvalds wrote: > > I _feel_ like the fix to that should be that the only thing that > creates the actual symbol is the label definition, and that the goto > should only ever use the 'ident' and we'd tie the two together later. Yes, I tried that too but it didn't worked because: > But yeah, that "tie the two together later" may not work, simply > because scoping is so tightly tied to parsing in sparse. > > So maybe your approach is the best one. > > It feels hacky and wrong, but maybe that just fundamentally comes from > labels having that very special "use = implicit declaration" thing. Yes, that and the way the symbol 'table' is done: very clever but unusable for our problem here. But maybe there is something that can be done there. Currently end_scope() sets scope->symbols to NULL but as far as I can see, this is not really needed and, if left, the "tie the two together later" could be done by doing a symbol lookup via this list instead of the usual lookup via ident->symbols, much like classical symbol tables are used. It should be quite easy. I'll give it a try because I'm also not really satisfied with my current solution giving a kind of secondary scope to the statements. -- Luc