We doubled down by creating exceptions. Exceptions are abstracted gotos. Hidden in the code base deep inside call stacks, jumping over multiple functions at once. Exception-safe coding is identical to goto-safe coding, except that goto-safety is local and explicit. Easy to prove.
Dijkstra called goto harmful in 1968
the Linux kernel contains tens of thousands of goto statements
the label out alone appears thousands of times
Linus's response on LKML in 1997: "there's nothing wrong with gotos, especially for handling error cases"