diff options
author | Vitaly Cheptsov <4348897+vit9696@users.noreply.github.com> | 2021-09-20 16:18:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-20 06:18:41 -0700 |
commit | 77cb1fcda28965de518051d3db752b2dbbe4bf4a (patch) | |
tree | 9618845abfcf65c09f806e272bd8ca8730ba9a7b /utils | |
parent | a5e1958d4ab975057e0ce5358d1ac0329bb0cf74 (diff) | |
download | pycparser-77cb1fcda28965de518051d3db752b2dbbe4bf4a.tar.gz |
Improve _Atomic support and add more tests (#431)
* Improve _Atomic support with more tests and fix typedef handling
* Remove duplicated tests and check the generated code for typedefs
* Add typedef testing to parser as well
Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/fake_libc_include/_fake_defines.h | 15 | ||||
-rw-r--r-- | utils/fake_libc_include/_fake_typedefs.h | 48 | ||||
-rw-r--r-- | utils/fake_libc_include/stdatomic.h | 2 |
3 files changed, 65 insertions, 0 deletions
diff --git a/utils/fake_libc_include/_fake_defines.h b/utils/fake_libc_include/_fake_defines.h index f2e8dd4..86b5c66 100644 --- a/utils/fake_libc_include/_fake_defines.h +++ b/utils/fake_libc_include/_fake_defines.h @@ -236,4 +236,19 @@ /* C11 assert.h defines */ #define static_assert _Static_assert +/* C11 stdatomic.h defines */ +#define ATOMIC_BOOL_LOCK_FREE 0 +#define ATOMIC_CHAR_LOCK_FREE 0 +#define ATOMIC_CHAR16_T_LOCK_FREE 0 +#define ATOMIC_CHAR32_T_LOCK_FREE 0 +#define ATOMIC_WCHAR_T_LOCK_FREE 0 +#define ATOMIC_SHORT_LOCK_FREE 0 +#define ATOMIC_INT_LOCK_FREE 0 +#define ATOMIC_LONG_LOCK_FREE 0 +#define ATOMIC_LLONG_LOCK_FREE 0 +#define ATOMIC_POINTER_LOCK_FREE 0 +#define ATOMIC_VAR_INIT(value) (value) +#define ATOMIC_FLAG_INIT { 0 } +#define kill_dependency(y) (y) + #endif diff --git a/utils/fake_libc_include/_fake_typedefs.h b/utils/fake_libc_include/_fake_typedefs.h index dfcc653..9a85d40 100644 --- a/utils/fake_libc_include/_fake_typedefs.h +++ b/utils/fake_libc_include/_fake_typedefs.h @@ -169,4 +169,52 @@ typedef struct xcb_connection_t xcb_connection_t; typedef uint32_t xcb_window_t; typedef uint32_t xcb_visualid_t; +/* C11 stdatomic.h types */ +typedef _Atomic(_Bool) atomic_bool; +typedef _Atomic(char) atomic_char; +typedef _Atomic(signed char) atomic_schar; +typedef _Atomic(unsigned char) atomic_uchar; +typedef _Atomic(short) atomic_short; +typedef _Atomic(unsigned short) atomic_ushort; +typedef _Atomic(int) atomic_int; +typedef _Atomic(unsigned int) atomic_uint; +typedef _Atomic(long) atomic_long; +typedef _Atomic(unsigned long) atomic_ulong; +typedef _Atomic(long long) atomic_llong; +typedef _Atomic(unsigned long long) atomic_ullong; +typedef _Atomic(uint_least16_t) atomic_char16_t; +typedef _Atomic(uint_least32_t) atomic_char32_t; +typedef _Atomic(wchar_t) atomic_wchar_t; +typedef _Atomic(int_least8_t) atomic_int_least8_t; +typedef _Atomic(uint_least8_t) atomic_uint_least8_t; +typedef _Atomic(int_least16_t) atomic_int_least16_t; +typedef _Atomic(uint_least16_t) atomic_uint_least16_t; +typedef _Atomic(int_least32_t) atomic_int_least32_t; +typedef _Atomic(uint_least32_t) atomic_uint_least32_t; +typedef _Atomic(int_least64_t) atomic_int_least64_t; +typedef _Atomic(uint_least64_t) atomic_uint_least64_t; +typedef _Atomic(int_fast8_t) atomic_int_fast8_t; +typedef _Atomic(uint_fast8_t) atomic_uint_fast8_t; +typedef _Atomic(int_fast16_t) atomic_int_fast16_t; +typedef _Atomic(uint_fast16_t) atomic_uint_fast16_t; +typedef _Atomic(int_fast32_t) atomic_int_fast32_t; +typedef _Atomic(uint_fast32_t) atomic_uint_fast32_t; +typedef _Atomic(int_fast64_t) atomic_int_fast64_t; +typedef _Atomic(uint_fast64_t) atomic_uint_fast64_t; +typedef _Atomic(intptr_t) atomic_intptr_t; +typedef _Atomic(uintptr_t) atomic_uintptr_t; +typedef _Atomic(size_t) atomic_size_t; +typedef _Atomic(ptrdiff_t) atomic_ptrdiff_t; +typedef _Atomic(intmax_t) atomic_intmax_t; +typedef _Atomic(uintmax_t) atomic_uintmax_t; +typedef struct atomic_flag { atomic_bool _Value; } atomic_flag; +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst +} memory_order; + #endif diff --git a/utils/fake_libc_include/stdatomic.h b/utils/fake_libc_include/stdatomic.h new file mode 100644 index 0000000..f952c1d --- /dev/null +++ b/utils/fake_libc_include/stdatomic.h @@ -0,0 +1,2 @@ +#include "_fake_defines.h" +#include "_fake_typedefs.h" |