diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2022-12-08 17:35:13 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2022-12-08 17:35:13 +0100 |
commit | 1b1ad4ed2919fbc68d8905cfec38a968821ce372 (patch) | |
tree | 5532a7e21342f88f4df7cd42139e012b6bd1dbe6 /tests/test-stdalign.c | |
parent | 63b5c0db2dc641876e58d232220c7efc2b2c2423 (diff) | |
parent | fa82e850f8d894ae4b9cd75bd12ffeeb65974d50 (diff) |
Merge branch 'release/debian/1.1-1_experimental1'debian/1.1-1_experimental1
Diffstat (limited to 'tests/test-stdalign.c')
-rw-r--r-- | tests/test-stdalign.c | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/tests/test-stdalign.c b/tests/test-stdalign.c index a18f8bc..a935554 100644 --- a/tests/test-stdalign.c +++ b/tests/test-stdalign.c @@ -3,7 +3,7 @@ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -18,13 +18,9 @@ #include <config.h> -#include <stdalign.h> - #include <stddef.h> #include <stdint.h> -#include "verify.h" - #include "macros.h" typedef long double longdouble; @@ -33,32 +29,21 @@ typedef struct { char a[2]; } struct2; typedef struct { char a[3]; } struct3; typedef struct { char a[4]; } struct4; -verify (__alignof_is_defined == 1); -#ifndef alignof -# error "alignof is not a macro" -#endif - -#if __alignas_is_defined -verify (__alignas_is_defined == 1); -# ifndef alignas -# error "alignas is not a macro" -# endif +#if (202311 <= __STDC_VERSION__ || __alignas_is_defined \ + || 201103 <= __cplusplus) /* mingw can go up only to 8. 8 is all that GNU Emacs needs, so let's limit the test to 8 for now. */ # define TEST_ALIGNMENT 8 #else -# define _Alignas(alignment) # define alignas(alignment) # define TEST_ALIGNMENT 1 #endif #define CHECK_STATIC(type) \ typedef struct { char slot1; type slot2; } type##_helper; \ - verify (alignof (type) == offsetof (type##_helper, slot2)); \ - verify (_Alignof (type) == alignof (type)); \ + static_assert (alignof (type) == offsetof (type##_helper, slot2)); \ const int type##_alignment = alignof (type); \ - type alignas (TEST_ALIGNMENT) static_##type##_alignas; \ - type _Alignas (TEST_ALIGNMENT) static_##type##_Alignas + type alignas (TEST_ALIGNMENT) static_##type##_alignas #define CHECK_ALIGNED(var) ASSERT ((uintptr_t) &(var) % TEST_ALIGNMENT == 0) @@ -96,31 +81,19 @@ main () return 77; #else CHECK_ALIGNED (static_char_alignas); - CHECK_ALIGNED (static_char_Alignas); CHECK_ALIGNED (static_short_alignas); - CHECK_ALIGNED (static_short_Alignas); CHECK_ALIGNED (static_int_alignas); - CHECK_ALIGNED (static_int_Alignas); CHECK_ALIGNED (static_long_alignas); - CHECK_ALIGNED (static_long_Alignas); # ifdef INT64_MAX CHECK_ALIGNED (static_int64_t_alignas); - CHECK_ALIGNED (static_int64_t_Alignas); # endif CHECK_ALIGNED (static_float_alignas); - CHECK_ALIGNED (static_float_Alignas); CHECK_ALIGNED (static_double_alignas); - CHECK_ALIGNED (static_double_Alignas); /* CHECK_ALIGNED (static_longdouble_alignas); */ - /* CHECK_ALIGNED (static_longdouble_Alignas); */ CHECK_ALIGNED (static_struct1_alignas); - CHECK_ALIGNED (static_struct1_Alignas); CHECK_ALIGNED (static_struct2_alignas); - CHECK_ALIGNED (static_struct2_Alignas); CHECK_ALIGNED (static_struct3_alignas); - CHECK_ALIGNED (static_struct3_Alignas); CHECK_ALIGNED (static_struct4_alignas); - CHECK_ALIGNED (static_struct4_Alignas); return 0; #endif } |