* disintering the topic out of the place where it should lie

Nobody mentioned the very serious problems that can occur when using goto's (and corresponding non-problems that can lead to need in goto's).
As many times said in this topic, goto makes you difficult to understand the control/data flow. And how difficult does it make some automatic tool to understand that? For example, optimizing compiler, verification tool (that can find a plenty of serious logical/security errors in 2000000 lines of code in several minutes if that code was written properly)? Testing tools that can produce testing procedures based on specification and the same code to catch some errors that no rational time of experiencing or verification-by-hand of software can detect?

End of all: it even would be difficult to obfuscate that programm with some obsufcation utility bacause it requires changing of control and data flow and so requires fine understanding of it!

Of course you can write the programm with goto's right way so there would be no irreducible control graph, but using goto you can lead it to that awkward state I mentioned above...

Next: what is the cause of using goto's mentioned?
Breaking from deep loops... Well, if you use extra flag variable to do so and do not use "bad" goto's, optimizing compiler will build your programm in such a way that there would be actually no flag and you will lose no efficacy at all.
Handling exceptions: as it was suggested you can always use do{...}while(0) or return value technique.
Any other resons?


For try..catch mechanism. It is also a nightmare for compiler. And for programmer too. What if you created that exception passing by throw using RAII? It would be destroyed before handled. What about saving some data on exit (on destruction)? It would be saved in disintegrated state while lifting up the stack in hope of finding "catch". And that dependance of well documentation as well...