]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/compute/detail/diagnostic.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / compute / detail / diagnostic.hpp
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
3 //
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
7 //
8 // See http://boostorg.github.com/compute for more information.
9 //---------------------------------------------------------------------------//
10
11 #ifndef BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP
12 #define BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP
13
14 // Macros for suppressing warnings for GCC version 4.6 or later. Usage:
15 //
16 // BOOST_COMPUTE_BOOST_COMPUTE_GCC_DIAG_OFF(sign-compare);
17 // if(a < b){
18 // BOOST_COMPUTE_BOOST_COMPUTE_GCC_DIAG_ON(sign-compare);
19 //
20 // Source: https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
21 #if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
22 #define BOOST_COMPUTE_GCC_DIAG_STR(s) #s
23 #define BOOST_COMPUTE_GCC_DIAG_JOINSTR(x,y) BOOST_COMPUTE_GCC_DIAG_STR(x ## y)
24 # define BOOST_COMPUTE_GCC_DIAG_DO_PRAGMA(x) _Pragma (#x)
25 # define BOOST_COMPUTE_GCC_DIAG_PRAGMA(x) BOOST_COMPUTE_GCC_DIAG_DO_PRAGMA(GCC diagnostic x)
26 # if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
27 # define BOOST_COMPUTE_GCC_DIAG_OFF(x) BOOST_COMPUTE_GCC_DIAG_PRAGMA(push) \
28 BOOST_COMPUTE_GCC_DIAG_PRAGMA(ignored BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
29 # define BOOST_COMPUTE_GCC_DIAG_ON(x) BOOST_COMPUTE_GCC_DIAG_PRAGMA(pop)
30 # else
31 # define BOOST_COMPUTE_GCC_DIAG_OFF(x) \
32 BOOST_COMPUTE_GCC_DIAG_PRAGMA(ignored BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
33 # define BOOST_COMPUTE_GCC_DIAG_ON(x) \
34 BOOST_COMPUTE_GCC_DIAG_PRAGMA(warning BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
35 # endif
36 #else // Ensure these macros do nothing for other compilers.
37 # define BOOST_COMPUTE_GCC_DIAG_OFF(x)
38 # define BOOST_COMPUTE_GCC_DIAG_ON(x)
39 #endif
40
41 // Macros for suppressing warnings for Clang.
42 //
43 // BOOST_COMPUTE_BOOST_COMPUTE_CLANG_DIAG_OFF(sign-compare);
44 // if(a < b){
45 // BOOST_COMPUTE_BOOST_COMPUTE_CLANG_DIAG_ON(sign-compare);
46 //
47 // Source: https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
48 #ifdef __clang__
49 # define BOOST_COMPUTE_CLANG_DIAG_STR(s) # s
50 // stringize s to "no-sign-compare"
51 # define BOOST_COMPUTE_CLANG_DIAG_JOINSTR(x,y) BOOST_COMPUTE_CLANG_DIAG_STR(x ## y)
52 // join -W with no-unused-variable to "-Wno-sign-compare"
53 # define BOOST_COMPUTE_CLANG_DIAG_DO_PRAGMA(x) _Pragma (#x)
54 // _Pragma is unary operator #pragma ("")
55 # define BOOST_COMPUTE_CLANG_DIAG_PRAGMA(x) \
56 BOOST_COMPUTE_CLANG_DIAG_DO_PRAGMA(clang diagnostic x)
57 # define BOOST_COMPUTE_CLANG_DIAG_OFF(x) BOOST_COMPUTE_CLANG_DIAG_PRAGMA(push) \
58 BOOST_COMPUTE_CLANG_DIAG_PRAGMA(ignored BOOST_COMPUTE_CLANG_DIAG_JOINSTR(-W,x))
59 // For example: #pragma clang diagnostic ignored "-Wno-sign-compare"
60 # define BOOST_COMPUTE_CLANG_DIAG_ON(x) BOOST_COMPUTE_CLANG_DIAG_PRAGMA(pop)
61 // For example: #pragma clang diagnostic warning "-Wno-sign-compare"
62 #else // Ensure these macros do nothing for other compilers.
63 # define BOOST_COMPUTE_CLANG_DIAG_OFF(x)
64 # define BOOST_COMPUTE_CLANG_DIAG_ON(x)
65 # define BOOST_COMPUTE_CLANG_DIAG_PRAGMA(x)
66 #endif
67
68 // Macros for suppressing warnings for MSVC. Usage:
69 //
70 // BOOST_COMPUTE_BOOST_COMPUTE_MSVC_DIAG_OFF(4018); //sign-compare
71 // if(a < b){
72 // BOOST_COMPUTE_BOOST_COMPUTE_MSVC_DIAG_ON(4018);
73 //
74 #if defined(_MSC_VER)
75 # define BOOST_COMPUTE_MSVC_DIAG_DO_PRAGMA(x) __pragma(x)
76 # define BOOST_COMPUTE_MSVC_DIAG_PRAGMA(x) \
77 BOOST_COMPUTE_MSVC_DIAG_DO_PRAGMA(warning(x))
78 # define BOOST_COMPUTE_MSVC_DIAG_OFF(x) BOOST_COMPUTE_MSVC_DIAG_PRAGMA(push) \
79 BOOST_COMPUTE_MSVC_DIAG_PRAGMA(disable: x)
80 # define BOOST_COMPUTE_MSVC_DIAG_ON(x) BOOST_COMPUTE_MSVC_DIAG_PRAGMA(pop)
81 #else // Ensure these macros do nothing for other compilers.
82 # define BOOST_COMPUTE_MSVC_DIAG_OFF(x)
83 # define BOOST_COMPUTE_MSVC_DIAG_ON(x)
84 #endif
85
86 // Macros for suppressing warnings for GCC, Clang and MSVC. Usage:
87 //
88 // BOOST_COMPUTE_DIAG_OFF(sign-compare, sign-compare, 4018);
89 // if(a < b){
90 // BOOST_COMPUTE_DIAG_ON(sign-compare, sign-compare, 4018);
91 //
92 #if defined(_MSC_VER) // MSVC
93 # define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_MSVC_DIAG_OFF(msvc)
94 # define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_MSVC_DIAG_ON(msvc)
95 #elif defined(__clang__) // Clang
96 # define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_CLANG_DIAG_OFF(clang)
97 # define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_CLANG_DIAG_ON(clang)
98 #elif defined(__GNUC__) // GCC/G++
99 # define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_GCC_DIAG_OFF(gcc)
100 # define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_GCC_DIAG_ON(gcc)
101 #else // Ensure these macros do nothing for other compilers.
102 # define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc)
103 # define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc)
104 #endif
105
106 #define BOOST_COMPUTE_DISABLE_DEPRECATED_DECLARATIONS() \
107 BOOST_COMPUTE_DIAG_OFF(deprecated-declarations, deprecated-declarations, 4996)
108 #define BOOST_COMPUTE_ENABLE_DEPRECATED_DECLARATIONS() \
109 BOOST_COMPUTE_DIAG_ON(deprecated-declarations, deprecated-declarations, 4996);
110
111
112 #endif /* BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP */