Merging upstream version 0.7.1 (Closes: #991419).
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
05c588e9d7
commit
9e09e0ef69
99 changed files with 6727 additions and 943 deletions
|
@ -34,7 +34,20 @@
|
|||
#include <ck_stdint.h>
|
||||
#include <ck_stdbool.h>
|
||||
|
||||
#ifndef CK_USE_CC_BUILTINS
|
||||
/*
|
||||
* Default to using builtins for clang analyzer, coverity, and sparse:
|
||||
* inline assembly is often too opaque for useful analysis. Override
|
||||
* the defaults by defining CK_USE_CC_BUILTINS=0 or 1.
|
||||
*/
|
||||
#if !defined(CK_USE_CC_BUILTINS)
|
||||
#if defined(__clang_analyzer__) || defined(__COVERITY__) || defined(__CHECKER__)
|
||||
#define CK_USE_CC_BUILTINS 1
|
||||
#else
|
||||
#define CK_USE_CC_BUILTINS 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !CK_USE_CC_BUILTINS
|
||||
#if defined(__x86_64__)
|
||||
#include "gcc/x86_64/ck_pr.h"
|
||||
#elif defined(__x86__)
|
||||
|
@ -43,6 +56,8 @@
|
|||
#include "gcc/sparcv9/ck_pr.h"
|
||||
#elif defined(__ppc64__)
|
||||
#include "gcc/ppc64/ck_pr.h"
|
||||
#elif defined(__s390x__)
|
||||
#include "gcc/s390x/ck_pr.h"
|
||||
#elif defined(__ppc__)
|
||||
#include "gcc/ppc/ck_pr.h"
|
||||
#elif defined(__arm__)
|
||||
|
@ -613,8 +628,8 @@ CK_PR_BTX_S(bts, 16, uint16_t, |,)
|
|||
}
|
||||
|
||||
#define CK_PR_UNARY_Z(K, S, M, T, P, C, Z) \
|
||||
CK_CC_INLINE static void \
|
||||
ck_pr_##K##_##S##_zero(M *target, bool *zero) \
|
||||
CK_CC_INLINE static bool \
|
||||
ck_pr_##K##_##S##_is_zero(M *target) \
|
||||
{ \
|
||||
T previous; \
|
||||
C punt; \
|
||||
|
@ -625,12 +640,21 @@ CK_PR_BTX_S(bts, 16, uint16_t, |,)
|
|||
(C)(previous P 1), \
|
||||
&previous) == false) \
|
||||
ck_pr_stall(); \
|
||||
*zero = previous == (T)Z; \
|
||||
return previous == (T)Z; \
|
||||
}
|
||||
|
||||
#define CK_PR_UNARY_Z_STUB(K, S, M) \
|
||||
CK_CC_INLINE static void \
|
||||
ck_pr_##K##_##S##_zero(M *target, bool *zero) \
|
||||
{ \
|
||||
*zero = ck_pr_##K##_##S##_is_zero(target); \
|
||||
return; \
|
||||
}
|
||||
|
||||
#define CK_PR_UNARY_S(K, X, S, M) CK_PR_UNARY(K, X, S, M, M)
|
||||
#define CK_PR_UNARY_Z_S(K, S, M, P, Z) CK_PR_UNARY_Z(K, S, M, M, P, M, Z)
|
||||
#define CK_PR_UNARY_Z_S(K, S, M, P, Z) \
|
||||
CK_PR_UNARY_Z(K, S, M, M, P, M, Z) \
|
||||
CK_PR_UNARY_Z_STUB(K, S, M)
|
||||
|
||||
#if defined(CK_F_PR_LOAD_CHAR) && defined(CK_F_PR_CAS_CHAR_VALUE)
|
||||
|
||||
|
@ -642,6 +666,8 @@ CK_PR_UNARY_S(inc, add, char, char)
|
|||
#ifndef CK_F_PR_INC_CHAR_ZERO
|
||||
#define CK_F_PR_INC_CHAR_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, char, char, +, -1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, char, char)
|
||||
#endif /* CK_F_PR_INC_CHAR_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_CHAR
|
||||
|
@ -652,6 +678,8 @@ CK_PR_UNARY_S(dec, sub, char, char)
|
|||
#ifndef CK_F_PR_DEC_CHAR_ZERO
|
||||
#define CK_F_PR_DEC_CHAR_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, char, char, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, char, char)
|
||||
#endif /* CK_F_PR_DEC_CHAR_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_CHAR && CK_F_PR_CAS_CHAR_VALUE */
|
||||
|
@ -666,6 +694,8 @@ CK_PR_UNARY_S(inc, add, int, int)
|
|||
#ifndef CK_F_PR_INC_INT_ZERO
|
||||
#define CK_F_PR_INC_INT_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, int, int, +, -1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, int, int)
|
||||
#endif /* CK_F_PR_INC_INT_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_INT
|
||||
|
@ -676,6 +706,8 @@ CK_PR_UNARY_S(dec, sub, int, int)
|
|||
#ifndef CK_F_PR_DEC_INT_ZERO
|
||||
#define CK_F_PR_DEC_INT_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, int, int, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, int, int)
|
||||
#endif /* CK_F_PR_DEC_INT_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_INT && CK_F_PR_CAS_INT_VALUE */
|
||||
|
@ -705,6 +737,8 @@ CK_PR_UNARY_S(inc, add, uint, unsigned int)
|
|||
#ifndef CK_F_PR_INC_UINT_ZERO
|
||||
#define CK_F_PR_INC_UINT_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, uint, unsigned int, +, UINT_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, uint, unsigned int)
|
||||
#endif /* CK_F_PR_INC_UINT_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_UINT
|
||||
|
@ -715,6 +749,8 @@ CK_PR_UNARY_S(dec, sub, uint, unsigned int)
|
|||
#ifndef CK_F_PR_DEC_UINT_ZERO
|
||||
#define CK_F_PR_DEC_UINT_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, uint, unsigned int, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, uint, unsigned int)
|
||||
#endif /* CK_F_PR_DEC_UINT_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_UINT && CK_F_PR_CAS_UINT_VALUE */
|
||||
|
@ -729,6 +765,8 @@ CK_PR_UNARY(inc, add, ptr, void, uintptr_t)
|
|||
#ifndef CK_F_PR_INC_PTR_ZERO
|
||||
#define CK_F_PR_INC_PTR_ZERO
|
||||
CK_PR_UNARY_Z(inc, ptr, void, uintptr_t, +, void *, UINT_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, ptr, void)
|
||||
#endif /* CK_F_PR_INC_PTR_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_PTR
|
||||
|
@ -739,6 +777,8 @@ CK_PR_UNARY(dec, sub, ptr, void, uintptr_t)
|
|||
#ifndef CK_F_PR_DEC_PTR_ZERO
|
||||
#define CK_F_PR_DEC_PTR_ZERO
|
||||
CK_PR_UNARY_Z(dec, ptr, void, uintptr_t, -, void *, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, ptr, void)
|
||||
#endif /* CK_F_PR_DEC_PTR_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_PTR && CK_F_PR_CAS_PTR_VALUE */
|
||||
|
@ -753,6 +793,8 @@ CK_PR_UNARY_S(inc, add, 64, uint64_t)
|
|||
#ifndef CK_F_PR_INC_64_ZERO
|
||||
#define CK_F_PR_INC_64_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, 64, uint64_t, +, UINT64_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, 64, uint64_t)
|
||||
#endif /* CK_F_PR_INC_64_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_64
|
||||
|
@ -763,6 +805,8 @@ CK_PR_UNARY_S(dec, sub, 64, uint64_t)
|
|||
#ifndef CK_F_PR_DEC_64_ZERO
|
||||
#define CK_F_PR_DEC_64_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, 64, uint64_t, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, 64, uint64_t)
|
||||
#endif /* CK_F_PR_DEC_64_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_64 && CK_F_PR_CAS_64_VALUE */
|
||||
|
@ -777,6 +821,8 @@ CK_PR_UNARY_S(inc, add, 32, uint32_t)
|
|||
#ifndef CK_F_PR_INC_32_ZERO
|
||||
#define CK_F_PR_INC_32_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, 32, uint32_t, +, UINT32_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, 32, uint32_t)
|
||||
#endif /* CK_F_PR_INC_32_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_32
|
||||
|
@ -787,6 +833,8 @@ CK_PR_UNARY_S(dec, sub, 32, uint32_t)
|
|||
#ifndef CK_F_PR_DEC_32_ZERO
|
||||
#define CK_F_PR_DEC_32_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, 32, uint32_t, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, 32, uint32_t)
|
||||
#endif /* CK_F_PR_DEC_32_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_32 && CK_F_PR_CAS_32_VALUE */
|
||||
|
@ -801,6 +849,8 @@ CK_PR_UNARY_S(inc, add, 16, uint16_t)
|
|||
#ifndef CK_F_PR_INC_16_ZERO
|
||||
#define CK_F_PR_INC_16_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, 16, uint16_t, +, UINT16_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, 16, uint16_t)
|
||||
#endif /* CK_F_PR_INC_16_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_16
|
||||
|
@ -811,6 +861,8 @@ CK_PR_UNARY_S(dec, sub, 16, uint16_t)
|
|||
#ifndef CK_F_PR_DEC_16_ZERO
|
||||
#define CK_F_PR_DEC_16_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, 16, uint16_t, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, 16, uint16_t)
|
||||
#endif /* CK_F_PR_DEC_16_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_16 && CK_F_PR_CAS_16_VALUE */
|
||||
|
@ -825,6 +877,8 @@ CK_PR_UNARY_S(inc, add, 8, uint8_t)
|
|||
#ifndef CK_F_PR_INC_8_ZERO
|
||||
#define CK_F_PR_INC_8_ZERO
|
||||
CK_PR_UNARY_Z_S(inc, 8, uint8_t, +, UINT8_MAX)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(inc, 8, uint8_t)
|
||||
#endif /* CK_F_PR_INC_8_ZERO */
|
||||
|
||||
#ifndef CK_F_PR_DEC_8
|
||||
|
@ -835,6 +889,8 @@ CK_PR_UNARY_S(dec, sub, 8, uint8_t)
|
|||
#ifndef CK_F_PR_DEC_8_ZERO
|
||||
#define CK_F_PR_DEC_8_ZERO
|
||||
CK_PR_UNARY_Z_S(dec, 8, uint8_t, -, 1)
|
||||
#else
|
||||
CK_PR_UNARY_Z_STUB(dec, 8, uint8_t)
|
||||
#endif /* CK_F_PR_DEC_8_ZERO */
|
||||
|
||||
#endif /* CK_F_PR_LOAD_8 && CK_F_PR_CAS_8_VALUE */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue