Due to arguably a bug in GCC[0], using __has_builtin is not sufficient to check whether __builtin_thread_pointer can actually be compiled by GCC. This makes it impossible to compile LLVM with llvm-exegesis enabled with e.g. GCC 10 as it does have the builtin, but no implementation for architectures such as x86.
This patch works around this issue by making it a cmake configure check whether the builtin can be compiled and used, rather than relying on the broken preprocessor macro.
[0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96952, demonstration: https://godbolt.org/z/9z5nWM6Ef
LLVM style uses void *