&gt;inflicting these on C programmers<p>You&#x27;re acting like it&#x27;s unambiguously bad, but that&#x27;s not true.  For example, I might create a macro DEREF_AND_FREE(x) which expands to if(x)free(*x).  Often times, I&#x27;ll lazily use that in places where I know x isn&#x27;t null.  It&#x27;s more readable and maintainble than splitting the macro up into two separate macros, DEREF_AND_FREE_IF_NONNULL and DEREF_AND_FREE_I_KNOW_ITS_NONNULL.  These UB-based optimizations which are &quot;inflicted&quot; on me mean that I don&#x27;t take the performance hit for my laziness.