Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/openmp/runtime/src/kmp_debug.h
35258 views
1
/*
2
* kmp_debug.h -- debug / assertion code for Assure library
3
*/
4
5
//===----------------------------------------------------------------------===//
6
//
7
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
8
// See https://llvm.org/LICENSE.txt for license information.
9
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef KMP_DEBUG_H
14
#define KMP_DEBUG_H
15
16
#include <stdarg.h>
17
18
#ifdef __cplusplus
19
extern "C" {
20
#endif // __cplusplus
21
22
// -----------------------------------------------------------------------------
23
// Build-time assertion.
24
25
// New C++11 style build assert
26
#define KMP_BUILD_ASSERT(expr) static_assert(expr, "Build condition error")
27
28
// -----------------------------------------------------------------------------
29
// Run-time assertions.
30
31
extern void __kmp_dump_debug_buffer(void);
32
33
#ifdef KMP_USE_ASSERT
34
extern int __kmp_debug_assert(char const *expr, char const *file, int line);
35
#ifdef KMP_DEBUG
36
#define KMP_ASSERT(cond) \
37
if (!(cond)) { \
38
__kmp_debug_assert(#cond, __FILE__, __LINE__); \
39
}
40
#define KMP_ASSERT2(cond, msg) \
41
if (!(cond)) { \
42
__kmp_debug_assert((msg), __FILE__, __LINE__); \
43
}
44
#define KMP_DEBUG_ASSERT(cond) KMP_ASSERT(cond)
45
#define KMP_DEBUG_ASSERT2(cond, msg) KMP_ASSERT2(cond, msg)
46
#define KMP_DEBUG_USE_VAR(x) /* Nothing (it is used!) */
47
#else
48
// Do not expose condition in release build. Use "assertion failure".
49
#define KMP_ASSERT(cond) \
50
if (!(cond)) { \
51
__kmp_debug_assert("assertion failure", __FILE__, __LINE__); \
52
}
53
#define KMP_ASSERT2(cond, msg) KMP_ASSERT(cond)
54
#define KMP_DEBUG_ASSERT(cond) /* Nothing */
55
#define KMP_DEBUG_ASSERT2(cond, msg) /* Nothing */
56
#define KMP_DEBUG_USE_VAR(x) ((void)(x))
57
#endif // KMP_DEBUG
58
#else
59
#define KMP_ASSERT(cond) /* Nothing */
60
#define KMP_ASSERT2(cond, msg) /* Nothing */
61
#define KMP_DEBUG_ASSERT(cond) /* Nothing */
62
#define KMP_DEBUG_ASSERT2(cond, msg) /* Nothing */
63
#define KMP_DEBUG_USE_VAR(x) ((void)(x))
64
#endif // KMP_USE_ASSERT
65
66
#ifdef KMP_DEBUG
67
extern void __kmp_debug_printf_stdout(char const *format, ...);
68
#endif
69
extern void __kmp_debug_printf(char const *format, ...);
70
71
#ifdef KMP_DEBUG
72
73
extern int kmp_a_debug;
74
extern int kmp_b_debug;
75
extern int kmp_c_debug;
76
extern int kmp_d_debug;
77
extern int kmp_e_debug;
78
extern int kmp_f_debug;
79
extern int kmp_diag;
80
81
#define KA_TRACE(d, x) \
82
if (kmp_a_debug >= d) { \
83
__kmp_debug_printf x; \
84
}
85
#define KB_TRACE(d, x) \
86
if (kmp_b_debug >= d) { \
87
__kmp_debug_printf x; \
88
}
89
#define KC_TRACE(d, x) \
90
if (kmp_c_debug >= d) { \
91
__kmp_debug_printf x; \
92
}
93
#define KD_TRACE(d, x) \
94
if (kmp_d_debug >= d) { \
95
__kmp_debug_printf x; \
96
}
97
#define KE_TRACE(d, x) \
98
if (kmp_e_debug >= d) { \
99
__kmp_debug_printf x; \
100
}
101
#define KF_TRACE(d, x) \
102
if (kmp_f_debug >= d) { \
103
__kmp_debug_printf x; \
104
}
105
#define K_DIAG(d, x) \
106
{ \
107
if (kmp_diag == d) { \
108
__kmp_debug_printf_stdout x; \
109
} \
110
}
111
112
#define KA_DUMP(d, x) \
113
if (kmp_a_debug >= d) { \
114
int ks; \
115
__kmp_disable(&ks); \
116
(x); \
117
__kmp_enable(ks); \
118
}
119
#define KB_DUMP(d, x) \
120
if (kmp_b_debug >= d) { \
121
int ks; \
122
__kmp_disable(&ks); \
123
(x); \
124
__kmp_enable(ks); \
125
}
126
#define KC_DUMP(d, x) \
127
if (kmp_c_debug >= d) { \
128
int ks; \
129
__kmp_disable(&ks); \
130
(x); \
131
__kmp_enable(ks); \
132
}
133
#define KD_DUMP(d, x) \
134
if (kmp_d_debug >= d) { \
135
int ks; \
136
__kmp_disable(&ks); \
137
(x); \
138
__kmp_enable(ks); \
139
}
140
#define KE_DUMP(d, x) \
141
if (kmp_e_debug >= d) { \
142
int ks; \
143
__kmp_disable(&ks); \
144
(x); \
145
__kmp_enable(ks); \
146
}
147
#define KF_DUMP(d, x) \
148
if (kmp_f_debug >= d) { \
149
int ks; \
150
__kmp_disable(&ks); \
151
(x); \
152
__kmp_enable(ks); \
153
}
154
155
#else
156
157
#define KA_TRACE(d, x) /* nothing to do */
158
#define KB_TRACE(d, x) /* nothing to do */
159
#define KC_TRACE(d, x) /* nothing to do */
160
#define KD_TRACE(d, x) /* nothing to do */
161
#define KE_TRACE(d, x) /* nothing to do */
162
#define KF_TRACE(d, x) /* nothing to do */
163
#define K_DIAG(d, x) \
164
{} /* nothing to do */
165
166
#define KA_DUMP(d, x) /* nothing to do */
167
#define KB_DUMP(d, x) /* nothing to do */
168
#define KC_DUMP(d, x) /* nothing to do */
169
#define KD_DUMP(d, x) /* nothing to do */
170
#define KE_DUMP(d, x) /* nothing to do */
171
#define KF_DUMP(d, x) /* nothing to do */
172
173
#endif // KMP_DEBUG
174
175
#ifdef __cplusplus
176
} // extern "C"
177
#endif // __cplusplus
178
179
#endif /* KMP_DEBUG_H */
180
181