Goto isn't nonlocal. You know you'll only every jump from them, and that you'll only ever jump to the specified label.
back
1 comments
The specified label is what makes goto no-local. You need to check the whole codebase to find out where you'll land.
By your definition only [1] "come from" would be non-local.
FWIW, Normally the term "non local goto" is reserved for control transfer beyond the current activation frame. So C goto is strictly local, bit longjmp would be non-local.
> the whole codebase
You can't goto out of a function, and you know there's exactly one such label inside it. If goto isn't local, then neither are function calls, since the function could be defined anywhere in the codebase.
>You can't goto out of a function
You can with a goto expression and a label address available - though the behavior is undefined in C, so bets are off.
And you can with longjump/setjump more explicitly.
Are you talking about this? https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html It's a GNU extension, not part of standard C at all.