clang 22.0.0git
c++config.h
Go to the documentation of this file.
1// libstdc++ uses the non-constexpr function std::__glibcxx_assert_fail()
2// to trigger compilation errors when the __glibcxx_assert(cond) macro
3// is used in a constexpr context.
4// Compilation fails when using code from the libstdc++ (such as std::array) on
5// device code, since these assertions invoke a non-constexpr host function from
6// device code.
7//
8// To work around this issue, we declare our own device version of the function
9
10#ifndef __CLANG_CUDA_WRAPPERS_BITS_CPP_CONFIG
11#define __CLANG_CUDA_WRAPPERS_BITS_CPP_CONFIG
12
13#include_next <bits/c++config.h>
14
15#ifdef _LIBCPP_BEGIN_NAMESPACE_STD
16_LIBCPP_BEGIN_NAMESPACE_STD
17#else
18namespace std {
19#ifdef _GLIBCXX_BEGIN_NAMESPACE_VERSION
20_GLIBCXX_BEGIN_NAMESPACE_VERSION
21#endif
22
23#pragma push_macro("CUDA_NOEXCEPT")
24#if __cplusplus >= 201103L
25#define CUDA_NOEXCEPT noexcept
26#else
27#define CUDA_NOEXCEPT
28#endif
29
30__attribute__((device, noreturn)) inline void
31__glibcxx_assert_fail(const char *file, int line, const char *function,
32 const char *condition) CUDA_NOEXCEPT {
33#ifdef _GLIBCXX_VERBOSE_ASSERT
34 if (file && function && condition)
35 __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", file, line,
36 function, condition);
37 else if (function)
38 __builtin_printf("%s: Undefined behavior detected.\n", function);
39#endif
40 __builtin_abort();
41}
42
43#endif
44__attribute__((device, noreturn, __always_inline__,
45 __visibility__("default"))) inline void
46__glibcxx_assert_fail() CUDA_NOEXCEPT {
47 __builtin_abort();
48}
49
50#pragma pop_macro("CUDA_NOEXCEPT")
51
52#ifdef _LIBCPP_END_NAMESPACE_STD
53_LIBCPP_END_NAMESPACE_STD
54#else
55#ifdef _GLIBCXX_BEGIN_NAMESPACE_VERSION
56_GLIBCXX_END_NAMESPACE_VERSION
57#endif
58} // namespace std
59#endif
60
61#endif
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
int line
Definition c++config.h:31
int const char * function
Definition c++config.h:31
int const char const char *condition CUDA_NOEXCEPT
Definition c++config.h:32
#define noreturn
Definition stdnoreturn.h:17