無駄なmallocを省く例はまあトリビアみたいなものですが、ある種の(間違った)コードが最適化の順番によって動いたり動かなかったりNULLチェックが削除されたりする例が http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html にあります
で、今試してみたら、GCC trunkだと-O3でNULLチェックが消去されました https://godbolt.org/g/AwK29X
(画像の中央にはNULLチェックに相当する灰色の背景の部分があるのに対して、右側にはないことに注目)
Clangだと消えなかった(だからClangの方が良いという話ではなく、こういうCコードを書かないようにするにはどうしたらいいかという話です)
GCC trunk、-O2で既にNULLチェック消してるな(つまりその辺のディストリビューションで配られる標準的なバイナリをコンパイルするときにこの手のコードが壊れる可能性があるということ)
で、この差はコンパイラがどんな順番でどのようにコードを最適化するかに依存しているので、コンパイラのバージョンによって結果が変わったり、どのアーキテクチャ向けにコンパイルするかによって結果が変わったり、最適化オプションをちょっと変えると結果が変わったりする