diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-17 02:34:46 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-17 22:53:08 +0100 |
| commit | 105e0815ee9fc6e77cac2b1925650029f7106de9 (patch) | |
| tree | 99bc8de37fc980eafdc51b196dfaa2bd510aefc2 /validation/preprocessor | |
| parent | 55324619d9fd35355629870b8d441eeb074e6739 (diff) | |
| parent | 23ce05a0a167397c3c3928d0963110ff01601fce (diff) | |
| download | sparse-dev-105e0815ee9fc6e77cac2b1925650029f7106de9.tar.gz | |
Merge branch 'predefs' into tipv0.6.0-rc1
* add predefined macros for __INTMAX_TYPE__, __INT_MAX__, ...
Diffstat (limited to 'validation/preprocessor')
| -rw-r--r-- | validation/preprocessor/predef-char-bit.c | 16 | ||||
| -rw-r--r-- | validation/preprocessor/predef-llp64.c | 9 | ||||
| -rw-r--r-- | validation/preprocessor/predef-lp32.c | 9 | ||||
| -rw-r--r-- | validation/preprocessor/predef-lp64.c | 9 | ||||
| -rw-r--r-- | validation/preprocessor/predef-max.c | 18 | ||||
| -rw-r--r-- | validation/preprocessor/predef-sizeof.c | 25 | ||||
| -rw-r--r-- | validation/preprocessor/predef-unsigned.c | 9 | ||||
| -rw-r--r-- | validation/preprocessor/predef.c | 57 |
8 files changed, 93 insertions, 59 deletions
diff --git a/validation/preprocessor/predef-char-bit.c b/validation/preprocessor/predef-char-bit.c deleted file mode 100644 index fed0166e..00000000 --- a/validation/preprocessor/predef-char-bit.c +++ /dev/null @@ -1,16 +0,0 @@ -#define TEST_BIT(X, T) if (__ ## X ## _BIT__ != 8 * sizeof(T)) return 1 - -int test(void) -{ - TEST_BIT(CHAR, char); - - return 0; -} - -/* - * check-name: predefined __<type>_BIT__ - * check-command: test-linearize -Wno-decl $file - * check-output-ignore - * - * check-output-contains: ret\\..*\\$0 - */ diff --git a/validation/preprocessor/predef-llp64.c b/validation/preprocessor/predef-llp64.c new file mode 100644 index 00000000..0a758690 --- /dev/null +++ b/validation/preprocessor/predef-llp64.c @@ -0,0 +1,9 @@ +#include "predef.c" + +/* + * check-name: predefined macros for LLP64 + * check-command: test-linearize -Wno-decl -msize-llp64 $file + * check-output-ignore + * + * check-output-contains: ret\\..*\\$0 + */ diff --git a/validation/preprocessor/predef-lp32.c b/validation/preprocessor/predef-lp32.c new file mode 100644 index 00000000..8fa2846c --- /dev/null +++ b/validation/preprocessor/predef-lp32.c @@ -0,0 +1,9 @@ +#include "predef.c" + +/* + * check-name: predefined macros for LP32 + * check-command: test-linearize -Wno-decl -m32 $file + * check-output-ignore + * + * check-output-contains: ret\\..*\\$0 + */ diff --git a/validation/preprocessor/predef-lp64.c b/validation/preprocessor/predef-lp64.c new file mode 100644 index 00000000..0173ca40 --- /dev/null +++ b/validation/preprocessor/predef-lp64.c @@ -0,0 +1,9 @@ +#include "predef.c" + +/* + * check-name: predefined macros for LP64 + * check-command: test-linearize -Wno-decl -m64 $file + * check-output-ignore + * + * check-output-contains: ret\\..*\\$0 + */ diff --git a/validation/preprocessor/predef-max.c b/validation/preprocessor/predef-max.c deleted file mode 100644 index ad4b7eaf..00000000 --- a/validation/preprocessor/predef-max.c +++ /dev/null @@ -1,18 +0,0 @@ -#define TEST_MAX(X, Z) if (X != ((~ Z) >> 1)) return 1 - -int test_max(void) -{ - TEST_MAX(__INT_MAX__, 0U); - TEST_MAX(__LONG_MAX__, 0UL); - TEST_MAX(__LONG_LONG_MAX__, 0ULL); - - return 0; -} - -/* - * check-name: predefined __<type>_MAX__ - * check-command: test-linearize -Wno-decl $file - * check-output-ignore - * - * check-output-contains: ret\\..*\\$0 - */ diff --git a/validation/preprocessor/predef-sizeof.c b/validation/preprocessor/predef-sizeof.c deleted file mode 100644 index 12be2dd1..00000000 --- a/validation/preprocessor/predef-sizeof.c +++ /dev/null @@ -1,25 +0,0 @@ -#define TEST(X, T) if (__SIZEOF_ ## X ## __ != sizeof(T)) return 1 - -int test_sizeof(void) -{ - TEST(SHORT, short); - TEST(INT, int); - TEST(LONG, long); - TEST(LONG_LONG, long long); - TEST(INT128, __int128); - TEST(SIZE_T, __SIZE_TYPE__); - TEST(POINTER, void*); - TEST(FLOAT, float); - TEST(DOUBLE, double); - TEST(LONG_DOUBLE, long double); - - return 0; -} - -/* - * check-name: predefined __SIZEOF_<type>__ - * check-command: test-linearize -Wno-decl $file - * check-output-ignore - * - * check-output-contains: ret\\..*\\$0 - */ diff --git a/validation/preprocessor/predef-unsigned.c b/validation/preprocessor/predef-unsigned.c new file mode 100644 index 00000000..0ae4d165 --- /dev/null +++ b/validation/preprocessor/predef-unsigned.c @@ -0,0 +1,9 @@ +#include "predef.c" + +/* + * check-name: predefined macros for -funsigned-char + * check-command: test-linearize -Wno-decl -funsigned-char $file + * check-output-ignore + * + * check-output-contains: ret\\..*\\$0 + */ diff --git a/validation/preprocessor/predef.c b/validation/preprocessor/predef.c new file mode 100644 index 00000000..5678aced --- /dev/null +++ b/validation/preprocessor/predef.c @@ -0,0 +1,57 @@ +#define BITS(T) (sizeof(T) * 8) +#define SIGN_BIT(T) (1ULL << (BITS(T) - 1)) +#define SMASK(T) (SIGN_BIT(T) - 1) +#define UMASK(T) (SIGN_BIT(T) | SMASK(T)) + +int test(void); +int test(void) +{ +#define TEST_BIT(X, T) if (__ ## X ## _BIT__ != BITS(T)) return 1 + TEST_BIT(CHAR, char); + +#define TEST_MAX(X, M) if (__ ## X ## _MAX__ != M) return 1 +#define TEST_SMAX(X, T) TEST_MAX(X, SMASK(T)) +#define TEST_UMAX(X, T) TEST_MAX(X, UMASK(T)) + TEST_SMAX(SCHAR, signed char); + TEST_SMAX(SHRT, short); + TEST_SMAX(INT, int); + TEST_SMAX(LONG, long); + TEST_SMAX(LONG_LONG, long long); + TEST_MAX( INT8, 0x7f); + TEST_MAX(UINT8, 0xffU); + TEST_MAX( INT16, 0x7fff); + TEST_MAX(UINT16, 0xffffU); + TEST_MAX( INT32, 0x7fffffff); + TEST_MAX(UINT32, 0xffffffffU); + TEST_MAX( INT64, 0x7fffffffffffffffLL); + TEST_MAX(UINT64, 0xffffffffffffffffULL); + TEST_SMAX(INTMAX, __INTMAX_TYPE__); + TEST_UMAX(UINTMAX, __UINTMAX_TYPE__); + TEST_SMAX(INTPTR, __INTPTR_TYPE__); + TEST_UMAX(UINTPTR, __UINTPTR_TYPE__); + TEST_SMAX(PTRDIFF, __PTRDIFF_TYPE__); + TEST_UMAX(SIZE, __SIZE_TYPE__); + +#define TEST_SIZEOF(X, T) if (__SIZEOF_ ## X ## __ != sizeof(T)) return 1 + TEST_SIZEOF(SHORT, short); + TEST_SIZEOF(INT, int); + TEST_SIZEOF(LONG, long); + TEST_SIZEOF(LONG_LONG, long long); + TEST_SIZEOF(INT128, __int128); + TEST_SIZEOF(PTRDIFF_T, __PTRDIFF_TYPE__); + TEST_SIZEOF(SIZE_T, __SIZE_TYPE__); + TEST_SIZEOF(POINTER, void*); + TEST_SIZEOF(FLOAT, float); + TEST_SIZEOF(DOUBLE, double); + TEST_SIZEOF(LONG_DOUBLE, long double); + + return 0; +} + +/* + * check-name: predefined macros: __SIZEOF_<type>__, ... + * check-command: test-linearize -Wno-decl $file + * check-output-ignore + * + * check-output-contains: ret\\..*\\$0 + */ |
