Android libc provides a fixed TLS slot for the unsafe stack pointer,
and this change implements direct access to that slot on AArch64 via
__builtin_thread_pointer() + offset.
This change also moves more code into TargetLowering and its
target-specific subclasses to get rid of target-specific codegen
in SafeStackPass.
This change does not touch the ARM backend because ARM lowers
builting_thread_pointer as aeabi_read_tp, which is not available
on Android.
This is a second attempt which leave the generic, compiler-rt-based implementation in SafeStack.cpp. This way things still work even when there is no TargetMachine.
Moving this around makes it harder to review. Can you move it back where it was?