================ @@ -96,6 +100,47 @@ the ``<cmath>`` header file to conditionally make a function constexpr whenever the constant evaluation of the corresponding builtin (for example, ``std::fmax`` calls ``__builtin_fmax``) is supported in Clang. +``__has_target_builtin`` +------------------------ + +This function-like macro takes a single identifier argument that is the name of +a builtin function, a builtin pseudo-function (taking one or more type +arguments), or a builtin template. +It evaluates to 1 if the builtin is supported on the current target or 0 if not. + +``__has_builtin`` and ``__has_target_builtin`` behave identically for normal C++ compilations. ---------------- sarnex wrote:
yeah that's a fair point, so it sounds like you'd prefer an example of when you codegen doesn't work even though you are checking with `has_builtin`, and for that i could show the motiving example for this which is something like ``` void foo() { #if __has_builtin(__builtin_ia32_pause) __builtin_ia32_pause() #else abort() #endif } ``` and if the current target is an offloading target (amdgpu/nvptx/spirv) and the aux target is x86, we will get a error saying it can't be codegen'd would that kind of example address your concern? thx https://github.com/llvm/llvm-project/pull/126324 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits