GNU has long_call/short_call attribute support for ARM: https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes.
LLVM/clang only supports the global switch/option (-mlong-call -mno-long-call). In some scenarios, we need to turn it on/off for individual functions.
Clang patch: http://reviews.llvm.org/D19610