El compilador puede hacer explotar tu chocolate: tres comportamientos distintos ante el mismo undefined behavior
Attention people who think UB is fine
Tras su artículo sobre undefined behavior en C, el autor responde a quienes sostienen que basta con saber qué hará el código o, en el peor caso, esperar un segfault. Con GCC 16.2 y -O1 demuestra que la misma UB puede ejecutar una función que nunca se llamó, escribir un valor arbitrario en la dirección cero o hacer justo lo que el código parece indicar. Ningún compilador está obligado a detectar UB.
Ningún compilador está obligado a «detectar» UB en absoluto.