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