On x86-64, the epilogue code inserted before the tail jump blocks the autoreleased return optimization.
ARC optimizer unconditionally turns calls to objc_retainAutoreleasedReturnValue to tail calls. I plan to fix that too after this patch lands.
rdar://problem/38675807
shouldSuppressTailCallsOfRetainAutoreleasedReturnValue()?