I don't get how the fact that the compiler can remove or modify the code was thought to be a good idea. I get removing unused functions, but not conditions and changing the flow of the code. If there is unreachable code, best to issue a warning and let the programmer fix it. The compiler should optimize without changing the semantic of the code, even if it contains undefined/unspecified behavior.
To this it's impossible to write C without using a ton of non standard attributes and compiler options to just make it do the correct thing.
To this it's impossible to write C without using a ton of non standard attributes and compiler options to just make it do the correct thing.