OLD | NEW |
1 /* | 1 /* |
2 ****************************************************************************** | 2 ****************************************************************************** |
3 * | 3 * |
4 * Copyright (C) 1997-2015, International Business Machines | 4 * Copyright (C) 1997-2015, International Business Machines |
5 * Corporation and others. All Rights Reserved. | 5 * Corporation and others. All Rights Reserved. |
6 * | 6 * |
7 ****************************************************************************** | 7 ****************************************************************************** |
8 * | 8 * |
9 * FILE NAME : putilimp.h | 9 * FILE NAME : putilimp.h |
10 * | 10 * |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 #endif | 229 #endif |
230 | 230 |
231 | 231 |
232 /** | 232 /** |
233 * \def U_HAVE_CLANG_ATOMICS | 233 * \def U_HAVE_CLANG_ATOMICS |
234 * Defines whether Clang c11 style built-in atomics are avaialable. | 234 * Defines whether Clang c11 style built-in atomics are avaialable. |
235 * These are used in preference to gcc atomics when both are available. | 235 * These are used in preference to gcc atomics when both are available. |
236 */ | 236 */ |
237 #ifdef U_HAVE_CLANG_ATOMICS | 237 #ifdef U_HAVE_CLANG_ATOMICS |
238 /* Use the predefined value. */ | 238 /* Use the predefined value. */ |
239 #elif defined(__clang__) && \ | 239 #elif !defined(__clang__) |
240 __has_builtin(__c11_atomic_load) && \ | 240 # define U_HAVE_CLANG_ATOMICS 0 |
241 __has_builtin(__c11_atomic_store) && \ | 241 #else |
242 __has_builtin(__c11_atomic_fetch_add) && \ | 242 #if __has_builtin(__c11_atomic_load) && \ |
243 __has_builtin(__c11_atomic_fetch_sub) | 243 __has_builtin(__c11_atomic_store) && \ |
| 244 __has_builtin(__c11_atomic_fetch_add) && \ |
| 245 __has_builtin(__c11_atomic_fetch_sub) |
244 # define U_HAVE_CLANG_ATOMICS 1 | 246 # define U_HAVE_CLANG_ATOMICS 1 |
245 #else | 247 #else |
246 # define U_HAVE_CLANG_ATOMICS 0 | 248 # define U_HAVE_CLANG_ATOMICS 0 |
247 #endif | 249 #endif |
| 250 #endif |
248 | 251 |
249 /*===========================================================================*/ | 252 /*===========================================================================*/ |
250 /** @{ Code alignment */ | 253 /** @{ Code alignment */ |
251 /*===========================================================================*/ | 254 /*===========================================================================*/ |
252 | 255 |
253 /** | 256 /** |
254 * \def U_ALIGN_CODE | 257 * \def U_ALIGN_CODE |
255 * This is used to align code fragments to a specific byte boundary. | 258 * This is used to align code fragments to a specific byte boundary. |
256 * This is useful for getting consistent performance test results. | 259 * This is useful for getting consistent performance test results. |
257 * @internal | 260 * @internal |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 /* also _C_TS_calloc(x) */ | 628 /* also _C_TS_calloc(x) */ |
626 #else | 629 #else |
627 /* C defaults */ | 630 /* C defaults */ |
628 # define uprv_default_malloc(x) malloc(x) | 631 # define uprv_default_malloc(x) malloc(x) |
629 # define uprv_default_realloc(x,y) realloc(x,y) | 632 # define uprv_default_realloc(x,y) realloc(x,y) |
630 # define uprv_default_free(x) free(x) | 633 # define uprv_default_free(x) free(x) |
631 #endif | 634 #endif |
632 | 635 |
633 | 636 |
634 #endif | 637 #endif |
OLD | NEW |