That's definitely not a tail call, and even with a smart compiler it's pretty hard that it would get optimized into "return f(a)".
If "x" is declared there and never mutated in the subsequent code, and the code in the "..." doesn't perform any side effects, then such an optimization could occur... but then again, if the code in the "..." in your example didn't perform any side effects, it'd be dead code.