The output provided when looking at the given example squaring function without and then with the compiler option -O (GCC 5.1.0 or Clang 3.6) is rather interesting.
The code goes from something rather crazy looking, to something that a human would write.
Its surprising that these compilers arnt clever enough already to produce the optimized output by default.
The code goes from something rather crazy looking, to something that a human would write. Its surprising that these compilers arnt clever enough already to produce the optimized output by default.