Interesting article : it finally shows that compilers are made by people that are interested only in compilers and prure performance, and don't even care about making it useful for any language.
Now if C99 allows this, then C99 is not a language defined for programmers, jsut for the interests of compiler makers. It just kills the language and makes it completely useless (and malicious) to any one: programmers, and final users (which are not even given any right to know what is in the program they buy or use, these programs are also best to categorize are malwares).
In summary, C is a malware to eradicate, unless it is implemented by replacing all undefined behaviors from the so called "standard" by defined behavior.
For the simple case of (INT_MAX+1), it can be deterministic on all platform by saying its result must be INT_MIN (disregard the concept of 2-complements which implies a binary representation). And on most machines, this is what the native opcodes do, so it has no cost. But compilers cannot misbehave and pretend this is undefined behavior allowing them to *silently* remove instructions and treating them as no-ops (ignoring completely the explicit developer's desires, as if the developer was stupid and only the compiler knows better what to do: at least the compiler should emit a warning that programmers can see, and the compiler and language specification must provide a way to avoid this situation).
As well (INT_MIN-1) must be INT_MAX.
For (1 << n), it must be defined (as 0) if 2^n is larger than INT_MAX (yes it implies a cost for compilers: on x86, the value of n is silently masked by considering only the 5 lowest bits of n for 32 bit operations, or 6 lowest bits for 64-bit operations, this only depends on the opcode used, i.e. the bitsize of the specified register for the SHL instruction). But in the C language, these considerations about native opcodes and native register sizes is not relevant, and it's up to compilers to allocate the proper registers and generate the instructions according to the language specifications, adding additional code where needed to get the expected result, so compilers should then emit an AND masking instruction before emitting the SHL.
What is the real cost of these check ? None. C is a now very old language, the minor performance costs was completely erased by massive gains of performance: the small impact it has is temporary and cancels rapidly.
Are compiler makers serious ? Don't they care about the huge costs they generate worldwide and the massive security attacks we see today ?
Those compiler makers should be fired and given NO vote to language standardizers: fire them from all standard bodies, don't hear what they want to pass !
Placing "undefined behavior" in any language standard is simply stupid (and lazy !). There may be cases where this was unexpectedly forgotten, but the best to do is to update the standard, look at existing "compliant" implementations and study what will be the best defined behavior to integrate in the standard. That's what is done (hopefully) for Java or ECMAscript/_javascript_ (which is now eradicating Typescript completely). Doing that will possibly make some existing "compliant" implementations suddenly non-compliant.
But at least developers will get an opportunity to update their compiler tools with more recent versions: even if the generated code is not modified (for compatibiliy reason), at least the new compilers will emit trackable warnings that will allow developers to fix their source code to behave as they expected once compiled and tested by them, and then run by final users that must be able to trust the developers.
For now the C standard is not made for any one. Its goals are stupid. The whole team of this standard body (most of them from ANSI) should be fired (or another standard body should take ove the goal of redefining it). Everyone in the computing industry will be interested and now every one in the world uses computers and are interested: this goal is no longer technical, it has become a fundamental human right to absolutely preserve, but voluntarily ignored by the existing standard body which behaves like devil.