I was looking at some of the code generated by the compiler recently, and saw that, for some reason, the instruction sequence generated for function calls always consists of
movabs rax, offset j_func_n
call rax
instead of the shorter and more branch-predictor friendly
call j_func_n
and I was wondering if there was any reason for this? Or could this be classified as a missed optimisation?