On Wed, Sep 9, 2015 at 9:59 PM, Anders Peter Fugmann wrote: > It just occurred to me that the functions I made are tail recursive and > which is why the middle function call is eliminated. Or even worse, tail calling. This, and aggressive inlining are the two things which most often rears its ugly head when hunting for why a piece of code is breaking some invariant. You have to "guess" at what the compiler did to the code base and reconstruct the code path from this. On the other hand, you don't want to lose either of those two optimizations. I agree it is worthwhile to document both behaviours. -- J.