diff options
author | David Young <dyoung@hdfgroup.org> | 2022-05-08 02:04:33 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-08 02:04:33 (GMT) |
commit | 110f6a1c7ddf65e61387f484e6098bbe69dcc6a8 (patch) | |
tree | c766415686bf0a4f9ac041d7186ad1c3b3cdb9ea | |
parent | 01b7165df58333bbff48439952afdc166fdf5ef9 (diff) | |
download | hdf5-110f6a1c7ddf65e61387f484e6098bbe69dcc6a8.zip hdf5-110f6a1c7ddf65e61387f484e6098bbe69dcc6a8.tar.gz hdf5-110f6a1c7ddf65e61387f484e6098bbe69dcc6a8.tar.bz2 |
Add a workaround for buggy PGI C Compiler version 19.10, which quits (#1705)
with the unhelpful and misleading error message `PGC-S-0053-Illegal use
of void type` when I put a `static` qualifier on my tables.
-rw-r--r-- | src/H5Tnative.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/H5Tnative.c b/src/H5Tnative.c index 114e0a3..9625290 100644 --- a/src/H5Tnative.c +++ b/src/H5Tnative.c @@ -1171,10 +1171,20 @@ H5T__init_native_internal(void) /* clang-format off */ + /* Version 19.10 of the PGI C compiler croaks on the following + * tables if they are `static`, so make them `static` only if + * some other compiler is used. + */ +#if defined(__PGIC__) && __PGIC__ == 19 && __PGIC_MINOR__ == 10 +# define static_unless_buggy_pgic +#else +# define static_unless_buggy_pgic static +#endif + /* The library compiles with a limit on `static` object size, so * I broke this table into three. */ - static const native_int_t table1[] = { + static_unless_buggy_pgic const native_int_t table1[] = { NATIVE_ENTRY_INITIALIZER(SCHAR, signed char, 0, true) , NATIVE_ENTRY_INITIALIZER(UCHAR, unsigned char, 0, false) , NATIVE_ENTRY_INITIALIZER(SHORT, short, 0, true) @@ -1188,7 +1198,7 @@ H5T__init_native_internal(void) , NATIVE_ENTRY_INITIALIZER(LLONG, long long, 0, true) , NATIVE_ENTRY_INITIALIZER(ULLONG, unsigned long long, 0, false) }; - static const native_int_t table2[] = { + static_unless_buggy_pgic const native_int_t table2[] = { NATIVE_ENTRY_INITIALIZER(INT8, int8_t, 0, true) , NATIVE_ENTRY_INITIALIZER(UINT8, uint8_t, 0, false) , NATIVE_ENTRY_INITIALIZER(INT_LEAST8, int_least8_t, 0, true) @@ -1202,7 +1212,7 @@ H5T__init_native_internal(void) , NATIVE_ENTRY_INITIALIZER(INT_FAST16, int_fast16_t, 0, true) , NATIVE_ENTRY_INITIALIZER(UINT_FAST16, uint_fast16_t, 0, false) }; - static const native_int_t table3[] = { + static_unless_buggy_pgic const native_int_t table3[] = { NATIVE_ENTRY_INITIALIZER(INT32, int32_t, 0, true) , NATIVE_ENTRY_INITIALIZER(UINT32, uint32_t, 0, false) , NATIVE_ENTRY_INITIALIZER(INT_LEAST32, int_least32_t, 0, true) @@ -1216,11 +1226,12 @@ H5T__init_native_internal(void) , NATIVE_ENTRY_INITIALIZER(INT_FAST64, int_fast64_t, 0, true) , NATIVE_ENTRY_INITIALIZER(UINT_FAST64, uint_fast64_t, 0, false) }; - static const native_int_table_t table_table[] = { + static_unless_buggy_pgic const native_int_table_t table_table[] = { {table1, NELMTS(table1)} , {table2, NELMTS(table2)} , {table3, NELMTS(table3)} }; +#undef static_unless_buggy_pgic /* clang-format on */ size_t i, j; |