LLVM is a very impressive compiler.  I&#x27;m really impressed with the warning messages it&#x27;s able to produce (especially compared with what was available even 2 or 3 years ago).<p>What is more frustrating about modern compilers (and this is not limited to LLVM) is the desire to squeeze out a tiny bit more performance by exploiting undefined behavior.  I&#x27;m thinking of things like eliminating calls to memset that &quot;don&#x27;t seem to do anything user-visible,&quot; eliminating code based on signed overflow being undefined, and so on.<p>Most of the the undefined behavior that exists in C is there because different machines used to do different things.  For example, there used to be non-two&#x27;s-complement machines.  It wasn&#x27;t put there because C was somehow designed to be hyper-optimized.  People who relied on the undefined behavior could legitimately make the same argument that you are now making-- that it worked fine on their machine, which they knew very well.<p>I am curious why nobody has brought up the idea of making memmove as efficiently handled as memset, rather than using undefined behavior here.  UB feels like the wrong way to go.