|
112 | 112 | # define STDEXEC_INTELLISENSE() 0 |
113 | 113 | #endif |
114 | 114 |
|
| 115 | +//////////////////////////////////////////////////////////////////////////////////////////////////// |
| 116 | +#if STDEXEC_MSVC() |
| 117 | +# define STDEXEC_PRAGMA(_ARG) __pragma(_ARG) |
| 118 | +#else |
| 119 | +# define STDEXEC_PRAGMA(_ARG) _Pragma(STDEXEC_STRINGIZE(_ARG)) |
| 120 | +#endif |
| 121 | + |
115 | 122 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
116 | 123 | #if defined(__CUDACC__) || defined(_NVHPC_CUDA) |
117 | 124 | # define STDEXEC_CUDA_COMPILATION() 1 |
|
133 | 140 | # define STDEXEC_HOST_DEVICE_DEDUCTION_GUIDE |
134 | 141 | #endif |
135 | 142 |
|
| 143 | +//////////////////////////////////////////////////////////////////////////////////////////////////// |
| 144 | +#if STDEXEC_NVCC() |
| 145 | +# define STDEXEC_EXEC_CHECK_DISABLE STDEXEC_PRAGMA(nv_exec_check_disable) |
| 146 | +#else |
| 147 | +# define STDEXEC_EXEC_CHECK_DISABLE |
| 148 | +#endif |
| 149 | + |
136 | 150 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
137 | 151 | #if __cpp_impl_coroutine >= 2019'02 && __cpp_lib_coroutine >= 2019'02 |
138 | 152 | # include <coroutine> // IWYU pragma: keep |
@@ -241,32 +255,39 @@ namespace __coro = std::experimental; |
241 | 255 | #define STDEXEC_ATTR_launch_bounds(...) STDEXEC_PROBE(~, 7) |
242 | 256 | #define STDEXEC_ATTR___launch_bounds__(...) STDEXEC_PROBE(~, 7) |
243 | 257 |
|
| 258 | +#if STDEXEC_MSVC() && !STDEXEC_CLANG_CL() |
| 259 | +# define STDEXEC_ATTR_WHICH_8(_ATTR) __declspec(_ATTR) |
| 260 | +#else |
| 261 | +# define STDEXEC_ATTR_WHICH_8(_ATTR) /*nothing*/ |
| 262 | +#endif |
| 263 | +#define STDEXEC_ATTR_empty_bases STDEXEC_PROBE(~, 8) |
| 264 | + |
244 | 265 | //////////////////////////////////////////////////////////////////////////////////////////////////// |
245 | 266 | // warning push/pop portability macros |
246 | 267 | #if STDEXEC_NVCC() |
247 | | -# define STDEXEC_PRAGMA_PUSH() _Pragma("nv_diagnostic push") |
248 | | -# define STDEXEC_PRAGMA_POP() _Pragma("nv_diagnostic pop") |
249 | | -# define STDEXEC_PRAGMA_IGNORE_EDG(...) _Pragma(STDEXEC_STRINGIZE(nv_diag_suppress __VA_ARGS__)) |
| 268 | +# define STDEXEC_PRAGMA_PUSH() STDEXEC_PRAGMA(nv_diagnostic push) |
| 269 | +# define STDEXEC_PRAGMA_POP() STDEXEC_PRAGMA(nv_diagnostic pop) |
| 270 | +# define STDEXEC_PRAGMA_IGNORE_EDG(...) STDEXEC_PRAGMA(nv_diag_suppress __VA_ARGS__) |
250 | 271 | #elif STDEXEC_EDG() |
251 | 272 | # define STDEXEC_PRAGMA_PUSH() \ |
252 | | - _Pragma("diagnostic push") STDEXEC_PRAGMA_IGNORE_EDG(invalid_error_number) \ |
253 | | - STDEXEC_PRAGMA_IGNORE_EDG(invalid_error_tag) |
254 | | -# define STDEXEC_PRAGMA_POP() _Pragma("diagnostic pop") |
255 | | -# define STDEXEC_PRAGMA_IGNORE_EDG(...) _Pragma(STDEXEC_STRINGIZE(diag_suppress __VA_ARGS__)) |
| 273 | + STDEXEC_PRAGMA(diagnostic push) \ |
| 274 | + STDEXEC_PRAGMA_IGNORE_EDG(invalid_error_number) STDEXEC_PRAGMA_IGNORE_EDG(invalid_error_tag) |
| 275 | +# define STDEXEC_PRAGMA_POP() STDEXEC_PRAGMA(diagnostic pop) |
| 276 | +# define STDEXEC_PRAGMA_IGNORE_EDG(...) STDEXEC_PRAGMA(diag_suppress __VA_ARGS__) |
256 | 277 | #elif STDEXEC_CLANG() || STDEXEC_GCC() |
257 | 278 | # define STDEXEC_PRAGMA_PUSH() \ |
258 | | - _Pragma("GCC diagnostic push") STDEXEC_PRAGMA_IGNORE_GNU("-Wpragmas") \ |
259 | | - STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-pragmas") \ |
260 | | - STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-warning-option") \ |
261 | | - STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-attributes") \ |
262 | | - STDEXEC_PRAGMA_IGNORE_GNU("-Wattributes") |
263 | | -# define STDEXEC_PRAGMA_POP() _Pragma("GCC diagnostic pop") |
264 | | -# define STDEXEC_PRAGMA_IGNORE_GNU(...) \ |
265 | | - _Pragma(STDEXEC_STRINGIZE(GCC diagnostic ignored __VA_ARGS__)) |
| 279 | + STDEXEC_PRAGMA(GCC diagnostic push) \ |
| 280 | + STDEXEC_PRAGMA_IGNORE_GNU("-Wpragmas") \ |
| 281 | + STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-pragmas") \ |
| 282 | + STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-warning-option") \ |
| 283 | + STDEXEC_PRAGMA_IGNORE_GNU("-Wunknown-attributes") \ |
| 284 | + STDEXEC_PRAGMA_IGNORE_GNU("-Wattributes") |
| 285 | +# define STDEXEC_PRAGMA_POP() STDEXEC_PRAGMA(GCC diagnostic pop) |
| 286 | +# define STDEXEC_PRAGMA_IGNORE_GNU(...) STDEXEC_PRAGMA(GCC diagnostic ignored __VA_ARGS__) |
266 | 287 | #elif STDEXEC_MSVC() |
267 | | -# define STDEXEC_PRAGMA_PUSH() __pragma(warning(push)) |
268 | | -# define STDEXEC_PRAGMA_POP() __pragma(warning(pop)) |
269 | | -# define STDEXEC_PRAGMA_IGNORE_MSVC(...) __pragma(warning(disable : __VA_ARGS__)) |
| 288 | +# define STDEXEC_PRAGMA_PUSH() STDEXEC_PRAGMA(warning(push)) |
| 289 | +# define STDEXEC_PRAGMA_POP() STDEXEC_PRAGMA(warning(pop)) |
| 290 | +# define STDEXEC_PRAGMA_IGNORE_MSVC(...) STDEXEC_PRAGMA(warning(disable : __VA_ARGS__)) |
270 | 291 | #else |
271 | 292 | # define STDEXEC_PRAGMA_PUSH() |
272 | 293 | # define STDEXEC_PRAGMA_POP() |
|
0 commit comments