From 13d651bbd7206890aea07c4d5faee0f1def89fbf Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Tue, 8 Apr 2025 22:20:33 -0700 Subject: [PATCH 01/14] Refactor warning macros Replaces the scheme in H5warnings.h with a more compiler-agnostic one that relocates ifdef complexity to the warnings header file and uses better naming. --- .clang-format | 40 +++- config/clang-warnings/general | 1 + config/gnu-warnings/5 | 1 - config/gnu-warnings/general | 1 + hl/fortran/src/H5TBfc.c | 8 +- hl/src/H5LT.c | 4 +- java/src/jni/h5Constants.c | 16 +- src/H5Dint.c | 5 +- src/H5Dmpio.c | 21 +- src/H5Eint.c | 9 +- src/H5FDfamily.c | 34 ++- src/H5FDmulti.c | 14 +- src/H5FDsubfiling/H5FDioc_int.c | 7 +- src/H5FDsubfiling/H5FDsubfile_int.c | 8 +- src/H5Gname.c | 4 +- src/H5Gnode.c | 4 +- src/H5Gobj.c | 8 +- src/H5Gtraverse.c | 4 +- src/H5HF.c | 8 +- src/H5HFcache.c | 20 +- src/H5HFman.c | 4 +- src/H5Lint.c | 12 +- src/H5Oainfo.c | 12 +- src/H5Ocache.c | 8 +- src/H5Odtype.c | 4 +- src/H5Olinfo.c | 4 +- src/H5PLint.c | 23 +-- src/H5PLplugin_cache.c | 7 +- src/H5Pdxpl.c | 4 +- src/H5RS.c | 12 +- src/H5SL.c | 8 +- src/H5TSprivate.h | 8 +- src/H5Tconv_complex.c | 147 ++++++------- src/H5Tconv_float.c | 159 +++++++------- src/H5Tconv_integer.c | 63 ++---- src/H5Tinit_float.c | 4 +- src/H5Tnative.c | 33 +-- src/H5Tref.c | 4 +- src/H5build_settings.cmake.c.in | 6 +- src/H5private.h | 4 +- src/H5system.c | 4 +- src/H5warnings.h | 308 +++++++++++++++++++++++++--- test/big.c | 12 +- test/dt_arith.c | 89 ++------ test/error_test.c | 14 +- test/file_image.c | 12 +- test/h5test.c | 16 +- test/objcopy.c | 4 +- test/objcopy_ref.c | 8 +- test/vfd.c | 30 +-- testpar/t_prop.c | 9 +- testpar/t_subfiling_vfd.c | 4 - tools/lib/h5tools_dump.c | 8 +- tools/lib/h5tools_str.c | 32 ++- tools/libtest/h5tools_test_utils.c | 2 - tools/src/h5dump/h5dump_xml.c | 6 + tools/src/h5import/h5import.c | 16 -- tools/src/h5perf/pio_perf.c | 2 - tools/src/h5perf/sio_engine.c | 2 - tools/src/h5perf/sio_perf.c | 2 - tools/src/misc/h5repart.c | 10 +- tools/test/perform/zip_perf.c | 2 - 62 files changed, 683 insertions(+), 652 deletions(-) diff --git a/.clang-format b/.clang-format index de4f8b8e95c..b2ee6a4ed93 100644 --- a/.clang-format +++ b/.clang-format @@ -85,13 +85,41 @@ StatementMacros: - H5E_END_TRY - H5_BEGIN_TAG - H5_END_TAG - - H5_GCC_DIAG_OFF - - H5_GCC_DIAG_ON - - H5_CLANG_DIAG_OFF - - H5_CLANG_DIAG_ON - - H5_GCC_CLANG_DIAG_OFF - - H5_GCC_CLANG_DIAG_ON - H5_LEAVE + - H5_WARN_C11_EXTENSIONS_OFF + - H5_WARN_C11_EXTENSIONS_ON + - H5_WARN_C99_EXTENSIONS_OFF + - H5_WARN_C99_EXTENSIONS_ON + - H5_WARN_CAST_AWAY_CONST_OFF + - H5_WARN_CAST_AWAY_CONST_ON + - H5_WARN_DUPLICATED_BRANCHES_OFF + - H5_WARN_DUPLICATED_BRANCHES_ON + - H5_WARN_FLOAT_CONVERSION_OFF + - H5_WARN_FLOAT_CONVERSION_ON + - H5_WARN_FLOAT_EQUAL_OFF + - H5_WARN_FLOAT_EQUAL_ON + - H5_WARN_FORMAT_NONLITERAL_OFF + - H5_WARN_FORMAT_NONLITERAL_ON + - H5_WARN_FORMAT_TRUNCATION_OFF + - H5_WARN_FORMAT_TRUNCATION_ON + - H5_WARN_IMPLICIT_FALLTHROUGH_OFF + - H5_WARN_IMPLICIT_FALLTHROUGH_ON + - H5_WARN_LARGE_STACK_OBJECTS_OFF + - H5_WARN_LARGE_STACK_OBJECTS_ON + - H5_WARN_MISSING_PROTOTPYE_OFF + - H5_WARN_MISSING_PROTOTPYE_ON + - H5_WARN_NONSTD_SUFFIX_OFF + - H5_WARN_NONSTD_SUFFIX_ON + - H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF + - H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON + - H5_WARN_SIGN_CONVERSION_OFF + - H5_WARN_SIGN_CONVERSION_ON + - H5_WARN_STRING_OVERFLOW_OFF + - H5_WARN_STRING_OVERFLOW_ON + - H5_WARN_UNUSED_PARAMETER_OFF + - H5_WARN_UNUSED_PARAMETER_ON + - H5_WARN_USELESS_COMPARISON_OFF + - H5_WARN_USELESS_COMPARISON_ON - HGOTO_DONE - HMPI_DONE_ERROR - HMPI_ERROR diff --git a/config/clang-warnings/general b/config/clang-warnings/general index 433dff93612..bd62d854e4a 100644 --- a/config/clang-warnings/general +++ b/config/clang-warnings/general @@ -6,6 +6,7 @@ -Wdouble-promotion -Wextra -Wformat=2 +-Wformat-nonliteral -Wframe-larger-than=16384 -Wimplicit-fallthrough -Wnull-dereference diff --git a/config/gnu-warnings/5 b/config/gnu-warnings/5 index 32cb1962969..723e4487bd9 100644 --- a/config/gnu-warnings/5 +++ b/config/gnu-warnings/5 @@ -1,2 +1 @@ -Warray-bounds=2 --Wc99-c11-compat diff --git a/config/gnu-warnings/general b/config/gnu-warnings/general index df4c6133893..8e1c9a74d6f 100644 --- a/config/gnu-warnings/general +++ b/config/gnu-warnings/general @@ -12,6 +12,7 @@ -Wextra -Wfloat-equal -Wformat=2 +-Wformat-nonliteral -Winit-self -Winvalid-pch -Wmissing-include-dirs diff --git a/hl/fortran/src/H5TBfc.c b/hl/fortran/src/H5TBfc.c index 6b9ac578ee6..9cace86598c 100644 --- a/hl/fortran/src/H5TBfc.c +++ b/hl/fortran/src/H5TBfc.c @@ -92,12 +92,12 @@ h5tbmake_table_c(size_t_f *namelen1, _fcd name1, hid_t_f *loc_id, size_t_f *name /* * call H5TBmake_table function. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5TBmake_table(c_name1, (hid_t)*loc_id, c_name, c_nfields, (hsize_t)*nrecords, (size_t)*type_size, (const char **)c_field_names, c_field_offset, c_field_types, (hsize_t)*chunk_size, NULL, *compress, NULL) < 0) HGOTO_DONE(FAIL); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON done: if (c_name) @@ -195,12 +195,12 @@ h5tbmake_table_ptr_c(size_t_f *namelen1, _fcd name1, hid_t_f *loc_id, size_t_f * /* * call H5TBmake_table function. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5TBmake_table(c_name1, (hid_t)*loc_id, c_name, c_nfields, (hsize_t)*nrecords, (size_t)*type_size, (const char **)c_field_names, c_field_offset, c_field_types, (hsize_t)*chunk_size, fill_data, *compress, data) < 0) HGOTO_DONE(FAIL); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON done: if (c_name) diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c index 6457d8844d3..370c0032d54 100644 --- a/hl/src/H5LT.c +++ b/hl/src/H5LT.c @@ -1256,13 +1256,13 @@ find_dataset(H5_ATTR_UNUSED hid_t loc_id, const char *name, H5_ATTR_UNUSED const * modify the op_data buffer (i.e.: dset_name) during the traversal, and the * library never modifies that buffer. */ -H5_GCC_CLANG_DIAG_OFF("cast-qual") +H5_WARN_CAST_AWAY_CONST_OFF herr_t H5LTfind_dataset(hid_t loc_id, const char *dset_name) { return H5Literate2(loc_id, H5_INDEX_NAME, H5_ITER_INC, 0, find_dataset, (void *)dset_name); } -H5_GCC_CLANG_DIAG_ON("cast-qual") +H5_WARN_CAST_AWAY_CONST_ON /*------------------------------------------------------------------------- * diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c index 4d3339c494a..65730f598d9 100644 --- a/java/src/jni/h5Constants.c +++ b/java/src/jni/h5Constants.c @@ -19,8 +19,8 @@ extern "C" { #include #include "h5jni.h" -H5_GCC_CLANG_DIAG_OFF("missing-prototypes") -H5_GCC_CLANG_DIAG_OFF("unused-parameter") +H5_WARN_MISSING_PROTOTYPE_OFF +H5_WARN_UNUSED_PARAMETER_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5_1QUARTER_1HADDR_1MAX(JNIEnv *env, jclass cls) @@ -1210,7 +1210,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1CANCELED(JNIEnv *env, jclass cls) } /* Java does not have unsigned native types */ -H5_GCC_CLANG_DIAG_OFF("sign-conversion") +H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1CREAT(JNIEnv *env, jclass cls) { @@ -1251,7 +1251,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1SWMR_1WRITE(JNIEnv *env, jclass cls) { return H5F_ACC_SWMR_WRITE; } -H5_GCC_CLANG_DIAG_ON("sign-conversion") +H5_WARN_SIGN_CONVERSION_ON JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1CLOSE_1DEFAULT(JNIEnv *env, jclass cls) @@ -1652,7 +1652,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1GHEAP_1SIZE(JNIEnv *env, jcla { return (hsize_t)(3 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -H5_GCC_CLANG_DIAG_OFF("sign-conversion") +H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1LHEAP_1SIZE(JNIEnv *env, jclass cls) { @@ -1669,7 +1669,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1OHDR_1SIZE(JNIEnv *env, jclas /* XXX: BADNESS! - This value cannot fit into a jlong! */ return (hsize_t)(5 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -H5_GCC_CLANG_DIAG_ON("sign-conversion") +H5_WARN_SIGN_CONVERSION_ON /* Symbols defined for compatibility with previous versions of the HDF5 API. * @@ -3800,8 +3800,8 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls) return H5Z_FILTER_ALL; } -H5_GCC_CLANG_DIAG_ON("missing-prototypes") -H5_GCC_CLANG_DIAG_ON("unused-parameter") +H5_WARN_UNUSED_PARAMETER_ON +H5_WARN_MISSING_PROTOTYPE_ON #ifdef __cplusplus } /* end extern "C" */ diff --git a/src/H5Dint.c b/src/H5Dint.c index f956d8761fd..5e0ea122578 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -126,11 +126,10 @@ H5FL_EXTERN(H5D_piece_info_t); /* Declare extern the free list to manage blocks of type conversion data */ H5FL_BLK_EXTERN(type_conv); -/* Disable warning for intentional identical branches here -QAK */ -H5_GCC_DIAG_OFF("larger-than=") /* Define a static "default" dataset structure to use to initialize new datasets */ +H5_WARN_LARGE_STACK_OBJECTS_OFF static H5D_shared_t H5D_def_dset; -H5_GCC_DIAG_ON("larger-than=") +H5_WARN_LARGE_STACK_OBJECTS_ON /* Dataset ID class */ static const H5I_class_t H5I_DATASET_CLS[1] = {{ diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c index c19f0ab4b68..000ec3280d8 100644 --- a/src/H5Dmpio.c +++ b/src/H5Dmpio.c @@ -4342,18 +4342,12 @@ H5D__mpio_share_chunk_modification_data(H5D_filtered_collective_io_info_t *chunk else { int all_sends_completed; - /* Determine if all send requests have completed - * - * gcc 11 complains about passing MPI_STATUSES_IGNORE as an MPI_Status - * array. See the discussion here: - * - * https://github.com/pmodels/mpich/issues/5687 - */ - H5_GCC_DIAG_OFF("stringop-overflow") + /* Determine if all send requests have completed */ + H5_WARN_MPI_STATUSES_IGNORE_OFF if (MPI_SUCCESS != (mpi_code = MPI_Testall((int)num_send_requests, send_requests, &all_sends_completed, MPI_STATUSES_IGNORE))) HMPI_GOTO_ERROR(FAIL, "MPI_Testall failed", mpi_code) - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON if (all_sends_completed) { /* Post non-blocking barrier */ @@ -4387,16 +4381,11 @@ H5D__mpio_share_chunk_modification_data(H5D_filtered_collective_io_info_t *chunk * in the order that chunks are processed. So, the safest way to * support both I/O modes is to simply make sure all messages * are available. - * - * gcc 11 complains about passing MPI_STATUSES_IGNORE as an MPI_Status - * array. See the discussion here: - * - * https://github.com/pmodels/mpich/issues/5687 */ - H5_GCC_DIAG_OFF("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_OFF if (MPI_SUCCESS != (mpi_code = MPI_Waitall((int)num_recv_requests, recv_requests, MPI_STATUSES_IGNORE))) HMPI_GOTO_ERROR(FAIL, "MPI_Waitall failed", mpi_code) - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON /* Set the new number of locally-selected chunks */ chunk_list->num_chunk_infos = last_assigned_idx; diff --git a/src/H5Eint.c b/src/H5Eint.c index 271eb7639e0..f3059b4893c 100644 --- a/src/H5Eint.c +++ b/src/H5Eint.c @@ -1740,15 +1740,10 @@ H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func if (ap) { char *desc = NULL; - /* GCC complains about the 'fmt' parameter, but it's either from static - * strings in the library, which we know are OK, or from application - * error push calls, and the application should be sanity checking their - * strings. - */ - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF if (HDvasprintf(&desc, fmt, *ap) < 0) HGOTO_DONE(FAIL); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON err_entry->desc = desc; } diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c index 939a3ac5c4a..d06ca94a1db 100644 --- a/src/H5FDfamily.c +++ b/src/H5FDfamily.c @@ -640,13 +640,6 @@ H5FD__family_sb_decode(H5FD_t *_file, const char H5_ATTR_UNUSED *name, const uns * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * memb_name & temp in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static H5FD_t * H5FD__family_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr) { @@ -732,8 +725,11 @@ H5FD__family_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxad HGOTO_ERROR(H5E_VFL, H5E_CANTALLOC, NULL, "unable to allocate temporary member name"); /* Check that names are unique */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(memb_name, H5FD_FAM_MEMB_NAME_BUF_SIZE, name, 0); snprintf(temp, H5FD_FAM_MEMB_NAME_BUF_SIZE, name, 1); + H5_WARN_FORMAT_NONLITERAL_ON + if (!strcmp(memb_name, temp)) { if (default_config) { temp = H5MM_xfree(temp); @@ -747,7 +743,9 @@ H5FD__family_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxad /* Open all the family members */ while (1) { + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(memb_name, H5FD_FAM_MEMB_NAME_BUF_SIZE, name, file->nmembs); + H5_WARN_FORMAT_NONLITERAL_ON /* Enlarge member array */ if (file->nmembs >= file->amembs) { @@ -824,7 +822,6 @@ H5FD__family_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxad FUNC_LEAVE_NOAPI(ret_value) } /* end H5FD__family_open() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: H5FD__family_close @@ -973,13 +970,6 @@ H5FD__family_get_eoa(const H5FD_t *_file, H5FD_mem_t H5_ATTR_UNUSED type) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() call with - * memb_name in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t H5FD__family_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t abs_eoa) { @@ -1012,7 +1002,11 @@ H5FD__family_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t abs_eoa) /* Create another file if necessary */ if (u >= file->nmembs || !file->memb[u]) { file->nmembs = MAX(file->nmembs, u + 1); + + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(memb_name, H5FD_FAM_MEMB_NAME_BUF_SIZE, file->name, u); + H5_WARN_FORMAT_NONLITERAL_ON + H5_CHECK_OVERFLOW(file->memb_size, hsize_t, haddr_t); if (H5FD_open(false, &file->memb[u], memb_name, file->flags | H5F_ACC_CREAT, file->memb_fapl_id, (haddr_t)file->memb_size) < 0) @@ -1043,7 +1037,6 @@ H5FD__family_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t abs_eoa) FUNC_LEAVE_NOAPI(ret_value) } -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: H5FD__family_get_eof @@ -1448,10 +1441,11 @@ H5FD__family_delete(const char *filename, hid_t fapl_id) HGOTO_ERROR(H5E_VFL, H5E_CANTALLOC, FAIL, "unable to allocate temporary member name"); /* Sanity check to make sure that generated names are unique */ - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(member_name, H5FD_FAM_MEMB_NAME_BUF_SIZE, filename, 0); snprintf(temp, H5FD_FAM_MEMB_NAME_BUF_SIZE, filename, 1); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON if (!strcmp(member_name, temp)) { if (default_config) { @@ -1469,9 +1463,9 @@ H5FD__family_delete(const char *filename, hid_t fapl_id) current_member = 0; while (1) { /* Fix up the filename with the current member's number */ - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(member_name, H5FD_FAM_MEMB_NAME_BUF_SIZE, filename, current_member); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON /* Attempt to delete the member files. If the first file throws an error * we always consider this an error. With subsequent member files, however, diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c index 72d7fd4c455..1cfa6c1d975 100644 --- a/src/H5FDmulti.c +++ b/src/H5FDmulti.c @@ -1898,13 +1898,6 @@ compute_next(H5FD_multi_t *file) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here - * - * This pragma only needs to surround the snprintf() call with - * tmp in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static int open_members(H5FD_multi_t *file) { @@ -1920,7 +1913,9 @@ open_members(H5FD_multi_t *file) continue; /*already open*/ assert(file->fa.memb_name[mt]); + H5_WARN_FORMAT_NONLITERAL_OFF nchars = snprintf(tmp, sizeof(tmp), file->fa.memb_name[mt], file->name); + H5_WARN_FORMAT_NONLITERAL_ON if (nchars < 0 || nchars >= (int)sizeof(tmp)) H5Epush_ret(__func__, H5E_ERR_CLS, H5E_VFL, H5E_BADVALUE, "filename is too long and would be truncated", -1); @@ -1941,7 +1936,6 @@ open_members(H5FD_multi_t *file) return 0; } -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: H5FD_multi_delete @@ -1952,7 +1946,6 @@ H5_GCC_CLANG_DIAG_ON("format-nonliteral") * *------------------------------------------------------------------------- */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t H5FD_multi_delete(const char *filename, hid_t fapl_id) { @@ -1995,7 +1988,9 @@ H5FD_multi_delete(const char *filename, hid_t fapl_id) assert(fa->memb_name[mt]); assert(fa->memb_fapl[mt] >= 0); + H5_WARN_FORMAT_NONLITERAL_OFF nchars = snprintf(full_filename, sizeof(full_filename), fa->memb_name[mt], filename); + H5_WARN_FORMAT_NONLITERAL_ON if (nchars < 0 || nchars >= (int)sizeof(full_filename)) H5Epush_ret(__func__, H5E_ERR_CLS, H5E_VFL, H5E_BADVALUE, "filename is too long and would be truncated", -1); @@ -2007,7 +2002,6 @@ H5FD_multi_delete(const char *filename, hid_t fapl_id) return 0; } /* end H5FD_multi_delete() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: H5FD_multi_ctl diff --git a/src/H5FDsubfiling/H5FDioc_int.c b/src/H5FDsubfiling/H5FDioc_int.c index 181183ced3e..31a5a78f311 100644 --- a/src/H5FDsubfiling/H5FDioc_int.c +++ b/src/H5FDsubfiling/H5FDioc_int.c @@ -396,13 +396,10 @@ H5FD__ioc_async_completion(MPI_Request *mpi_reqs, size_t num_reqs) H5_CHECK_OVERFLOW(num_reqs, size_t, int); - /* Have to suppress gcc warnings regarding MPI_STATUSES_IGNORE - * with MPICH (https://github.com/pmodels/mpich/issues/5687) - */ - H5_GCC_DIAG_OFF("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_OFF if (MPI_SUCCESS != (mpi_code = MPI_Waitall((int)num_reqs, mpi_reqs, MPI_STATUSES_IGNORE))) HMPI_GOTO_ERROR(FAIL, "MPI_Waitall failed", mpi_code); - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5FDsubfiling/H5FDsubfile_int.c b/src/H5FDsubfiling/H5FDsubfile_int.c index e073f5c8fdd..8835090c999 100644 --- a/src/H5FDsubfiling/H5FDsubfile_int.c +++ b/src/H5FDsubfiling/H5FDsubfile_int.c @@ -146,10 +146,10 @@ H5FD__subfiling__truncate_sub_files(hid_t context_id, int64_t logical_file_eof, } /* Wait for truncate operations to complete */ - H5_GCC_DIAG_OFF("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_OFF if (MPI_SUCCESS != (mpi_code = MPI_Waitall(num_subfiles_owned, recv_reqs, MPI_STATUSES_IGNORE))) HMPI_GOTO_ERROR(FAIL, "MPI_Waitall", mpi_code); - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON } /* Barrier on exit */ @@ -319,10 +319,10 @@ H5FD__subfiling__get_real_eof(hid_t context_id, int64_t *logical_eof_ptr) } /* Wait for EOF communication to complete */ - H5_GCC_DIAG_OFF("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_OFF if (MPI_SUCCESS != (mpi_code = MPI_Waitall(num_subfiles, recv_reqs, MPI_STATUSES_IGNORE))) HMPI_GOTO_ERROR(FAIL, "MPI_Waitall", mpi_code); - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON for (int i = 0; i < num_subfiles; i++) { #ifndef NDEBUG diff --git a/src/H5Gname.c b/src/H5Gname.c index a6c9afdd860..ecf15a07ed0 100644 --- a/src/H5Gname.c +++ b/src/H5Gname.c @@ -432,9 +432,9 @@ H5G_name_copy(H5G_name_t *dst, const H5G_name_t *src, H5_copy_depth_t depth) dst->user_path_r = H5RS_dup(src->user_path_r); } else { - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF H5G_name_reset((H5G_name_t *)src); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } FUNC_LEAVE_NOAPI(SUCCEED) diff --git a/src/H5Gnode.c b/src/H5Gnode.c index 336eb76d6cc..e6d19309f2d 100644 --- a/src/H5Gnode.c +++ b/src/H5Gnode.c @@ -1180,9 +1180,9 @@ H5G__node_copy(H5F_t *f, const void H5_ATTR_UNUSED *_lt_key, haddr_t addr, const /* Set up group location for soft link to start in */ H5G_name_reset(&grp_path); grp_loc.path = &grp_path; - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF grp_loc.oloc = (H5O_loc_t *)src_oloc; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON /* Get pointer to link value in local heap */ if ((link_name = diff --git a/src/H5Gobj.c b/src/H5Gobj.c index 3a11246c24e..8739c46d920 100644 --- a/src/H5Gobj.c +++ b/src/H5Gobj.c @@ -250,7 +250,7 @@ H5G__obj_create_real(H5F_t *f, const H5O_ginfo_t *ginfo, const H5O_linfo_t *linf /* Check for format of group to create */ if (use_at_least_v18) { - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF /* Insert link info message */ if (H5O_msg_create(oloc, H5O_LINFO_ID, 0, H5O_UPDATE_TIME, (void *)linfo) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message"); @@ -263,7 +263,7 @@ H5G__obj_create_real(H5F_t *f, const H5O_ginfo_t *ginfo, const H5O_linfo_t *linf if (pline && pline->nused) if (H5O_msg_create(oloc, H5O_PLINE_ID, H5O_MSG_FLAG_CONSTANT, 0, (void *)pline) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* end if */ else { H5O_stab_t stab; /* Symbol table message */ @@ -396,10 +396,10 @@ H5G__obj_stab_to_new_cb(const H5O_link_t *lnk, void *_udata) assert(udata); /* Insert link into group */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5G_obj_insert(udata->grp_oloc, (H5O_link_t *)lnk, false, H5O_TYPE_UNKNOWN, NULL) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINSERT, H5_ITER_ERROR, "can't insert link into group"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c index 89fac987c72..c95dcccfbfa 100644 --- a/src/H5Gtraverse.c +++ b/src/H5Gtraverse.c @@ -725,7 +725,7 @@ H5G__traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target, H5G HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to hold file open"); /* Reset any non-default object header messages */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (ginfo != &def_ginfo) if (H5O_msg_reset(H5O_GINFO_ID, (void *)ginfo) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to reset group info message"); @@ -735,7 +735,7 @@ H5G__traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target, H5G if (pline != &def_pline) if (H5O_msg_reset(H5O_PLINE_ID, (void *)pline) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to reset I/O pipeline message"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* end if */ else HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "component not found"); diff --git a/src/H5HF.c b/src/H5HF.c index 24af93a7a4e..fa5fa19f884 100644 --- a/src/H5HF.c +++ b/src/H5HF.c @@ -112,9 +112,9 @@ H5HF__op_write(const void *obj, size_t obj_len, void *op_data) * We cast away const here because no obj pointer that was originally * const should ever arrive here. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF H5MM_memcpy((void *)obj, op_data, obj_len); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5HF__op_write() */ @@ -338,10 +338,10 @@ H5HF_insert(H5HF_t *fh, size_t size, const void *obj, void *id /*out*/) * Although not ideal, we can quiet the const warning here because no * obj pointer that was originally const should ever arrive here. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5HF__huge_insert(hdr, size, (void *)obj, id) < 0) HGOTO_ERROR(H5E_HEAP, H5E_CANTINSERT, FAIL, "can't store 'huge' object in fractal heap"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* end if */ /* Check for 'tiny' object */ else if (size <= hdr->tiny_max_len) { diff --git a/src/H5HFcache.c b/src/H5HFcache.c index 3b65f227f0e..5733da0ca39 100644 --- a/src/H5HFcache.c +++ b/src/H5HFcache.c @@ -708,11 +708,9 @@ H5HF__cache_hdr_serialize(const H5F_t *f, void *_image, size_t H5_ATTR_NDEBUG_UN assert(len == hdr->heap_size); /* Set the shared heap header's file context for this operation */ - H5_GCC_DIAG_OFF("discarded-qualifiers") - H5_CLANG_DIAG_OFF("incompatible-pointer-types-discards-qualifiers") - hdr->f = f; - H5_GCC_DIAG_ON("discarded-qualifiers") - H5_CLANG_DIAG_ON("incompatible-pointer-types-discards-qualifiers") + H5_WARN_CAST_AWAY_CONST_OFF + hdr->f = (H5F_t *)f; + H5_WARN_CAST_AWAY_CONST_ON /* Magic number */ H5MM_memcpy(image, H5HF_HDR_MAGIC, (size_t)H5_SIZEOF_MAGIC); @@ -1272,11 +1270,9 @@ H5HF__cache_iblock_serialize(const H5F_t *f, void *_image, size_t H5_ATTR_NDEBUG hdr = iblock->hdr; /* Set the shared heap header's file context for this operation */ - H5_GCC_DIAG_OFF("discarded-qualifiers") - H5_CLANG_DIAG_OFF("incompatible-pointer-types-discards-qualifiers") - hdr->f = f; - H5_GCC_DIAG_ON("discarded-qualifiers") - H5_CLANG_DIAG_ON("incompatible-pointer-types-discards-qualifiers") + H5_WARN_CAST_AWAY_CONST_OFF + hdr->f = (H5F_t *)f; + H5_WARN_CAST_AWAY_CONST_ON /* Magic number */ H5MM_memcpy(image, H5HF_IBLOCK_MAGIC, (size_t)H5_SIZEOF_MAGIC); @@ -1591,9 +1587,9 @@ H5HF__cache_dblock_verify_chksum(const void *_image, size_t len, void *_udata) /* If the data are unfiltered, we just point to the image, which we * never modify. Casting away const is okay here. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF read_buf = (void *)image; - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* Decode checksum */ diff --git a/src/H5HFman.c b/src/H5HFman.c index 09d9255aa17..5c13939c0fa 100644 --- a/src/H5HFman.c +++ b/src/H5HFman.c @@ -470,10 +470,10 @@ H5HF__man_write(H5HF_hdr_t *hdr, const uint8_t *id, const void *obj) * was passed in as const. We quiet the warning here because an obj pointer * that was originally const should *never* arrive here. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5HF__man_op_real(hdr, id, H5HF__op_write, (void *)obj, H5HF_OP_MODIFY) < 0) HGOTO_ERROR(H5E_HEAP, H5E_CANTOPERATE, FAIL, "unable to operate on heap object"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5Lint.c b/src/H5Lint.c index e8d5e150241..717984c490a 100644 --- a/src/H5Lint.c +++ b/src/H5Lint.c @@ -597,9 +597,9 @@ H5L__link_cb(H5G_loc_t *grp_loc /*in*/, const char *name, const H5O_link_t H5_AT udata->lnk->cset = H5F_DEFAULT_CSET; /* Default character encoding for link */ /* Set the link's name correctly */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF udata->lnk->name = (char *)name; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON /* Insert link into group */ if (H5G_obj_insert(grp_loc->oloc, udata->lnk, true, @@ -1354,9 +1354,9 @@ H5L__move_dest_cb(H5G_loc_t *grp_loc /*in*/, const char *name, const H5O_link_t /* Give the object its new name */ assert(udata->lnk->name == NULL); - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF udata->lnk->name = (char *)name; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON /* Insert the link into the group */ if (H5G_obj_insert(grp_loc->oloc, udata->lnk, true, H5O_TYPE_UNKNOWN, NULL) < 0) @@ -2082,9 +2082,9 @@ H5L__link_copy_file(H5F_t *dst_file, const H5O_link_t *_src_lnk, const H5O_loc_t /* Set up group location for link */ H5G_name_reset(&lnk_grp_path); lnk_grp_loc.path = &lnk_grp_path; - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF lnk_grp_loc.oloc = (H5O_loc_t *)src_oloc; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON /* Check if the target object exists */ if (H5G_loc_exists(&lnk_grp_loc, src_lnk->name, &tar_exists) < 0) diff --git a/src/H5Oainfo.c b/src/H5Oainfo.c index 390b741ee55..b8cddd09238 100644 --- a/src/H5Oainfo.c +++ b/src/H5Oainfo.c @@ -138,25 +138,25 @@ H5O__ainfo_decode(H5F_t *f, H5O_t H5_ATTR_UNUSED *open_oh, unsigned H5_ATTR_UNUS ainfo->max_crt_idx = H5O_MAX_CRT_ORDER_IDX; /* Address of fractal heap to store "dense" attributes */ - H5_GCC_CLANG_DIAG_OFF("type-limits") + H5_WARN_USELESS_COMPARISON_OFF if (H5_IS_BUFFER_OVERFLOW(p, sizeof_addr, p_end)) HGOTO_ERROR(H5E_OHDR, H5E_OVERFLOW, NULL, "ran off end of input buffer while decoding"); - H5_GCC_CLANG_DIAG_ON("type-limits") + H5_WARN_USELESS_COMPARISON_ON H5F_addr_decode(f, &p, &(ainfo->fheap_addr)); /* Address of v2 B-tree to index names of attributes (names are always indexed) */ - H5_GCC_CLANG_DIAG_OFF("type-limits") + H5_WARN_USELESS_COMPARISON_OFF if (H5_IS_BUFFER_OVERFLOW(p, sizeof_addr, p_end)) HGOTO_ERROR(H5E_OHDR, H5E_OVERFLOW, NULL, "ran off end of input buffer while decoding"); - H5_GCC_CLANG_DIAG_ON("type-limits") + H5_WARN_USELESS_COMPARISON_ON H5F_addr_decode(f, &p, &(ainfo->name_bt2_addr)); /* Address of v2 B-tree to index creation order of links, if there is one */ if (ainfo->index_corder) { - H5_GCC_CLANG_DIAG_OFF("type-limits") + H5_WARN_USELESS_COMPARISON_OFF if (H5_IS_BUFFER_OVERFLOW(p, sizeof_addr, p_end)) HGOTO_ERROR(H5E_OHDR, H5E_OVERFLOW, NULL, "ran off end of input buffer while decoding"); - H5_GCC_CLANG_DIAG_ON("type-limits") + H5_WARN_USELESS_COMPARISON_ON H5F_addr_decode(f, &p, &(ainfo->corder_bt2_addr)); } else diff --git a/src/H5Ocache.c b/src/H5Ocache.c index 8d06f282077..7c24851e753 100644 --- a/src/H5Ocache.c +++ b/src/H5Ocache.c @@ -1343,9 +1343,9 @@ H5O__chunk_deserialize(H5O_t *oh, haddr_t addr, size_t chunk_size, const uint8_t mesg->flags = flags; mesg->crt_idx = crt_idx; mesg->native = NULL; - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF mesg->raw = (uint8_t *)chunk_image; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON mesg->raw_size = mesg_size; mesg->chunkno = chunkno; @@ -1549,10 +1549,10 @@ H5O__chunk_serialize(const H5F_t *f, H5O_t *oh, unsigned chunkno) /* Encode any dirty messages in this chunk */ for (u = 0, curr_msg = &oh->mesg[0]; u < oh->nmesgs; u++, curr_msg++) if (curr_msg->dirty && curr_msg->chunkno == chunkno) { - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (H5O_msg_flush((H5F_t *)f, oh, curr_msg) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTENCODE, FAIL, "unable to encode object header message"); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* Sanity checks */ diff --git a/src/H5Odtype.c b/src/H5Odtype.c index bd3871c23b6..f53f608ee61 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -421,11 +421,11 @@ H5O__dtype_decode_helper(unsigned *ioflags /*in,out*/, const uint8_t **pp, H5T_t /* Decode the field offset */ /* (starting with version 3 of the datatype message, use the minimum # of bytes required) */ if (version >= H5O_DTYPE_VERSION_3) { - H5_GCC_CLANG_DIAG_OFF("type-limits") + H5_WARN_USELESS_COMPARISON_OFF if (H5_IS_KNOWN_BUFFER_OVERFLOW(skip, *pp, offset_nbytes, p_end)) HGOTO_ERROR(H5E_OHDR, H5E_OVERFLOW, FAIL, "ran off end of input buffer while decoding"); - H5_GCC_CLANG_DIAG_ON("type-limits") + H5_WARN_USELESS_COMPARISON_ON UINT32DECODE_VAR(*pp, dt->shared->u.compnd.memb[dt->shared->u.compnd.nmembs].offset, offset_nbytes); } diff --git a/src/H5Olinfo.c b/src/H5Olinfo.c index 1b3760a2cfa..d8805027593 100644 --- a/src/H5Olinfo.c +++ b/src/H5Olinfo.c @@ -159,10 +159,10 @@ H5O__linfo_decode(H5F_t *f, H5O_t H5_ATTR_UNUSED *open_oh, unsigned H5_ATTR_UNUS /* Address of v2 B-tree to index creation order of links, if there is one */ if (linfo->index_corder) { - H5_GCC_CLANG_DIAG_OFF("type-limits") + H5_WARN_USELESS_COMPARISON_OFF if (H5_IS_BUFFER_OVERFLOW(p, addr_size, p_end)) HGOTO_ERROR(H5E_OHDR, H5E_OVERFLOW, NULL, "ran off end of input buffer while decoding"); - H5_GCC_CLANG_DIAG_ON("type-limits") + H5_WARN_USELESS_COMPARISON_ON H5F_addr_decode(f, &p, &(linfo->corder_bt2_addr)); } else diff --git a/src/H5PLint.c b/src/H5PLint.c index a1003147944..18c759c5096 100644 --- a/src/H5PLint.c +++ b/src/H5PLint.c @@ -314,23 +314,13 @@ H5PL_load(H5PL_type_t type, const H5PL_key_t *key) * *------------------------------------------------------------------------- */ -/* NOTE: We turn off -Wpedantic in gcc to quiet a warning about converting - * object pointers to function pointers, which is undefined in ANSI C. - * This is basically unavoidable due to the nature of dlsym() and *is* - * defined in POSIX, so it's fine. - * - * This pragma only needs to surround the assignment of the - * get_plugin_info function pointer, but early (4.4.7, at least) gcc - * only allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("pedantic") herr_t H5PL__open(const char *path, H5PL_type_t type, const H5PL_key_t *key, bool *success, H5PL_type_t *plugin_type, const void **plugin_info) { H5PL_HANDLE handle = NULL; - H5PL_get_plugin_type_t get_plugin_type = NULL; H5PL_get_plugin_info_t get_plugin_info = NULL; + H5PL_get_plugin_type_t get_plugin_type = NULL; H5PL_type_t loaded_plugin_type; H5PL_key_t tmp_key; herr_t ret_value = SUCCEED; @@ -358,17 +348,27 @@ H5PL__open(const char *path, H5PL_type_t type, const H5PL_key_t *key, bool *succ HGOTO_DONE(SUCCEED); } + /* NOTE: We turn off -Wpedantic to quiet a warning about converting object + * pointers to function pointers, which is undefined in ANSI C. This + * is basically unavoidable due to the nature of dlsym() and *is* + * defined in POSIX, so it's fine. + */ + /* Return a handle for the function H5PLget_plugin_type in the dynamic library. * The plugin library is supposed to define this function. */ + H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF if (NULL == (get_plugin_type = (H5PL_get_plugin_type_t)H5PL_GET_LIB_FUNC(handle, "H5PLget_plugin_type"))) HGOTO_DONE(SUCCEED); + H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON /* Return a handle for the function H5PLget_plugin_info in the dynamic library. * The plugin library is supposed to define this function. */ + H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF if (NULL == (get_plugin_info = (H5PL_get_plugin_info_t)H5PL_GET_LIB_FUNC(handle, "H5PLget_plugin_info"))) HGOTO_DONE(SUCCEED); + H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON /* Check the plugin type and return if it doesn't match the one passed in */ loaded_plugin_type = (H5PL_type_t)(*get_plugin_type)(); @@ -475,7 +475,6 @@ H5PL__open(const char *path, H5PL_type_t type, const H5PL_key_t *key, bool *succ FUNC_LEAVE_NOAPI(ret_value) } /* end H5PL__open() */ -H5_GCC_CLANG_DIAG_ON("pedantic") /*------------------------------------------------------------------------- * Function: H5PL__close diff --git a/src/H5PLplugin_cache.c b/src/H5PLplugin_cache.c index 3b31f1efdd5..84f88eaba6b 100644 --- a/src/H5PLplugin_cache.c +++ b/src/H5PLplugin_cache.c @@ -238,10 +238,6 @@ H5PL__add_plugin(H5PL_type_t type, const H5PL_key_t *key, H5PL_HANDLE handle) * *------------------------------------------------------------------------- */ -/* See the other use of H5PL_GET_LIB_FUNC() for an explanation - * for why we disable -Wpedantic here. - */ -H5_GCC_CLANG_DIAG_OFF("pedantic") herr_t H5PL__find_plugin_in_cache(const H5PL_search_params_t *search_params, bool *found, const void **plugin_info) { @@ -338,9 +334,11 @@ H5PL__find_plugin_in_cache(const H5PL_search_params_t *search_params, bool *foun const void *info; /* Get the "get plugin info" function from the plugin. */ + H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF if (NULL == (get_plugin_info_function = (H5PL_get_plugin_info_t)H5PL_GET_LIB_FUNC( H5PL_cache_g[u].handle, "H5PLget_plugin_info"))) HGOTO_ERROR(H5E_PLUGIN, H5E_CANTGET, FAIL, "can't get function for H5PLget_plugin_info"); + H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON /* Call the "get plugin info" function */ if (NULL == (info = (*get_plugin_info_function)())) @@ -358,4 +356,3 @@ H5PL__find_plugin_in_cache(const H5PL_search_params_t *search_params, bool *foun done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5PL__find_plugin_in_cache() */ -H5_GCC_CLANG_DIAG_ON("pedantic") diff --git a/src/H5Pdxpl.c b/src/H5Pdxpl.c index 28dbe54792b..dac85834ab6 100644 --- a/src/H5Pdxpl.c +++ b/src/H5Pdxpl.c @@ -2113,10 +2113,10 @@ H5P__dxfr_dset_io_hyp_sel_cmp(const void *_space1, const void *_space2, size_t H * to match the cmp prototype. Since we need to compare them, * we quiet the const warning. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (true != H5S_select_shape_same((H5S_t *)*space1, (H5S_t *)*space2)) HGOTO_DONE(-1); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } /* end if */ done: diff --git a/src/H5RS.c b/src/H5RS.c index b83f6da8401..e86b50111ac 100644 --- a/src/H5RS.c +++ b/src/H5RS.c @@ -322,9 +322,9 @@ H5RS_wrap(const char *s) * since we never modify or free the string when the wrapped struct * field is set to true. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF ret_value->s = (char *)s; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON ret_value->len = strlen(s); ret_value->end = ret_value->s + ret_value->len; @@ -348,13 +348,6 @@ H5RS_wrap(const char *s) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * format_templ in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") H5_ATTR_FORMAT(printf, 2, 3) herr_t H5RS_asprintf_cat(H5RS_str_t *rs, const char *fmt, ...) @@ -397,7 +390,6 @@ H5RS_asprintf_cat(H5RS_str_t *rs, const char *fmt, ...) done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5RS_asprintf_cat() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: H5RS_acat diff --git a/src/H5SL.c b/src/H5SL.c index 3b548b3ff54..e86e266987e 100644 --- a/src/H5SL.c +++ b/src/H5SL.c @@ -827,10 +827,10 @@ H5SL__release_common(H5SL_t *slist, H5SL_operator_t op, void *op_data) * elements. The library code that is making use of the skip list * container can do what it likes with the elements. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if (op) (void)(op)(node->item, (void *)node->key, op_data); - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON node->forward = (H5SL_node_t **)H5FL_FAC_FREE(H5SL_fac_g[node->log_nalloc], node->forward); node = H5FL_FREE(H5SL_node_t, node); @@ -2099,10 +2099,10 @@ H5SL_iterate(H5SL_t *slist, H5SL_operator_t op, void *op_data) * elements. The library code that is making use of the skip list * container can do what it likes with the elements. */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF if ((ret_value = (op)(node->item, (void *)node->key, op_data)) != 0) break; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON /* Advance to next node */ node = next; diff --git a/src/H5TSprivate.h b/src/H5TSprivate.h index f36f9a02dde..36a35de7823 100644 --- a/src/H5TSprivate.h +++ b/src/H5TSprivate.h @@ -220,12 +220,10 @@ typedef void (*H5TS_once_init_func_t)(void); #if defined(H5_HAVE_STDATOMIC_H) && !defined(__cplusplus) typedef atomic_int H5TS_atomic_int_t; typedef atomic_uint H5TS_atomic_uint_t; -/* Suppress warning about _Atomic keyword not supported in C99 */ -H5_GCC_DIAG_OFF("c99-c11-compat") -H5_CLANG_DIAG_OFF("c11-extensions") +/* Suppress warning about _Atomic being a C11 extension */ +H5_WARN_C11_EXTENSIONS_OFF typedef void *_Atomic H5TS_atomic_voidp_t; -H5_GCC_DIAG_ON("c99-c11-compat") -H5_CLANG_DIAG_ON("c11-extensions") +H5_WARN_C11_EXTENSIONS_ON #else typedef struct { H5TS_mutex_t mutex; diff --git a/src/H5Tconv_complex.c b/src/H5Tconv_complex.c index 6ab3c414507..ae117f7d33a 100644 --- a/src/H5Tconv_complex.c +++ b/src/H5Tconv_complex.c @@ -1434,9 +1434,9 @@ H5T__conv_fcomplex_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, SCHAR, H5_float_complex, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1453,9 +1453,9 @@ H5T__conv_fcomplex_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, UCHAR, H5_float_complex, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1472,9 +1472,9 @@ H5T__conv_fcomplex_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, SHORT, H5_float_complex, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1491,9 +1491,9 @@ H5T__conv_fcomplex_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, USHORT, H5_float_complex, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1510,9 +1510,9 @@ H5T__conv_fcomplex_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, INT, H5_float_complex, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1529,9 +1529,9 @@ H5T__conv_fcomplex_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, UINT, H5_float_complex, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1548,9 +1548,9 @@ H5T__conv_fcomplex_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, LONG, H5_float_complex, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1567,9 +1567,9 @@ H5T__conv_fcomplex_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, ULONG, H5_float_complex, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1586,9 +1586,9 @@ H5T__conv_fcomplex_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, LLONG, H5_float_complex, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1606,9 +1606,9 @@ H5T__conv_fcomplex_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(FLOAT_COMPLEX, ULLONG, H5_float_complex, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #ifdef H5_HAVE__FLOAT16 @@ -1627,14 +1627,9 @@ H5T__conv_fcomplex__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix (F16) */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Zf(FLOAT_COMPLEX, FLOAT16, H5_float_complex, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -1739,9 +1734,9 @@ H5T__conv_dcomplex_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, SCHAR, H5_double_complex, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1758,9 +1753,9 @@ H5T__conv_dcomplex_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, UCHAR, H5_double_complex, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1777,9 +1772,9 @@ H5T__conv_dcomplex_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, SHORT, H5_double_complex, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1797,9 +1792,9 @@ H5T__conv_dcomplex_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, USHORT, H5_double_complex, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1816,9 +1811,9 @@ H5T__conv_dcomplex_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, INT, H5_double_complex, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1835,9 +1830,9 @@ H5T__conv_dcomplex_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, UINT, H5_double_complex, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1854,9 +1849,9 @@ H5T__conv_dcomplex_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, LONG, H5_double_complex, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1873,9 +1868,9 @@ H5T__conv_dcomplex_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, ULONG, H5_double_complex, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1892,9 +1887,9 @@ H5T__conv_dcomplex_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, LLONG, H5_double_complex, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1912,9 +1907,9 @@ H5T__conv_dcomplex_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(DOUBLE_COMPLEX, ULLONG, H5_double_complex, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #ifdef H5_HAVE__FLOAT16 @@ -1933,14 +1928,9 @@ H5T__conv_dcomplex__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Zf(DOUBLE_COMPLEX, FLOAT16, H5_double_complex, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2046,9 +2036,9 @@ H5T__conv_lcomplex_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, SCHAR, H5_ldouble_complex, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2066,9 +2056,9 @@ H5T__conv_lcomplex_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, UCHAR, H5_ldouble_complex, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2085,9 +2075,9 @@ H5T__conv_lcomplex_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, SHORT, H5_ldouble_complex, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2105,9 +2095,9 @@ H5T__conv_lcomplex_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, USHORT, H5_ldouble_complex, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2124,9 +2114,9 @@ H5T__conv_lcomplex_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, INT, H5_ldouble_complex, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2144,9 +2134,9 @@ H5T__conv_lcomplex_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, UINT, H5_ldouble_complex, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2163,9 +2153,9 @@ H5T__conv_lcomplex_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, LONG, H5_ldouble_complex, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2183,9 +2173,9 @@ H5T__conv_lcomplex_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, ULONG, H5_ldouble_complex, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2204,9 +2194,9 @@ H5T__conv_lcomplex_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, LLONG, H5_ldouble_complex, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #endif /* H5T_CONV_INTERNAL_LDOUBLE_LLONG */ @@ -2226,9 +2216,9 @@ H5T__conv_lcomplex_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const H5T_conv_ctx_t *conv_ctx, size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Zx(LDOUBLE_COMPLEX, ULLONG, H5_ldouble_complex, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #endif /* H5T_CONV_INTERNAL_LDOUBLE_ULLONG */ @@ -2249,14 +2239,9 @@ H5T__conv_lcomplex__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Zf(LDOUBLE_COMPLEX, FLOAT16, H5_ldouble_complex, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif #endif diff --git a/src/H5Tconv_float.c b/src/H5Tconv_float.c index a038b850d44..edc0c6ec0d7 100644 --- a/src/H5Tconv_float.c +++ b/src/H5Tconv_float.c @@ -1457,9 +1457,9 @@ H5T__conv__Float16_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT16, SCHAR, H5__Float16, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1476,9 +1476,9 @@ H5T__conv__Float16_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT16, UCHAR, H5__Float16, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1495,9 +1495,9 @@ H5T__conv__Float16_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT16, SHORT, H5__Float16, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1739,9 +1739,9 @@ H5T__conv_float_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, SCHAR, float, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1759,9 +1759,9 @@ H5T__conv_float_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, UCHAR, float, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1779,9 +1779,9 @@ H5T__conv_float_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, SHORT, float, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1799,9 +1799,9 @@ H5T__conv_float_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, USHORT, float, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1819,9 +1819,9 @@ H5T__conv_float_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, INT, float, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1839,9 +1839,9 @@ H5T__conv_float_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, UINT, float, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1859,9 +1859,9 @@ H5T__conv_float_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, LONG, float, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1879,9 +1879,9 @@ H5T__conv_float_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, ULONG, float, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1899,9 +1899,9 @@ H5T__conv_float_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, LLONG, float, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -1919,9 +1919,9 @@ H5T__conv_float_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(FLOAT, ULLONG, float, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #ifdef H5_HAVE__FLOAT16 @@ -1941,14 +1941,9 @@ H5T__conv_float__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Ff(FLOAT, FLOAT16, float, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2062,9 +2057,9 @@ H5T__conv_double_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, SCHAR, double, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2082,9 +2077,9 @@ H5T__conv_double_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, UCHAR, double, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2102,9 +2097,9 @@ H5T__conv_double_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, SHORT, double, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2122,9 +2117,9 @@ H5T__conv_double_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, USHORT, double, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2142,9 +2137,9 @@ H5T__conv_double_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, const size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, INT, double, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2162,9 +2157,9 @@ H5T__conv_double_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, UINT, double, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2182,9 +2177,9 @@ H5T__conv_double_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, LONG, double, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2202,9 +2197,9 @@ H5T__conv_double_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, ULONG, double, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2222,9 +2217,9 @@ H5T__conv_double_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, LLONG, double, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2242,9 +2237,9 @@ H5T__conv_double_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(DOUBLE, ULLONG, double, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #ifdef H5_HAVE__FLOAT16 @@ -2264,14 +2259,9 @@ H5T__conv_double__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Ff(DOUBLE, FLOAT16, double, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2385,9 +2375,9 @@ H5T__conv_ldouble_schar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, SCHAR, long double, signed char, SCHAR_MIN, SCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2405,9 +2395,9 @@ H5T__conv_ldouble_uchar(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, UCHAR, long double, unsigned char, 0, UCHAR_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2425,9 +2415,9 @@ H5T__conv_ldouble_short(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, SHORT, long double, short, SHRT_MIN, SHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2445,9 +2435,9 @@ H5T__conv_ldouble_ushort(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, USHORT, long double, unsigned short, 0, USHRT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2465,9 +2455,9 @@ H5T__conv_ldouble_int(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, cons size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, INT, long double, int, INT_MIN, INT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2485,9 +2475,9 @@ H5T__conv_ldouble_uint(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, UINT, long double, unsigned int, 0, UINT_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2505,9 +2495,9 @@ H5T__conv_ldouble_long(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, LONG, long double, long, LONG_MIN, LONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2525,9 +2515,9 @@ H5T__conv_ldouble_ulong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, ULONG, long double, unsigned long, 0, ULONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } /*------------------------------------------------------------------------- @@ -2546,9 +2536,9 @@ H5T__conv_ldouble_llong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, LLONG, long double, long long, LLONG_MIN, LLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #endif /*H5T_CONV_INTERNAL_LDOUBLE_LLONG*/ @@ -2568,9 +2558,9 @@ H5T__conv_ldouble_ullong(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c size_t nelmts, size_t buf_stride, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { - H5_GCC_CLANG_DIAG_OFF("float-equal") + H5_WARN_FLOAT_EQUAL_OFF H5T_CONV_Fx(LDOUBLE, ULLONG, long double, unsigned long long, 0, ULLONG_MAX); - H5_GCC_CLANG_DIAG_ON("float-equal") + H5_WARN_FLOAT_EQUAL_ON } #endif /*H5T_CONV_INTERNAL_LDOUBLE_ULLONG*/ @@ -2592,14 +2582,9 @@ H5T__conv_ldouble__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Ff(LDOUBLE, FLOAT16, long double, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif #endif diff --git a/src/H5Tconv_integer.c b/src/H5Tconv_integer.c index 4a728c6383b..0bf31546ee3 100644 --- a/src/H5Tconv_integer.c +++ b/src/H5Tconv_integer.c @@ -2082,14 +2082,9 @@ H5T__conv_ushort__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(USHORT, FLOAT16, unsigned short, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2375,14 +2370,9 @@ H5T__conv_int__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, con void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(INT, FLOAT16, int, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2668,14 +2658,9 @@ H5T__conv_uint__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(UINT, FLOAT16, unsigned int, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -2961,14 +2946,9 @@ H5T__conv_long__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, co void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(LONG, FLOAT16, long, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -3254,14 +3234,9 @@ H5T__conv_ulong__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(ULONG, FLOAT16, unsigned long, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -3547,14 +3522,9 @@ H5T__conv_llong__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, c void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(LLONG, FLOAT16, long long, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif @@ -3844,14 +3814,9 @@ H5T__conv_ullong__Float16(const H5T_t *st, const H5T_t *dt, H5T_cdata_t *cdata, size_t H5_ATTR_UNUSED bkg_stride, void *buf, void H5_ATTR_UNUSED *bkg) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF H5T_CONV_Xf(ULLONG, FLOAT16, unsigned long long, H5__Float16, -FLT16_MAX, FLT16_MAX); - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON } #endif diff --git a/src/H5Tinit_float.c b/src/H5Tinit_float.c index ca89207ce90..e1659e452bf 100644 --- a/src/H5Tinit_float.c +++ b/src/H5Tinit_float.c @@ -89,10 +89,10 @@ for (_byte_mask = (uint8_t)1; _byte_mask; _byte_mask = (uint8_t)(_byte_mask << 1)) { \ _buf1[_i] ^= _byte_mask; \ H5MM_memcpy((void *)&_v2, (const void *)_buf1, sizeof(TYPE)); \ - H5_GCC_CLANG_DIAG_OFF("float-equal") \ + H5_WARN_FLOAT_EQUAL_OFF \ if (_v1 != _v2) \ _pad_mask[_i] |= _byte_mask; \ - H5_GCC_CLANG_DIAG_ON("float-equal") \ + H5_WARN_FLOAT_EQUAL_ON \ _buf1[_i] ^= _byte_mask; \ } \ \ diff --git a/src/H5Tnative.c b/src/H5Tnative.c index c15f8ef227a..d02a577bc58 100644 --- a/src/H5Tnative.c +++ b/src/H5Tnative.c @@ -545,14 +545,6 @@ H5T__get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_ali FUNC_LEAVE_NOAPI(ret_value) } /* end H5T__get_native_type() */ -/* Disable warning for intentional identical branches here -QAK */ -/* - * This pragma only needs to surround the "duplicated branches" in - * the code below, but early (4.4.7, at least) gcc only allows - * diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_DIAG_OFF("duplicated-branches") - /*------------------------------------------------------------------------- * Function: H5T__get_native_integer * @@ -584,6 +576,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction, FUNC_ENTER_PACKAGE + H5_WARN_DUPLICATED_BRANCHES_OFF if (direction == H5T_DIR_DEFAULT || direction == H5T_DIR_ASCEND) { if (prec <= H5T_get_precision((H5T_t *)H5I_object(H5T_NATIVE_SCHAR_g))) { match = H5T_NATIVE_INT_MATCH_CHAR; @@ -632,6 +625,7 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction, native_size = sizeof(char); } } + H5_WARN_DUPLICATED_BRANCHES_ON /* Set the appropriate native datatype information */ switch (match) { @@ -699,15 +693,6 @@ H5T__get_native_integer(size_t prec, H5T_sign_t sign, H5T_direction_t direction, done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5T__get_native_integer() */ -H5_GCC_DIAG_ON("duplicated-branches") - -/* Disable warning for intentional identical branches here -QAK */ -/* - * This pragma only needs to surround the "duplicated branches" in - * the code below, but early (4.4.7, at least) gcc only allows - * diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_DIAG_OFF("duplicated-branches") /*------------------------------------------------------------------------- * Function: H5T__get_native_float @@ -741,6 +726,7 @@ H5T__get_native_float(size_t size, H5T_direction_t direction, size_t *struct_ali assert(size > 0); + H5_WARN_DUPLICATED_BRANCHES_OFF if (direction == H5T_DIR_DEFAULT || direction == H5T_DIR_ASCEND) { #ifdef H5_HAVE__FLOAT16 if (size <= sizeof(H5__Float16)) { @@ -790,6 +776,7 @@ H5T__get_native_float(size_t size, H5T_direction_t direction, size_t *struct_ali } #endif } + H5_WARN_DUPLICATED_BRANCHES_ON /* Set the appropriate native floating point information */ switch (match) { @@ -832,15 +819,6 @@ H5T__get_native_float(size_t size, H5T_direction_t direction, size_t *struct_ali done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5T__get_native_float() */ -H5_GCC_DIAG_ON("duplicated-branches") - -/* Disable warning for intentional identical branches here -QAK */ -/* - * This pragma only needs to surround the "duplicated branches" in - * the code below, but early (4.4.7, at least) gcc only allows - * diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_DIAG_OFF("duplicated-branches") /*------------------------------------------------------------------------- * Function: H5T__get_native_bitfield @@ -866,6 +844,7 @@ H5T__get_native_bitfield(size_t prec, H5T_direction_t direction, size_t *struct_ FUNC_ENTER_PACKAGE + H5_WARN_DUPLICATED_BRANCHES_OFF if (direction == H5T_DIR_DEFAULT || direction == H5T_DIR_ASCEND) { if (prec <= H5T_get_precision((H5T_t *)H5I_object(H5T_NATIVE_B8_g))) { tid = H5T_NATIVE_B8; @@ -915,6 +894,7 @@ H5T__get_native_bitfield(size_t prec, H5T_direction_t direction, size_t *struct_ align = H5T_NATIVE_UINT8_ALIGN_g; } } + H5_WARN_DUPLICATED_BRANCHES_ON /* Create new native type */ assert(tid >= 0); @@ -931,7 +911,6 @@ H5T__get_native_bitfield(size_t prec, H5T_direction_t direction, size_t *struct_ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5T__get_native_bitfield() */ -H5_GCC_DIAG_ON("duplicated-branches") /*------------------------------------------------------------------------- * Function: H5T__cmp_offset diff --git a/src/H5Tref.c b/src/H5Tref.c index 526ea696f3c..7f09fae24ea 100644 --- a/src/H5Tref.c +++ b/src/H5Tref.c @@ -760,7 +760,7 @@ H5T__ref_mem_write(H5VL_object_t *src_file, const void *src_buf, size_t src_size * the "blob". Disable this warning here (at least temporarily) * for this reason. */ -H5_GCC_CLANG_DIAG_OFF("cast-qual") +H5_WARN_CAST_AWAY_CONST_OFF static herr_t H5T__ref_disk_isnull(const H5VL_object_t *src_file, const void *src_buf, bool *isnull) { @@ -800,7 +800,7 @@ H5T__ref_disk_isnull(const H5VL_object_t *src_file, const void *src_buf, bool *i done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5T__ref_disk_isnull() */ -H5_GCC_CLANG_DIAG_ON("cast-qual") +H5_WARN_CAST_AWAY_CONST_ON /*------------------------------------------------------------------------- * Function: H5T__ref_disk_setnull diff --git a/src/H5build_settings.cmake.c.in b/src/H5build_settings.cmake.c.in index ecbd08eb666..c839e89ca74 100644 --- a/src/H5build_settings.cmake.c.in +++ b/src/H5build_settings.cmake.c.in @@ -12,8 +12,7 @@ #include "H5private.h" -H5_GCC_DIAG_OFF("larger-than=") -H5_CLANG_DIAG_OFF("overlength-strings") +H5_WARN_LARGE_STACK_OBJECTS_OFF const char H5build_settings[]= " SUMMARY OF THE HDF5 CONFIGURATION\n" @@ -113,5 +112,4 @@ const char H5build_settings[]= " Optimization instrumentation: @HDF5_Enable_Instrument@\n" ; -H5_GCC_DIAG_ON("larger-than=") -H5_CLANG_DIAG_OFF("overlength-strings") +H5_WARN_LARGE_STACK_OBJECTS_ON diff --git a/src/H5private.h b/src/H5private.h index 36398f6817e..a2e1388da92 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -338,7 +338,7 @@ * datatypes may cause warnings due to the comparison against * PTRDIFF_MAX and comparison of < 0 after conversion to ptrdiff_t. * For the time being, these can be suppressed with - * H5_GCC_CLANG_DIAG_OFF("type-limits")/H5_GCC_CLANG_DIAG_ON("type-limits") + * H5_WARN_USELESS_COMPARISON_(OFF|ON). */ /* clang-format off */ #define H5_IS_BUFFER_OVERFLOW(ptr, size, buffer_end) \ @@ -589,9 +589,11 @@ typedef struct stat h5_stat_t; * types and other types. */ #if defined(H5_HAVE_COMPLEX_NUMBERS) && defined(H5_HAVE_C99_COMPLEX_NUMBERS) +H5_WARN_C99_EXTENSIONS_OFF typedef float _Complex H5_float_complex; typedef double _Complex H5_double_complex; typedef long double _Complex H5_ldouble_complex; +H5_WARN_C99_EXTENSIONS_OFF #endif /* __int64 is the correct type for the st_size field of the _stati64 diff --git a/src/H5system.c b/src/H5system.c index 476790e7424..a2c5a36d0f7 100644 --- a/src/H5system.c +++ b/src/H5system.c @@ -1370,9 +1370,9 @@ H5_strcasestr(const char *haystack, const char *needle) /* if all characters in needle matched we found it */ if (*n == 0) { /* must discard const qualifier here, so turn off the warning */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF return (char *)haystack; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON } } while (*haystack++); return 0; diff --git a/src/H5warnings.h b/src/H5warnings.h index 4dd03e2b7fa..205f5810e76 100644 --- a/src/H5warnings.h +++ b/src/H5warnings.h @@ -12,62 +12,312 @@ /* * Macros for suppressing warnings + * + * These macros can be used to suppress compiler warnings that are difficult + * or impossible to engineer around. By suppressing these warnings, we make + * it easier to identify warnings created by new code and can build with + * -Werror in CI to ensure new warnings don't get added to the code. + * + * There are a few suppression macros that have been added to paper over Java + * JNI quirks. These macros should never be used outside of the JNI code. + * + * USAGE: + * + * The macros are used in ON/OFF pairs. (i.e. H5_WARN_FOO_(ON|OFF)). To + * suppress a warning, add the OFF macro before the offending line(s) of + * code, and to turn it back on, add the ON macro. + * + * H5_WARN_FOO_OFF + * H5_WARN_BAR_OFF + * code_that_raises_warnings(); + * H5_WARN_BAR_ON + * H5_WARN_FOO_ON + * + * Since the warning macros work by pushing and popping diagnostic contexts, + * warnings should be switched back on in reverse order. In practice, the ON + * macro is just a generic pop, so it doesn't matter which one gets used or + * in what order they get called, but using the wrong macro will make it + * harder to reason about the code. + * + * Suppression macro pairs should span the minimum amount of code that + * quiets the warning. Ideally, a single line of code. Compilers in the + * past limited diagnostic pragmas to outside of functions, but this + * is no longer the case in any compiler we care about. + * + * LIMITATIONS: + * + * The warning macros use compiler pragmas, which limits where the suppression + * macros can be used. The most obvious limitation is that they often can't + * be used in macros. + * + * ADDING A NEW MACRO: + * + * - First, ask yourself if we really need a new warning macro. Do your best + * to actually correct warnings and not just suppress them. If a compiler + * update starts raising a bunch of new warnings we are unlikely to fix, + * consider shutting down the warning flag globally using the compiler + * flags (like -Wno-foo-warning). + * + * - The macro should have a helpful comment about why the warning should + * be suppressed and not corrected. + * + * - The macro name should reflect the actual problem, not the name of the + * compiler warning option. Names are of the form H5_WARN__(ON|OFF). + * + * - Be careful with the ifdefs. clang defines __GNUC__, for example, so + * you can't simply check for that if you have a gcc-specific warning. + * Check for compiler version numbers in the macros to avoid warnings + * about undefined diagnostics in older compilers. + * + * - Add the new macro to the list in the .clang-format file. */ #ifndef H5warnings_H #define H5warnings_H -/* Macros for enabling/disabling particular GCC / clang warnings +/* Macros for enabling/disabling particular gcc / clang warnings * * (see the following web-sites for more info: * http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html * http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas + * + * _Pragma is C99 and should work with all compilers, though permitted + * placement may vary + * + * "GCC" in the pragma works for both clang/llvm and gcc */ -#define H5_DIAG_JOINSTR(x, y) x y -#define H5_DIAG_DO_PRAGMA(x) _Pragma(#x) -#define H5_DIAG_PRAGMA(x) H5_DIAG_DO_PRAGMA(GCC diagnostic x) +#define H5_WARN_JOINSTR(x, y) x y +#define H5_WARN_DO_PRAGMA(x) _Pragma(#x) +#define H5_WARN_PRAGMA(x) H5_WARN_DO_PRAGMA(GCC diagnostic x) /* Allow suppression of compiler diagnostics unless H5_SHOW_ALL_WARNINGS is - * defined (enabled with '--enable-show-all-warnings' configure option). + * defined + */ +/* clang-format off */ +#ifdef H5_SHOW_ALL_WARNINGS + #define H5_WARN_OFF(x) + #define H5_WARN_ON(x) +#else + #if (((__GNUC__ * 100) + __GNUC_MINOR__) >= 406) || defined(__clang__) + /* gcc 4.6+ /clang */ + #define H5_WARN_OFF(x) H5_WARN_PRAGMA(push) H5_WARN_PRAGMA(ignored H5_WARN_JOINSTR("-W", x)) + #define H5_WARN_ON(x) H5_WARN_PRAGMA(pop) + #endif +#endif +/* clang-format on */ + +/********************* + * SPECIFIC WARNINGS * + *********************/ + +/* Suppress warnings about C11 extensions */ +#if defined(__clang__) +#define H5_WARN_C11_EXTENSIONS_OFF H5_WARN_OFF("c11-extensions") +#define H5_WARN_C11_EXTENSIONS_ON H5_WARN_ON("c11-extensions") +#else +#define H5_WARN_C11_EXTENSIONS_OFF +#define H5_WARN_C11_EXTENSIONS_ON +#endif + +/* Suppress warnings about C99 extensions. We require a C11 compiler + * but some C++ compilers will complain about using C99 extensions + * like _Complex when H5private.h is brought in via h5test.h. */ -#ifndef H5_SHOW_ALL_WARNINGS -#define H5_DIAG_OFF(x) H5_DIAG_PRAGMA(push) H5_DIAG_PRAGMA(ignored H5_DIAG_JOINSTR("-W", x)) -#define H5_DIAG_ON(x) H5_DIAG_PRAGMA(pop) +#if defined(__GNUC__) && defined(__cplusplus) +#define H5_WARN_C99_EXTENSIONS_OFF H5_WARN_OFF("c99-extensions") +#define H5_WARN_C99_EXTENSIONS_ON H5_WARN_ON("c99-extensions") +#else +#define H5_WARN_C99_EXTENSIONS_OFF +#define H5_WARN_C99_EXTENSIONS_ON +#endif + +/* Suppress warnings about casting away const */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_CAST_AWAY_CONST_OFF H5_WARN_OFF("cast-qual") +#define H5_WARN_CAST_AWAY_CONST_ON H5_WARN_ON("cast-qual") #else -#define H5_DIAG_OFF(x) -#define H5_DIAG_ON(x) +#define H5_WARN_CAST_AWAY_CONST_OFF +#define H5_WARN_CAST_AWAY_CONST_ON #endif -/* Macros for enabling/disabling particular GCC-only warnings. - * These pragmas are only implemented usefully in gcc 4.6+ +/* Suppress warnings about duplicate logic branches. These can + * show up when we take different branches based on type sizes. + * On some platforms, the type sizes will be the same, leading + * to the warning. */ -#if (((__GNUC__ * 100) + __GNUC_MINOR__) >= 406) -#define H5_GCC_DIAG_OFF(x) H5_DIAG_OFF(x) -#define H5_GCC_DIAG_ON(x) H5_DIAG_ON(x) +#if defined(__GNUC__) && !defined(__clang__) +#define H5_WARN_DUPLICATED_BRANCHES_OFF H5_WARN_OFF("duplicated-branches") +#define H5_WARN_DUPLICATED_BRANCHES_ON H5_WARN_ON("duplicated-branches") #else -#define H5_GCC_DIAG_OFF(x) -#define H5_GCC_DIAG_ON(x) +#define H5_WARN_DUPLICATED_BRANCHES_OFF +#define H5_WARN_DUPLICATED_BRANCHES_ON #endif -/* Macros for enabling/disabling particular clang-only warnings. +/* Suppress warnings about operations that reduce floating-point + * precision. This is only a problem in a few places in the tests + * where we do some number munging. + */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_FLOAT_CONVERSION_OFF H5_WARN_OFF("float-conversion") +#define H5_WARN_FLOAT_CONVERSION_ON H5_WARN_ON("float-conversion") +#else +#define H5_WARN_FLOAT_CONVERSION_OFF +#define H5_WARN_FLOAT_CONVERSION_ON +#endif + +/* Suppress warnings about directly comparing floats. This is + * typically where we are comparing a floating point value to + * an exact value like 0. + */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_FLOAT_EQUAL_OFF H5_WARN_OFF("float-equal") +#define H5_WARN_FLOAT_EQUAL_ON H5_WARN_ON("float-equal") +#else +#define H5_WARN_FLOAT_EQUAL_OFF +#define H5_WARN_FLOAT_EQUAL_ON +#endif + +/* Suppress warnings about using format strings that aren't string + * literals + */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_FORMAT_NONLITERAL_OFF H5_WARN_OFF("format-nonliteral") +#define H5_WARN_FORMAT_NONLITERAL_ON H5_WARN_ON("format-nonliteral") +#else +#define H5_WARN_FORMAT_NONLITERAL_OFF +#define H5_WARN_FORMAT_NONLITERAL_ON +#endif + +/* Suppress warnings about possible truncation in format strings */ +#if defined(__GNUC__) && !defined(__clang__) +#define H5_WARN_FORMAT_TRUNCATION_OFF H5_WARN_OFF("format-truncation") +#define H5_WARN_FORMAT_TRUNCATION_ON H5_WARN_ON("format-truncation") +#else +#define H5_WARN_FORMAT_TRUNCATION_OFF +#define H5_WARN_FORMAT_TRUNCATION_ON +#endif + +/* Suppress warnings about implicit fallthrough. Currently, + * clang is the only compiler that has trouble with this. */ #if defined(__clang__) -#define H5_CLANG_DIAG_OFF(x) H5_DIAG_OFF(x) -#define H5_CLANG_DIAG_ON(x) H5_DIAG_ON(x) +#define H5_WARN_IMPLICIT_FALLTHROUGH_OFF H5_WARN_OFF("implicit-fallthrough") +#define H5_WARN_IMPLICIT_FALLTHROUGH_ON H5_WARN_ON("implicit-fallthrough") #else -#define H5_CLANG_DIAG_OFF(x) -#define H5_CLANG_DIAG_ON(x) +#define H5_WARN_IMPLICIT_FALLTHROUGH_OFF +#define H5_WARN_IMPLICIT_FALLTHROUGH_ON #endif -/* Macros for enabling/disabling particular GCC / clang warnings. - * These macros should be used for warnings supported by both gcc and clang. +/* Suppress warnings about large stack and frame objects. We + * could also include -Wframe-larger-than, but all those warnings + * have been squashed so it's not necessary at this time. */ -#if (((__GNUC__ * 100) + __GNUC_MINOR__) >= 406) || defined(__clang__) -#define H5_GCC_CLANG_DIAG_OFF(x) H5_DIAG_OFF(x) -#define H5_GCC_CLANG_DIAG_ON(x) H5_DIAG_ON(x) +#if defined(__clang__) +/* clang can only suppress warnings about oversize strings */ +#define H5_WARN_LARGE_STACK_OBJECTS_OFF H5_WARN_OFF("overlength-strings") +#define H5_WARN_LARGE_STACK_OBJECTS_ON H5_WARN_ON("overlength-strings") +#elif defined (__GNUC__) +/* gcc can suppress warnings about any oversize object */ +#define H5_WARN_LARGE_STACK_OBJECTS_OFF H5_WARN_OFF("larger-than=") +#define H5_WARN_LARGE_STACK_OBJECTS_ON H5_WARN_ON("larger-than=") +#else +#define H5_WARN_LARGE_STACK_OBJECTS_OFF +#define H5_WARN_LARGE_STACK_OBJECTS_ON +#endif + +/* Suppress warnings about possible string overflow. + * + * This warning may have to be suppressed in MPI code where + * MPI_STATUSES_IGNORE is passed as an MPI_Status array. + * + * https://github.com/pmodels/mpich/issues/5687 + */ +#if defined(__GNUC__) && !defined(__clang__) +#define H5_WARN_MPI_STATUSES_IGNORE_OFF H5_WARN_OFF("stringop-overflow") +#define H5_WARN_MPI_STATUSES_IGNORE_ON H5_WARN_ON("stringop-overflow") +#else +#define H5_WARN_MPI_STATUSES_IGNORE_OFF +#define H5_WARN_MPI_STATUSES_IGNORE_ON +#endif + +/* Disable warnings concerning non-standard extensions, like F16 */ +/* clang */ +#if defined(__clang__) +#define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("pedantic") +#define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("pedantic") +/* gcc 14+ */ +#elif defined(__GNUC__) && __GNUC__ >= 14 +#define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c23-compat") +#define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c23-compat") +/* gcc 9-13 */ +#elif defined(__GNUC__) && __GNUC__ >= 9 +#define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c2x-compat") +#define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c2x-compat") +#else +/* Everything else */ +#define H5_WARN_NONSTD_SUFFIX_OFF +#define H5_WARN_NONSTD_SUFFIX_ON +#endif + +/* Suppress warnings about converting between function and object + * pointers. This is technically incorrect but unavoidable in the + * plugin code, since it uses dlsym() to load plugins. POSIX allows + * this, so it's fine. + */ +#if defined(__GNUC__) && !defined(__clang__) +#define H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF H5_WARN_OFF("pedantic") +#define H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON H5_WARN_ON("pedantic") +#else +#define H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF +#define H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON +#endif + +/* Suppress warnings about comparisons that will always be true or + * false, typically when checking for negative values w/ unsigned + * types. + */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_USELESS_COMPARISON_OFF H5_WARN_OFF("type-limits") +#define H5_WARN_USELESS_COMPARISON_ON H5_WARN_ON("type-limits") +#else +#define H5_WARN_USELESS_COMPARISON_OFF +#define H5_WARN_USELESS_COMPARISON_ON +#endif + +/********************* + * JAVA JNI WARNINGS * + *********************/ + +/* These warning suppression macros are ONLY used in the Java wrappers + * and are due to quirks of the JNI interface. In normal HDF5 code, + * these warnings should be corrected, not suppressed. + */ + +/* Suppress warnings about missing prototypes */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_MISSING_PROTOTPYE_OFF H5_WARN_OFF("missing-prototype") +#define H5_WARN_MISSING_PROTOTYPE_ON H5_WARN_ON("missing-prototype") +#else +#define H5_WARN_MISSING_PROTOTYPE_OFF +#define H5_WARN_MISSING_PROTOTYPE_ON +#endif + +/* Suppress warnings about signed/unsigned conversions */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_SIGN_CONVERSION_OFF H5_WARN_OFF("sign-conversion") +#define H5_WARN_SIGN_CONVERSION_ON H5_WARN_ON("sign-conversion") +#else +#define H5_WARN_SIGN_CONVERSION_OFF +#define H5_WARN_SIGN_CONVERSION_ON +#endif + +/* Suppress warnings about unused parameters */ +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_UNUSED_PARAMETER_OFF H5_WARN_OFF("unused-parameter") +#define H5_WARN_UNUSED_PARAMETER_ON H5_WARN_ON("unused-parameter") #else -#define H5_GCC_CLANG_DIAG_OFF(x) -#define H5_GCC_CLANG_DIAG_ON(x) +#define H5_WARN_UNUSED_PARAMETER_OFF +#define H5_WARN_UNUSED_PARAMETER_ON #endif #endif /* H5warnings_H */ diff --git a/test/big.c b/test/big.c index 7ef0f41d6c6..48f1b3e406c 100644 --- a/test/big.c +++ b/test/big.c @@ -239,13 +239,6 @@ supports_big(void) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'name' in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static int enough_room(hid_t fapl) { @@ -264,7 +257,9 @@ enough_room(hid_t fapl) /* Create files */ for (i = 0; i < NELMTS(fd); i++) { + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(name, sizeof(name), filename, i); + H5_WARN_FORMAT_NONLITERAL_ON if ((fd[i] = HDopen(name, O_RDWR | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_RW)) < 0) { goto done; } @@ -279,7 +274,9 @@ enough_room(hid_t fapl) done: for (i = 0; i < NELMTS(fd) && fd[i] >= 0; i++) { + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(name, sizeof(name), filename, i); + H5_WARN_FORMAT_NONLITERAL_ON if (HDclose(fd[i]) < 0) ret_value = 0; HDremove(name); @@ -287,7 +284,6 @@ enough_room(hid_t fapl) return ret_value; } -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: writer diff --git a/test/dt_arith.c b/test/dt_arith.c index c493eab2989..16de6819170 100644 --- a/test/dt_arith.c +++ b/test/dt_arith.c @@ -3511,11 +3511,7 @@ test_conv_flt_1_hw_conv_from_flt(void *hw_dst, unsigned char *src_buf, size_t id case FLT_FLOAT16: #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -3525,8 +3521,7 @@ test_conv_flt_1_hw_conv_from_flt(void *hw_dst, unsigned char *src_buf, size_t id else if (fabsf(aligned) < (float)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; #else H5_FAILED(); @@ -3631,11 +3626,7 @@ test_conv_flt_1_hw_conv_from_double(void *hw_dst, unsigned char *src_buf, size_t case FLT_FLOAT16: #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -3645,8 +3636,7 @@ test_conv_flt_1_hw_conv_from_double(void *hw_dst, unsigned char *src_buf, size_t else if (fabs(aligned) < (double)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; #else H5_FAILED(); @@ -3762,11 +3752,7 @@ test_conv_flt_1_hw_conv_from_ldouble(void *hw_dst, unsigned char *src_buf, size_ case FLT_FLOAT16: #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -3776,8 +3762,7 @@ test_conv_flt_1_hw_conv_from_ldouble(void *hw_dst, unsigned char *src_buf, size_ else if (fabsl(aligned) < (long double)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; #else H5_FAILED(); @@ -3902,11 +3887,7 @@ test_conv_flt_1_hw_conv_from_fcomplex(void *hw_dst, unsigned char *src_buf, size float real_val = crealf(aligned); /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF #ifdef H5_HAVE_C99_COMPLEX_NUMBERS *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -3920,8 +3901,7 @@ test_conv_flt_1_hw_conv_from_fcomplex(void *hw_dst, unsigned char *src_buf, size else if (fabsf(real_val) < (float)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; } #else @@ -4026,11 +4006,7 @@ test_conv_flt_1_hw_conv_from_dcomplex(void *hw_dst, unsigned char *src_buf, size case FLT_FLOAT16: #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF #ifdef H5_HAVE_C99_COMPLEX_NUMBERS *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -4045,8 +4021,7 @@ test_conv_flt_1_hw_conv_from_dcomplex(void *hw_dst, unsigned char *src_buf, size else if (fabs(real_val) < (double)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; #else H5_FAILED(); @@ -4198,11 +4173,7 @@ test_conv_flt_1_hw_conv_from_lcomplex(void *hw_dst, unsigned char *src_buf, size case FLT_FLOAT16: #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF #ifdef H5_HAVE_C99_COMPLEX_NUMBERS *((H5__Float16 *)hw_dst) = (H5__Float16)aligned; @@ -4217,8 +4188,7 @@ test_conv_flt_1_hw_conv_from_lcomplex(void *hw_dst, unsigned char *src_buf, size else if (fabsl(real_val) < (long double)FLT16_MIN) ret = CONV_UNDERFLOW; - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON break; #else H5_FAILED(); @@ -4605,21 +4575,16 @@ test_conv_flt_1(const char *name, int run_test, hid_t src, hid_t dst) else if (src_type == FLT_FLOAT16) { #ifdef H5_HAVE__FLOAT16 /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF /* Suppress warning about float conversion in macro code path * that sets H5__Float16 multiply = 100000000;, which shouldn't * happen due to the small value of FLT16_MAX_10_EXP. */ - H5_GCC_CLANG_DIAG_OFF("float-conversion") + H5_WARN_FLOAT_CONVERSION_OFF INIT_FP_NORM(H5__Float16, FLT16_MAX, FLT16_MIN, FLT16_MAX_10_EXP, FLT16_MIN_10_EXP, src_size, dst_size, buf, saved, nelmts); - H5_GCC_CLANG_DIAG_ON("float-conversion") - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_FLOAT_CONVERSION_ON + H5_WARN_NONSTD_SUFFIX_ON #else assert(0 && "Should not reach this point!"); #endif @@ -5014,11 +4979,7 @@ test_conv_flt_1(const char *name, int run_test, hid_t src, hid_t dst) memcpy(&x, &buf[j * dst_size], sizeof(H5__Float16)); /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF #ifdef H5_HAVE_FABSF16 if (underflow && fabsf16(x) <= FLT16_MIN && fabsf16(hw_half) <= FLT16_MIN) continue; /* all underflowed, no error */ @@ -5027,8 +4988,7 @@ test_conv_flt_1(const char *name, int run_test, hid_t src, hid_t dst) fabsf((float)hw_half) <= (float)FLT16_MIN) continue; /* all underflowed, no error */ #endif - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_NONSTD_SUFFIX_ON if (overflow && my_isinf(dendian, buf + j * sizeof(H5__Float16), dst_size, dst_mpos, dst_msize, dst_epos, dst_esize)) @@ -7850,21 +7810,16 @@ test_conv_int_fp(const char *name, int run_test, hid_t src, hid_t dst) #ifdef H5_HAVE__FLOAT16 if (run_test == TEST_NORMAL) { /* Suppress warning about non-standard floating-point literal suffix */ - H5_GCC_CLANG_DIAG_OFF("pedantic") - /* Suppress GCC warning about non-standard floating-point literal suffix (F16) - * before C23. This should be fine when _Float16 support is available. - */ - H5_GCC_DIAG_OFF("c11-c2x-compat") + H5_WARN_NONSTD_SUFFIX_OFF /* Suppress warning about float conversion in macro code path * that sets H5__Float16 multiply = 100000000;, which shouldn't * happen due to the small value of FLT16_MAX_10_EXP. */ - H5_GCC_CLANG_DIAG_OFF("float-conversion") + H5_WARN_FLOAT_CONVERSION_OFF INIT_FP_NORM(H5__Float16, FLT16_MAX, FLT16_MIN, FLT16_MAX_10_EXP, FLT16_MIN_10_EXP, src_size, dst_size, buf, saved, nelmts); - H5_GCC_CLANG_DIAG_ON("float-conversion") - H5_GCC_DIAG_ON("c11-c2x-compat") - H5_GCC_CLANG_DIAG_ON("pedantic") + H5_WARN_FLOAT_CONVERSION_ON + H5_WARN_NONSTD_SUFFIX_ON } else if (run_test == TEST_DENORM) { INIT_FP_DENORM(H5__Float16, FLT16_MANT_DIG, src_size, src_nbits, sendian, dst_size, buf, saved, diff --git a/test/error_test.c b/test/error_test.c index b303d89c8a0..050cdfe01e7 100644 --- a/test/error_test.c +++ b/test/error_test.c @@ -311,13 +311,6 @@ long_desc_cb(unsigned H5_ATTR_UNUSED n, const H5E_error2_t *err_desc, void *clie * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'full_desc' in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t test_long_desc(void) { @@ -347,10 +340,10 @@ test_long_desc(void) long_desc) < 0) TEST_ERROR; - /* Create the string that should be in the description. Must use snprintf here - * because snprintf is _snprintf on Windows - */ + /* Create the string that should be in the description */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(full_desc, (size_t)(LONG_DESC_SIZE + 128), format, long_desc); + H5_WARN_FORMAT_NONLITERAL_ON /* Make certain that the description is correct */ if (H5Ewalk2(H5E_DEFAULT, H5E_WALK_UPWARD, long_desc_cb, full_desc) < 0) @@ -373,7 +366,6 @@ test_long_desc(void) return -1; } /* end test_long_desc() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: dump_error diff --git a/test/file_image.c b/test/file_image.c index 1d7bdfab215..3f6e2e7e954 100644 --- a/test/file_image.c +++ b/test/file_image.c @@ -670,13 +670,6 @@ test_core(void) * ****************************************************************************** */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'member_file_name' in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static int test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl, bool user) { @@ -787,7 +780,9 @@ test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl file_size = 0; do { + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(member_file_name, (size_t)1024, file_name, i); + H5_WARN_FORMAT_NONLITERAL_ON /* get the size of the member file */ result = HDstat(member_file_name, &stat_buf); @@ -815,7 +810,9 @@ test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl while (size_remaining > 0) { /* construct the member file name */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(member_file_name, 1024, file_name, i); + H5_WARN_FORMAT_NONLITERAL_ON /* open the test file using standard I/O calls */ fd = HDopen(member_file_name, O_RDONLY); @@ -943,7 +940,6 @@ test_get_file_image(const char *test_banner, const int file_name_num, hid_t fapl error: return 1; } /* end test_get_file_image() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /****************************************************************************** * Function: test_get_file_image_error_rejection diff --git a/test/h5test.c b/test/h5test.c index 6dcfe1b8b05..607e003dc5b 100644 --- a/test/h5test.c +++ b/test/h5test.c @@ -1151,13 +1151,6 @@ h5_dump_info_object(MPI_Info info) /* * Gets the current size of a file (in bytes) */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * temp in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") h5_stat_size_t h5_get_file_size(const char *filename, hid_t fapl) { @@ -1268,7 +1261,9 @@ h5_get_file_size(const char *filename, hid_t fapl) /* Try all filenames possible, until we find one that's missing */ for (j = 0; /*void*/; j++) { /* Create the filename to query */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(temp, sizeof temp, filename, j); + H5_WARN_FORMAT_NONLITERAL_ON /* Check for existence of file */ if (HDaccess(temp, F_OK) < 0) @@ -1310,7 +1305,6 @@ h5_get_file_size(const char *filename, hid_t fapl) return (-1); } /* end get_file_size() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") #ifdef H5_HAVE_FILTER_SZIP /* @@ -1862,12 +1856,12 @@ H5_get_srcdir_filename(const char *filename) return NULL; /* Build path to test file. We're checking the length so suppress - * the gcc format-truncation warning. + * any format-truncation warnings. */ if ((strlen(srcdir) + strlen("testfiles/") + strlen(filename) + 1) < sizeof(srcdir_testpath)) { - H5_GCC_DIAG_OFF("format-truncation") + H5_WARN_FORMAT_TRUNCATION_OFF snprintf(srcdir_testpath, sizeof(srcdir_testpath), "%stestfiles/%s", srcdir, filename); - H5_GCC_DIAG_ON("format-truncation") + H5_WARN_FORMAT_TRUNCATION_ON return srcdir_testpath; } diff --git a/test/objcopy.c b/test/objcopy.c index 07b75cf35e3..b7776f240fc 100644 --- a/test/objcopy.c +++ b/test/objcopy.c @@ -1638,13 +1638,13 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags) * our usual attributes and fall-through comments don't * quiet the compiler. */ - H5_CLANG_DIAG_OFF("implicit-fallthrough") + H5_WARN_IMPLICIT_FALLTHROUGH_OFF case H5O_TYPE_UNKNOWN: case H5O_TYPE_NTYPES: default: assert(0 && "Unknown type of object"); break; - H5_CLANG_DIAG_ON("implicit-fallthrough") + H5_WARN_IMPLICIT_FALLTHROUGH_ON } /* end switch */ /* Close objects */ diff --git a/test/objcopy_ref.c b/test/objcopy_ref.c index fa9b4745e34..6044fc34469 100644 --- a/test/objcopy_ref.c +++ b/test/objcopy_ref.c @@ -909,10 +909,10 @@ compare_data(hid_t parent1, hid_t parent2, hid_t pid, hid_t tid, size_t nelmts, H5R_ref_t *ref_buf1, *ref_buf2; /* Aliases for buffers to compare */ /* Loop over elements in buffers */ - H5_GCC_CLANG_DIAG_OFF("cast-qual") + H5_WARN_CAST_AWAY_CONST_OFF ref_buf1 = (H5R_ref_t *)buf1; ref_buf2 = (H5R_ref_t *)buf2; - H5_GCC_CLANG_DIAG_ON("cast-qual") + H5_WARN_CAST_AWAY_CONST_ON for (u = 0; u < nelmts; u++, ref_buf1++, ref_buf2++) { hid_t obj1_id, obj2_id; /* IDs for objects referenced */ H5O_type_t obj1_type, obj2_type; /* Types of objects referenced */ @@ -1358,13 +1358,13 @@ compare_groups(hid_t gid, hid_t gid2, hid_t pid, int depth, unsigned copy_flags) * our usual attributes and fall-through comments don't * quiet the compiler. */ - H5_CLANG_DIAG_OFF("implicit-fallthrough") + H5_WARN_IMPLICIT_FALLTHROUGH_OFF case H5O_TYPE_UNKNOWN: case H5O_TYPE_NTYPES: default: assert(0 && "Unknown type of object"); break; - H5_CLANG_DIAG_ON("implicit-fallthrough") + H5_WARN_IMPLICIT_FALLTHROUGH_ON } /* end switch */ /* Close objects */ diff --git a/test/vfd.c b/test/vfd.c index 6f24e97d86f..cda74b4ae22 100644 --- a/test/vfd.c +++ b/test/vfd.c @@ -916,13 +916,6 @@ test_direct(void) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'first_name' in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t test_family_opens(char *fname, hid_t fa_pl) { @@ -932,7 +925,9 @@ test_family_opens(char *fname, hid_t fa_pl) int i; /* Case 1: reopen file with 1st member file name and default property list */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(first_name, sizeof(first_name), fname, 0); + H5_WARN_FORMAT_NONLITERAL_ON H5E_BEGIN_TRY { @@ -987,7 +982,6 @@ test_family_opens(char *fname, hid_t fa_pl) error: return -1; } /* end test_family_opens() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: test_family @@ -1202,13 +1196,6 @@ test_family(void) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'newname_individual', etc. in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t test_family_compat(void) { @@ -1238,6 +1225,7 @@ test_family_compat(void) * Since we're going to open the files with write mode, this protects the original * files. */ + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(newname_individual, sizeof(newname_individual), newname, counter); snprintf(pathname_individual, sizeof(pathname_individual), pathname, counter); @@ -1246,6 +1234,7 @@ test_family_compat(void) snprintf(newname_individual, sizeof(newname_individual), newname, counter); snprintf(pathname_individual, sizeof(pathname_individual), pathname, counter); } /* end while */ + H5_WARN_FORMAT_NONLITERAL_ON /* Make sure we can open the file. Use the read and write mode to flush the * superblock. */ @@ -1294,7 +1283,6 @@ test_family_compat(void) return -1; } /* end test_family_compat() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: test_family_member_fapl @@ -1422,13 +1410,6 @@ test_family_member_fapl(void) * *------------------------------------------------------------------------- */ -/* Disable warning for "format not a string literal" here -QAK */ -/* - * This pragma only needs to surround the snprintf() calls with - * 'sf_name' in the code below, but early (4.4.7, at least) gcc only - * allows diagnostic pragmas to be toggled outside of functions. - */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") static herr_t test_multi_opens(char *fname) { @@ -1438,7 +1419,9 @@ test_multi_opens(char *fname) /* Case: reopen with the name of super file and default property list */ snprintf(super_name, sizeof(super_name), "%%s-%c.h5", 's'); + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(sf_name, sizeof(sf_name), super_name, fname); + H5_WARN_FORMAT_NONLITERAL_ON H5E_BEGIN_TRY { @@ -1448,7 +1431,6 @@ test_multi_opens(char *fname) return (fid >= 0 ? FAIL : SUCCEED); } /* end test_multi_opens() */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") /*------------------------------------------------------------------------- * Function: test_multi diff --git a/testpar/t_prop.c b/testpar/t_prop.c index ee9b007b39e..e484a6744a9 100644 --- a/testpar/t_prop.c +++ b/testpar/t_prop.c @@ -70,14 +70,9 @@ test_encode_decode(hid_t orig_pl, int mpi_rank, int recv_proc) } /* end if */ if (0 == mpi_rank) { - /* gcc 11 complains about passing MPI_STATUSES_IGNORE as an MPI_Status - * array. See the discussion here: - * - * https://github.com/pmodels/mpich/issues/5687 - */ - H5_GCC_DIAG_OFF("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_OFF MPI_Waitall(2, req, MPI_STATUSES_IGNORE); - H5_GCC_DIAG_ON("stringop-overflow") + H5_WARN_MPI_STATUSES_IGNORE_ON } if (NULL != sbuf) diff --git a/testpar/t_subfiling_vfd.c b/testpar/t_subfiling_vfd.c index a79bc04a130..13d4160c0de 100644 --- a/testpar/t_subfiling_vfd.c +++ b/testpar/t_subfiling_vfd.c @@ -435,20 +435,16 @@ test_config_file(void) substr = strstr(config_buf, "hdf5_file"); VRFY(substr, "strstr succeeded"); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") snprintf(scan_format, sizeof(scan_format), "hdf5_file=%%%zus", (size_t)(PATH_MAX - 1)); VRFY((sscanf(substr, scan_format, tmp_buf) == 1), "sscanf succeeded"); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") VRFY((strcmp(tmp_buf, resolved_path) == 0), "strcmp succeeded"); substr = strstr(config_buf, "subfile_dir"); VRFY(substr, "strstr succeeded"); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") snprintf(scan_format, sizeof(scan_format), "subfile_dir=%%%zus", (size_t)(PATH_MAX - 1)); VRFY((sscanf(substr, scan_format, tmp_buf) == 1), "sscanf succeeded"); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") VRFY((strcmp(tmp_buf, subfile_dir) == 0), "strcmp succeeded"); diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c index 6c9a1cfd0ef..af8565dd9cc 100644 --- a/tools/lib/h5tools_dump.c +++ b/tools/lib/h5tools_dump.c @@ -734,10 +734,10 @@ h5tools_dump_region_data_blocks(hid_t region_space, hid_t region_id, FILE *strea for (indx = 0; indx < nblocks; indx++) { unsigned loop_indx; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(buffer, outputformat.dset_blockformat_pre, indx ? "," OPTIONAL_LINE_BREAK " " : "", (unsigned long)indx); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON /* Start coordinates and opposite corner */ for (loop_indx = 0; loop_indx < ndims; loop_indx++) @@ -1093,10 +1093,10 @@ h5tools_dump_region_data_points(hid_t region_space, hid_t region_id, FILE *strea for (indx = 0; indx < npoints; indx++) { unsigned loop_indx; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(buffer, outputformat.dset_ptformat_pre, indx ? "," OPTIONAL_LINE_BREAK " " : "", (unsigned long)indx); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON for (loop_indx = 0; loop_indx < ndims; loop_indx++) h5tools_str_append(buffer, "%s%" PRIuHSIZE, loop_indx ? "," : "(", diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c index c14d32f4904..032baf15bf5 100644 --- a/tools/lib/h5tools_str.c +++ b/tools/lib/h5tools_str.c @@ -251,9 +251,9 @@ h5tools_str_fmt(h5tools_str_t *str /*in,out*/, size_t start, const char *fmt) /* Reset the output string and append a formatted version */ h5tools_str_trunc(str, start); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(str, fmt, temp); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_ON /* Free the temp buffer if we allocated one */ if (temp != _temp) @@ -283,23 +283,22 @@ h5tools_str_prefix(h5tools_str_t *str /*in,out*/, const h5tool_format_t *info, h h5tools_str_reset(str); calc_acc_pos(ctx->ndims, elmtno, ctx->acc, ctx->pos); + + H5_WARN_FORMAT_NONLITERAL_OFF if (ctx->ndims > 0) { /* Print the index values */ for (i = 0; i < (size_t)ctx->ndims; i++) { if (i) h5tools_str_append(str, "%s", OPT(info->idx_sep, ",")); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") h5tools_str_append(str, OPT(info->idx_n_fmt, "%" PRIuHSIZE), (hsize_t)ctx->pos[i]); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } } else { /* Scalar */ - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") h5tools_str_append(str, OPT(info->idx_n_fmt, "%" PRIuHSIZE), (hsize_t)elmtno); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } + H5_WARN_FORMAT_NONLITERAL_ON H5TOOLS_DEBUG("str=%s", str->s); @@ -330,6 +329,8 @@ h5tools_str_region_prefix(h5tools_str_t *str /*in,out*/, const h5tool_format_t * h5tools_str_reset(str); calc_acc_pos(ctx->ndims, elmtno, ctx->acc, ctx->pos); + + H5_WARN_FORMAT_NONLITERAL_OFF if (ctx->ndims > 0) { /* Print the index values */ for (i = 0; i < (size_t)ctx->ndims; i++) { @@ -337,17 +338,14 @@ h5tools_str_region_prefix(h5tools_str_t *str /*in,out*/, const h5tool_format_t * if (i) h5tools_str_append(str, "%s", OPT(info->idx_sep, ",")); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") h5tools_str_append(str, OPT(info->idx_n_fmt, "%" PRIuHSIZE), (hsize_t)ctx->pos[i]); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } } else { /* Scalar */ - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") h5tools_str_append(str, OPT(info->idx_n_fmt, "%" PRIuHSIZE), (hsize_t)0); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } + H5_WARN_FORMAT_NONLITERAL_ON H5TOOLS_DEBUG("str=%s", str->s); @@ -466,9 +464,10 @@ h5tools_str_dump_space_blocks(h5tools_str_t *str, hid_t rspace, const h5tool_for for (u = 0; u < nblocks; u++) { unsigned v; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(str, info->dset_blockformat_pre, u ? "," OPTIONAL_LINE_BREAK " " : "", (unsigned long)u); + H5_WARN_FORMAT_NONLITERAL_ON /* Start coordinates and opposite corner */ for (v = 0; v < ndims; v++) @@ -478,7 +477,6 @@ h5tools_str_dump_space_blocks(h5tools_str_t *str, hid_t rspace, const h5tool_for h5tools_str_append(str, "%s%" PRIuHSIZE, v ? "," : ")-(", ptdata[u * 2 * ndims + v + ndims]); h5tools_str_append(str, ")"); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } free(ptdata); @@ -527,15 +525,15 @@ h5tools_str_dump_space_points(h5tools_str_t *str, hid_t rspace, const h5tool_for for (u = 0; u < npoints; u++) { unsigned v; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(str, info->dset_ptformat_pre, u ? "," OPTIONAL_LINE_BREAK " " : "", (unsigned long)u); + H5_WARN_FORMAT_NONLITERAL_ON for (v = 0; v < ndims; v++) h5tools_str_append(str, "%s%" PRIuHSIZE, v ? "," : "(", (ptdata[u * ndims + v])); h5tools_str_append(str, ")"); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") } free(ptdata); @@ -648,6 +646,7 @@ h5tools_str_indent(h5tools_str_t *str, const h5tool_format_t *info, h5tools_cont * Return: A pointer to memory containing the result or NULL on error. *------------------------------------------------------------------------- */ +H5_WARN_FORMAT_NONLITERAL_OFF char * h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, hid_t type, void *vp, h5tools_context_t *ctx) @@ -664,8 +663,6 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai H5T_class_t type_class; char *ret_value = NULL; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - H5TOOLS_START_DEBUG(" "); /* Build default formats for long long types */ if (!fmt_llong[0]) { @@ -1448,11 +1445,10 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai ret_value = h5tools_str_fmt(str, start, OPT(info->elmt_fmt, "%s")); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") - H5TOOLS_ENDDEBUG(" with %s", ret_value); return ret_value; } +H5_WARN_FORMAT_NONLITERAL_ON /*------------------------------------------------------------------------- * Function: h5tools_str_sprint_old_reference diff --git a/tools/libtest/h5tools_test_utils.c b/tools/libtest/h5tools_test_utils.c index b64ce4c09be..854308a55ab 100644 --- a/tools/libtest/h5tools_test_utils.c +++ b/tools/libtest/h5tools_test_utils.c @@ -61,7 +61,6 @@ * *****************************************************************************/ -H5_GCC_CLANG_DIAG_OFF("format") /*---------------------------------------------------------------------------- * @@ -1176,7 +1175,6 @@ test_set_configured_fapl(void) #undef UTIL_TEST_DEFAULT #undef UTIL_TEST_CREATE } /* test_set_configured_fapl */ -H5_GCC_CLANG_DIAG_ON("format") /*---------------------------------------------------------------------------- * diff --git a/tools/src/h5dump/h5dump_xml.c b/tools/src/h5dump/h5dump_xml.c index 61b37650869..fbad61ce940 100644 --- a/tools/src/h5dump/h5dump_xml.c +++ b/tools/src/h5dump/h5dump_xml.c @@ -3869,7 +3869,9 @@ xml_dump_fill_value(hid_t dcpl, hid_t type) /* Render the element */ h5tools_str_reset(&buffer); + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(&buffer, fmt_complex, (double)real, (double)imag); + H5_WARN_FORMAT_NONLITERAL_ON h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); } @@ -3887,7 +3889,9 @@ xml_dump_fill_value(hid_t dcpl, hid_t type) /* Render the element */ h5tools_str_reset(&buffer); + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(&buffer, fmt_complex, real, imag); + H5_WARN_FORMAT_NONLITERAL_ON h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); } @@ -3905,7 +3909,9 @@ xml_dump_fill_value(hid_t dcpl, hid_t type) /* Render the element */ h5tools_str_reset(&buffer); + H5_WARN_FORMAT_NONLITERAL_OFF h5tools_str_append(&buffer, fmt_complex, real, imag); + H5_WARN_FORMAT_NONLITERAL_ON h5tools_render_element(rawoutstream, outputformat, &ctx, &buffer, &curr_pos, (size_t)outputformat->line_ncols, (hsize_t)0, (hsize_t)0); } diff --git a/tools/src/h5import/h5import.c b/tools/src/h5import/h5import.c index a3a86114115..21fbe387400 100644 --- a/tools/src/h5import/h5import.c +++ b/tools/src/h5import/h5import.c @@ -90,8 +90,6 @@ main(int argc, char *argv[]) const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; const char *err10 = "Length of output file name limited to 255 chars.\n"; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - h5tools_setprogname(PROGRAMNAME); h5tools_setstatus(EXIT_SUCCESS); @@ -237,8 +235,6 @@ main(int argc, char *argv[]) if (process(opt) == -1) goto err; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - for (i = 0; i < opt->fcount; i++) { in = &(opt->infiles[i].in); if (in->sizeOfDimension) @@ -362,8 +358,6 @@ processDataFile(char *infile, struct Input *in, hid_t file_id) const char *err11 = "Error in reading string data.\n"; int retval = -1; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - /*------------------------------------------------------------------------- * special case for opening binary classes in H5_HAVE_WIN32_API * "FP" denotes a floating point binary file, @@ -450,8 +444,6 @@ processDataFile(char *infile, struct Input *in, hid_t file_id) goto error; } - H5_GCC_CLANG_DIAG_ON("format-nonliteral") - /* Set success return value */ retval = 0; @@ -1427,8 +1419,6 @@ processConfigurationFile(char *infile, struct Input *in) const char *err19 = "Unable to get integer value.\n"; const char *err20 = "Unable to get subset values.\n"; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - /* - create vector to map which keywords have been found * - check vector after each keyword to check for violation * - at the end check vector to see if required fields have been provided @@ -2429,8 +2419,6 @@ processConfigurationFile(char *infile, struct Input *in) } } - H5_GCC_CLANG_DIAG_ON("format-nonliteral") - /* Set success return value */ retval = 0; @@ -4724,8 +4712,6 @@ process(struct Options *opt) "Error in creating the output data set. Dataset with the same name may exist at the specified path\n"; const char *err6 = "Error in writing the output data set.\n"; - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") - H5E_BEGIN_TRY { if ((file_id = H5Fopen(opt->outfile, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) { @@ -4857,8 +4843,6 @@ process(struct Options *opt) } /* STR */ - H5_GCC_CLANG_DIAG_ON("format-nonliteral") - H5Fclose(file_id); return 0; } diff --git a/tools/src/h5perf/pio_perf.c b/tools/src/h5perf/pio_perf.c index 921cdd6724f..1ab0e563667 100644 --- a/tools/src/h5perf/pio_perf.c +++ b/tools/src/h5perf/pio_perf.c @@ -1048,9 +1048,7 @@ output_report(const char *fmt, ...) va_list ap; va_start(ap, fmt); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") vfprintf(output, fmt, ap); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") va_end(ap); } } diff --git a/tools/src/h5perf/sio_engine.c b/tools/src/h5perf/sio_engine.c index 07abe94d4be..f97ee3dc615 100644 --- a/tools/src/h5perf/sio_engine.c +++ b/tools/src/h5perf/sio_engine.c @@ -1269,9 +1269,7 @@ do_cleanupfile(iotype iot, char *filename) if (driver == H5FD_FAMILY) { for (j = 0; /*void*/; j++) { - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") snprintf(temp, temp_sz, filename, j); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") if (HDaccess(temp, F_OK) < 0) break; diff --git a/tools/src/h5perf/sio_perf.c b/tools/src/h5perf/sio_perf.c index 110f3391298..08b74f533a9 100644 --- a/tools/src/h5perf/sio_perf.c +++ b/tools/src/h5perf/sio_perf.c @@ -626,9 +626,7 @@ output_report(const char *fmt, ...) va_list ap; va_start(ap, fmt); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") vfprintf(output, fmt, ap); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") va_end(ap); } diff --git a/tools/src/misc/h5repart.c b/tools/src/misc/h5repart.c index 4f1aa20fbf9..ba018ef95b4 100644 --- a/tools/src/misc/h5repart.c +++ b/tools/src/misc/h5repart.c @@ -128,7 +128,6 @@ get_size(const char *progname, int *argno, int argc, char *argv[]) * Function: main *------------------------------------------------------------------------- */ -H5_GCC_CLANG_DIAG_OFF("format-nonliteral") int main(int argc, char *argv[]) { @@ -224,7 +223,9 @@ main(int argc, char *argv[]) fprintf(stderr, "invalid source file name pointer"); exit(EXIT_FAILURE); } + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(src_name, NAMELEN, src_gen_name, src_membno); + H5_WARN_FORMAT_NONLITERAL_ON src_is_family = strcmp(src_name, src_gen_name); if ((src = HDopen(src_name, O_RDONLY)) < 0) { @@ -251,7 +252,9 @@ main(int argc, char *argv[]) fprintf(stderr, "invalid destination file name pointer"); exit(EXIT_FAILURE); } + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(dst_name, NAMELEN, dst_gen_name, dst_membno); + H5_WARN_FORMAT_NONLITERAL_ON dst_is_family = strcmp(dst_name, dst_gen_name); if ((dst = HDopen(dst_name, O_RDWR | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_RW)) < 0) { @@ -343,7 +346,9 @@ main(int argc, char *argv[]) dst_offset = dst_offset + (HDoff_t)n; break; } + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(src_name, NAMELEN, src_gen_name, ++src_membno); + H5_WARN_FORMAT_NONLITERAL_ON if ((src = HDopen(src_name, O_RDONLY)) < 0 && ENOENT == errno) { dst_offset = dst_offset + (HDoff_t)n; break; @@ -392,7 +397,9 @@ main(int argc, char *argv[]) } } HDclose(dst); + H5_WARN_FORMAT_NONLITERAL_OFF snprintf(dst_name, NAMELEN, dst_gen_name, ++dst_membno); + H5_WARN_FORMAT_NONLITERAL_ON if ((dst = HDopen(dst_name, O_RDWR | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_RW)) < 0) { perror(dst_name); exit(EXIT_FAILURE); @@ -495,4 +502,3 @@ main(int argc, char *argv[]) free(buf); return EXIT_SUCCESS; } /* end main */ -H5_GCC_CLANG_DIAG_ON("format-nonliteral") diff --git a/tools/test/perform/zip_perf.c b/tools/test/perform/zip_perf.c index f5680589364..c7fc96400d5 100644 --- a/tools/test/perform/zip_perf.c +++ b/tools/test/perform/zip_perf.c @@ -88,9 +88,7 @@ error(const char *fmt, ...) va_start(ap, fmt); fprintf(stderr, "%s: error: ", prog); - H5_GCC_CLANG_DIAG_OFF("format-nonliteral") vfprintf(stderr, fmt, ap); - H5_GCC_CLANG_DIAG_ON("format-nonliteral") fprintf(stderr, "\n"); va_end(ap); exit(EXIT_FAILURE); From 476f0fc2eb1f02014cd5a20854ac55d62e2dab89 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 05:29:15 +0000 Subject: [PATCH 02/14] Committing clang-format changes --- src/H5warnings.h | 8 ++++---- tools/libtest/h5tools_test_utils.c | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/H5warnings.h b/src/H5warnings.h index 205f5810e76..ca842517210 100644 --- a/src/H5warnings.h +++ b/src/H5warnings.h @@ -216,7 +216,7 @@ /* clang can only suppress warnings about oversize strings */ #define H5_WARN_LARGE_STACK_OBJECTS_OFF H5_WARN_OFF("overlength-strings") #define H5_WARN_LARGE_STACK_OBJECTS_ON H5_WARN_ON("overlength-strings") -#elif defined (__GNUC__) +#elif defined(__GNUC__) /* gcc can suppress warnings about any oversize object */ #define H5_WARN_LARGE_STACK_OBJECTS_OFF H5_WARN_OFF("larger-than=") #define H5_WARN_LARGE_STACK_OBJECTS_ON H5_WARN_ON("larger-than=") @@ -230,9 +230,9 @@ * This warning may have to be suppressed in MPI code where * MPI_STATUSES_IGNORE is passed as an MPI_Status array. * - * https://github.com/pmodels/mpich/issues/5687 + * https://github.com/pmodels/mpich/issues/5687 */ -#if defined(__GNUC__) && !defined(__clang__) +#if defined(__GNUC__) && !defined(__clang__) #define H5_WARN_MPI_STATUSES_IGNORE_OFF H5_WARN_OFF("stringop-overflow") #define H5_WARN_MPI_STATUSES_IGNORE_ON H5_WARN_ON("stringop-overflow") #else @@ -264,7 +264,7 @@ * plugin code, since it uses dlsym() to load plugins. POSIX allows * this, so it's fine. */ -#if defined(__GNUC__) && !defined(__clang__) +#if defined(__GNUC__) && !defined(__clang__) #define H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF H5_WARN_OFF("pedantic") #define H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON H5_WARN_ON("pedantic") #else diff --git a/tools/libtest/h5tools_test_utils.c b/tools/libtest/h5tools_test_utils.c index 854308a55ab..2991b977746 100644 --- a/tools/libtest/h5tools_test_utils.c +++ b/tools/libtest/h5tools_test_utils.c @@ -61,7 +61,6 @@ * *****************************************************************************/ - /*---------------------------------------------------------------------------- * * ifdef flag: JSVERIFY_EXP_ACT From 0c6f2a0535b291941ec76fdaee85db0474eaae2d Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 15:04:57 -0700 Subject: [PATCH 03/14] Fix issues in H5warnings.h --- src/H5warnings.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/H5warnings.h b/src/H5warnings.h index ca842517210..f3ec69ac6b9 100644 --- a/src/H5warnings.h +++ b/src/H5warnings.h @@ -241,18 +241,23 @@ #endif /* Disable warnings concerning non-standard extensions, like F16 */ -/* clang */ -#if defined(__clang__) +#if defined(__clang__) || defined(__GNUC__) + +/* Both gcc and clang need to disable pedantic */ #define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("pedantic") #define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("pedantic") + +/* If we have gcc 9 or higher, we also need to disable the compat warning */ /* gcc 14+ */ -#elif defined(__GNUC__) && __GNUC__ >= 14 +#if defined(__GNUC__) && __GNUC__ >= 14 #define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c23-compat") #define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c23-compat") /* gcc 9-13 */ #elif defined(__GNUC__) && __GNUC__ >= 9 #define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c2x-compat") #define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c2x-compat") +#endif + #else /* Everything else */ #define H5_WARN_NONSTD_SUFFIX_OFF @@ -295,8 +300,8 @@ /* Suppress warnings about missing prototypes */ #if defined(__clang__) || defined(__GNUC__) -#define H5_WARN_MISSING_PROTOTPYE_OFF H5_WARN_OFF("missing-prototype") -#define H5_WARN_MISSING_PROTOTYPE_ON H5_WARN_ON("missing-prototype") +#define H5_WARN_MISSING_PROTOTPYE_OFF H5_WARN_OFF("missing-prototypes") +#define H5_WARN_MISSING_PROTOTYPE_ON H5_WARN_ON("missing-prototypes") #else #define H5_WARN_MISSING_PROTOTYPE_OFF #define H5_WARN_MISSING_PROTOTYPE_ON From 5faebebc6e1b049d67c9f6c38c4241df30a3d1f2 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 16:14:57 -0700 Subject: [PATCH 04/14] Fix bugs and issues * Add cast alignment warnings for C++ tests * Fix the nonstandard suffix warnings * Update .clang-format * Remove the C99 extensions warning --- .clang-format | 8 ++++---- c++/test/tcompound.cpp | 24 ++++++++++++++++++++---- src/H5private.h | 2 -- src/H5warnings.h | 34 ++++++++++++++++------------------ 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/.clang-format b/.clang-format index b2ee6a4ed93..754e8c933f0 100644 --- a/.clang-format +++ b/.clang-format @@ -88,8 +88,8 @@ StatementMacros: - H5_LEAVE - H5_WARN_C11_EXTENSIONS_OFF - H5_WARN_C11_EXTENSIONS_ON - - H5_WARN_C99_EXTENSIONS_OFF - - H5_WARN_C99_EXTENSIONS_ON + - H5_WARN_CAST_ALIGNMENT_OFF + - H5_WARN_CAST_ALIGNMENT_ON - H5_WARN_CAST_AWAY_CONST_OFF - H5_WARN_CAST_AWAY_CONST_ON - H5_WARN_DUPLICATED_BRANCHES_OFF @@ -108,14 +108,14 @@ StatementMacros: - H5_WARN_LARGE_STACK_OBJECTS_ON - H5_WARN_MISSING_PROTOTPYE_OFF - H5_WARN_MISSING_PROTOTPYE_ON + - H5_WARN_MPI_STATUSES_IGNORE_OFF + - H5_WARN_MPI_STATUSES_IGNORE_ON - H5_WARN_NONSTD_SUFFIX_OFF - H5_WARN_NONSTD_SUFFIX_ON - H5_WARN_OBJ_FXN_POINTER_CONVERSION_OFF - H5_WARN_OBJ_FXN_POINTER_CONVERSION_ON - H5_WARN_SIGN_CONVERSION_OFF - H5_WARN_SIGN_CONVERSION_ON - - H5_WARN_STRING_OVERFLOW_OFF - - H5_WARN_STRING_OVERFLOW_ON - H5_WARN_UNUSED_PARAMETER_OFF - H5_WARN_UNUSED_PARAMETER_ON - H5_WARN_USELESS_COMPARISON_OFF diff --git a/c++/test/tcompound.cpp b/c++/test/tcompound.cpp index e4049e5843e..3ff15b93c6b 100644 --- a/c++/test/tcompound.cpp +++ b/c++/test/tcompound.cpp @@ -98,7 +98,9 @@ test_compound_2() bkg = static_cast(malloc(nelmts * sizeof(dst_typ_t))); orig = static_cast(malloc(nelmts * sizeof(src_typ_t))); for (i = 0; i < nelmts; i++) { - s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_OFF + s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_ON s_ptr->a = i * 8 + 0; s_ptr->b = i * 8 + 1; s_ptr->c[0] = i * 8 + 2; @@ -139,8 +141,10 @@ test_compound_2() // Compare results for (i = 0; i < nelmts; i++) { + H5_WARN_CAST_ALIGNMENT_OFF s_ptr = (reinterpret_cast(orig)) + i; d_ptr = (reinterpret_cast(buf)) + i; + H5_WARN_CAST_ALIGNMENT_ON if (s_ptr->a != d_ptr->a || s_ptr->b != d_ptr->b || s_ptr->c[0] != d_ptr->c[0] || s_ptr->c[1] != d_ptr->c[1] || s_ptr->c[2] != d_ptr->c[2] || s_ptr->c[3] != d_ptr->c[3] || s_ptr->d != d_ptr->d || s_ptr->e != d_ptr->e) { @@ -208,7 +212,9 @@ test_compound_3() bkg = static_cast(malloc(nelmts * sizeof(dst_typ_t))); orig = static_cast(malloc(nelmts * sizeof(src_typ_t))); for (i = 0; i < nelmts; i++) { - s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_OFF + s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_ON s_ptr->a = i * 8 + 0; s_ptr->b = i * 8 + 1; s_ptr->c[0] = i * 8 + 2; @@ -247,8 +253,10 @@ test_compound_3() /* Compare results */ for (i = 0; i < nelmts; i++) { + H5_WARN_CAST_ALIGNMENT_OFF s_ptr = (reinterpret_cast(orig)) + i; d_ptr = (reinterpret_cast(buf)) + i; + H5_WARN_CAST_ALIGNMENT_ON if (s_ptr->a != d_ptr->a || s_ptr->c[0] != d_ptr->c[0] || s_ptr->c[1] != d_ptr->c[1] || s_ptr->c[2] != d_ptr->c[2] || s_ptr->c[3] != d_ptr->c[3] || s_ptr->e != d_ptr->e) { H5_FAILED(); @@ -320,7 +328,9 @@ test_compound_4() bkg = static_cast(malloc(nelmts * sizeof(dst_typ_t))); orig = static_cast(malloc(nelmts * sizeof(src_typ_t))); for (i = 0; i < nelmts; i++) { - s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_OFF + s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_ON s_ptr->a = i * 8 + 0; s_ptr->b = (i * 8 + 1) & 0x7fff; s_ptr->c[0] = i * 8 + 2; @@ -361,8 +371,10 @@ test_compound_4() /* Compare results */ for (i = 0; i < nelmts; i++) { + H5_WARN_CAST_ALIGNMENT_OFF s_ptr = (reinterpret_cast(orig)) + i; d_ptr = (reinterpret_cast(buf)) + i; + H5_WARN_CAST_ALIGNMENT_ON if (s_ptr->a != d_ptr->a || s_ptr->b != d_ptr->b || s_ptr->c[0] != d_ptr->c[0] || s_ptr->c[1] != d_ptr->c[1] || s_ptr->c[2] != d_ptr->c[2] || s_ptr->c[3] != d_ptr->c[3] || s_ptr->d != d_ptr->d || s_ptr->e != d_ptr->e) { @@ -525,7 +537,9 @@ test_compound_6() bkg = static_cast(malloc(nelmts * sizeof(dst_typ_t))); orig = static_cast(malloc(nelmts * sizeof(src_typ_t))); for (i = 0; i < nelmts; i++) { - s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_OFF + s_ptr = (reinterpret_cast(orig)) + i; + H5_WARN_CAST_ALIGNMENT_ON s_ptr->b = (i * 8 + 1) & 0x7fff; s_ptr->d = (i * 8 + 6) & 0x7fff; } @@ -545,8 +559,10 @@ test_compound_6() /* Compare results */ for (i = 0; i < nelmts; i++) { + H5_WARN_CAST_ALIGNMENT_OFF s_ptr = (reinterpret_cast(orig)) + i; d_ptr = (reinterpret_cast(buf)) + i; + H5_WARN_CAST_ALIGNMENT_ON if (s_ptr->b != d_ptr->b || s_ptr->d != d_ptr->d) { H5_FAILED(); cerr << " i=" << i << endl; diff --git a/src/H5private.h b/src/H5private.h index a2e1388da92..6c875d9450f 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -589,11 +589,9 @@ typedef struct stat h5_stat_t; * types and other types. */ #if defined(H5_HAVE_COMPLEX_NUMBERS) && defined(H5_HAVE_C99_COMPLEX_NUMBERS) -H5_WARN_C99_EXTENSIONS_OFF typedef float _Complex H5_float_complex; typedef double _Complex H5_double_complex; typedef long double _Complex H5_ldouble_complex; -H5_WARN_C99_EXTENSIONS_OFF #endif /* __int64 is the correct type for the st_size field of the _stati64 diff --git a/src/H5warnings.h b/src/H5warnings.h index f3ec69ac6b9..b53a68227bd 100644 --- a/src/H5warnings.h +++ b/src/H5warnings.h @@ -119,16 +119,15 @@ #define H5_WARN_C11_EXTENSIONS_ON #endif -/* Suppress warnings about C99 extensions. We require a C11 compiler - * but some C++ compilers will complain about using C99 extensions - * like _Complex when H5private.h is brought in via h5test.h. +/* Suppress warnings about bad cast alignment. These should be corrected, + * not suppressed in the main library, but might appear in test code. */ -#if defined(__GNUC__) && defined(__cplusplus) -#define H5_WARN_C99_EXTENSIONS_OFF H5_WARN_OFF("c99-extensions") -#define H5_WARN_C99_EXTENSIONS_ON H5_WARN_ON("c99-extensions") +#if defined(__clang__) || defined(__GNUC__) +#define H5_WARN_CAST_ALIGNMENT_OFF H5_WARN_OFF("cast-align") +#define H5_WARN_CAST_ALIGNMENT_ON H5_WARN_ON("cast-align") #else -#define H5_WARN_C99_EXTENSIONS_OFF -#define H5_WARN_C99_EXTENSIONS_ON +#define H5_WARN_CAST_ALIGNMENT_OFF +#define H5_WARN_CAST_ALIGNMENT_ON #endif /* Suppress warnings about casting away const */ @@ -241,23 +240,22 @@ #endif /* Disable warnings concerning non-standard extensions, like F16 */ -#if defined(__clang__) || defined(__GNUC__) - -/* Both gcc and clang need to disable pedantic */ +/* clang */ +#if defined(__clang__) #define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("pedantic") #define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("pedantic") - -/* If we have gcc 9 or higher, we also need to disable the compat warning */ /* gcc 14+ */ -#if defined(__GNUC__) && __GNUC__ >= 14 +#elif defined(__GNUC__) && __GNUC__ >= 14 #define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c23-compat") #define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c23-compat") /* gcc 9-13 */ #elif defined(__GNUC__) && __GNUC__ >= 9 -#define H5_WARN_NONSTD_SUFFIX_OFF H5_WARN_OFF("c11-c2x-compat") -#define H5_WARN_NONSTD_SUFFIX_ON H5_WARN_ON("c11-c2x-compat") -#endif - +#define H5_WARN_NONSTD_SUFFIX_OFF \ + H5_WARN_OFF("pedantic") \ + H5_WARN_OFF("c11-c2x-compat") +#define H5_WARN_NONSTD_SUFFIX_ON \ + H5_WARN_ON("c11-c2x-compat") \ + H5_WARN_ON("pedantic") #else /* Everything else */ #define H5_WARN_NONSTD_SUFFIX_OFF From f06036c3978c9c97c0e3c244241119ce70491920 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 17:05:24 -0700 Subject: [PATCH 05/14] Disable Java warning suppression Java is broken in CMake, so I can't debug this --- java/src/jni/h5Constants.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c index 65730f598d9..d88a27600a0 100644 --- a/java/src/jni/h5Constants.c +++ b/java/src/jni/h5Constants.c @@ -19,8 +19,8 @@ extern "C" { #include #include "h5jni.h" -H5_WARN_MISSING_PROTOTYPE_OFF -H5_WARN_UNUSED_PARAMETER_OFF +//H5_WARN_MISSING_PROTOTYPE_OFF +//H5_WARN_UNUSED_PARAMETER_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5_1QUARTER_1HADDR_1MAX(JNIEnv *env, jclass cls) @@ -1210,7 +1210,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1CANCELED(JNIEnv *env, jclass cls) } /* Java does not have unsigned native types */ -H5_WARN_SIGN_CONVERSION_OFF +//H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1CREAT(JNIEnv *env, jclass cls) { @@ -1251,7 +1251,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1SWMR_1WRITE(JNIEnv *env, jclass cls) { return H5F_ACC_SWMR_WRITE; } -H5_WARN_SIGN_CONVERSION_ON +//H5_WARN_SIGN_CONVERSION_ON JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1CLOSE_1DEFAULT(JNIEnv *env, jclass cls) @@ -1652,7 +1652,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1GHEAP_1SIZE(JNIEnv *env, jcla { return (hsize_t)(3 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -H5_WARN_SIGN_CONVERSION_OFF +//H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1LHEAP_1SIZE(JNIEnv *env, jclass cls) { @@ -1669,7 +1669,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1OHDR_1SIZE(JNIEnv *env, jclas /* XXX: BADNESS! - This value cannot fit into a jlong! */ return (hsize_t)(5 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -H5_WARN_SIGN_CONVERSION_ON +//H5_WARN_SIGN_CONVERSION_ON /* Symbols defined for compatibility with previous versions of the HDF5 API. * @@ -3800,8 +3800,8 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls) return H5Z_FILTER_ALL; } -H5_WARN_UNUSED_PARAMETER_ON -H5_WARN_MISSING_PROTOTYPE_ON +//H5_WARN_UNUSED_PARAMETER_ON +//H5_WARN_MISSING_PROTOTYPE_ON #ifdef __cplusplus } /* end extern "C" */ From 7eb1caea5891d0f097ac0fca23e807b6cf62818c Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 00:07:29 +0000 Subject: [PATCH 06/14] Committing clang-format changes --- java/src/jni/h5Constants.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c index d88a27600a0..24b04cd30c5 100644 --- a/java/src/jni/h5Constants.c +++ b/java/src/jni/h5Constants.c @@ -19,8 +19,8 @@ extern "C" { #include #include "h5jni.h" -//H5_WARN_MISSING_PROTOTYPE_OFF -//H5_WARN_UNUSED_PARAMETER_OFF +// H5_WARN_MISSING_PROTOTYPE_OFF +// H5_WARN_UNUSED_PARAMETER_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5_1QUARTER_1HADDR_1MAX(JNIEnv *env, jclass cls) @@ -1210,7 +1210,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1CANCELED(JNIEnv *env, jclass cls) } /* Java does not have unsigned native types */ -//H5_WARN_SIGN_CONVERSION_OFF +// H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1CREAT(JNIEnv *env, jclass cls) { @@ -1251,7 +1251,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1SWMR_1WRITE(JNIEnv *env, jclass cls) { return H5F_ACC_SWMR_WRITE; } -//H5_WARN_SIGN_CONVERSION_ON +// H5_WARN_SIGN_CONVERSION_ON JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1CLOSE_1DEFAULT(JNIEnv *env, jclass cls) @@ -1652,7 +1652,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1GHEAP_1SIZE(JNIEnv *env, jcla { return (hsize_t)(3 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -//H5_WARN_SIGN_CONVERSION_OFF +// H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1LHEAP_1SIZE(JNIEnv *env, jclass cls) { @@ -1669,7 +1669,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1OHDR_1SIZE(JNIEnv *env, jclas /* XXX: BADNESS! - This value cannot fit into a jlong! */ return (hsize_t)(5 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -//H5_WARN_SIGN_CONVERSION_ON +// H5_WARN_SIGN_CONVERSION_ON /* Symbols defined for compatibility with previous versions of the HDF5 API. * @@ -3800,8 +3800,8 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls) return H5Z_FILTER_ALL; } -//H5_WARN_UNUSED_PARAMETER_ON -//H5_WARN_MISSING_PROTOTYPE_ON +// H5_WARN_UNUSED_PARAMETER_ON +// H5_WARN_MISSING_PROTOTYPE_ON #ifdef __cplusplus } /* end extern "C" */ From d96882102ccf721203133353a61c6f6d532ad5e2 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 17:08:34 -0700 Subject: [PATCH 07/14] Turn java off in -Werror builds --- .github/workflows/main-cmake-spc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main-cmake-spc.yml b/.github/workflows/main-cmake-spc.yml index 97b4047ac72..cfda9a86929 100644 --- a/.github/workflows/main-cmake-spc.yml +++ b/.github/workflows/main-cmake-spc.yml @@ -554,7 +554,7 @@ jobs: -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=OFF \ - -DHDF5_BUILD_JAVA=ON \ + -DHDF5_BUILD_JAVA=OFF \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ @@ -603,7 +603,7 @@ jobs: -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=ON \ - -DHDF5_BUILD_JAVA=ON \ + -DHDF5_BUILD_JAVA=OFF \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ From 596ee2c9b1e768a39bfc70fbda3f0b2c1148f5b5 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 17:14:59 -0700 Subject: [PATCH 08/14] Turn off -Werror for the test-cmake-minimum build --- .github/workflows/main-cmake-spc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-cmake-spc.yml b/.github/workflows/main-cmake-spc.yml index cfda9a86929..0b0664e6562 100644 --- a/.github/workflows/main-cmake-spc.yml +++ b/.github/workflows/main-cmake-spc.yml @@ -650,7 +650,7 @@ jobs: -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_SHARED_LIBS=ON \ -DHDF5_ENABLE_ALL_WARNINGS=ON \ - -DHDF5_ENABLE_WARNINGS_AS_ERRORS=ON \ + -DHDF5_ENABLE_WARNINGS_AS_ERRORS=OFF \ -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=OFF \ From f4c5adbe996a8426ef3108048438d3e9e7647b88 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Wed, 9 Apr 2025 17:22:51 -0700 Subject: [PATCH 09/14] Turn Java off in test-cmake-minimum Until whatever CMake + Java is doing is fixed --- .github/workflows/main-cmake-spc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main-cmake-spc.yml b/.github/workflows/main-cmake-spc.yml index 0b0664e6562..3a14b44f063 100644 --- a/.github/workflows/main-cmake-spc.yml +++ b/.github/workflows/main-cmake-spc.yml @@ -650,11 +650,11 @@ jobs: -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_SHARED_LIBS=ON \ -DHDF5_ENABLE_ALL_WARNINGS=ON \ - -DHDF5_ENABLE_WARNINGS_AS_ERRORS=OFF \ + -DHDF5_ENABLE_WARNINGS_AS_ERRORS=ON \ -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=OFF \ - -DHDF5_BUILD_JAVA=ON \ + -DHDF5_BUILD_JAVA=OFF \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ From b2ff68fe50aa231e0f18381fd11d87c89242777c Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 3 May 2025 21:35:30 -0700 Subject: [PATCH 10/14] Fix Java typo --- java/src/jni/h5Constants.c | 10 ++++++---- src/H5warnings.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c index 24b04cd30c5..00c1438f2fb 100644 --- a/java/src/jni/h5Constants.c +++ b/java/src/jni/h5Constants.c @@ -19,8 +19,9 @@ extern "C" { #include #include "h5jni.h" -// H5_WARN_MISSING_PROTOTYPE_OFF -// H5_WARN_UNUSED_PARAMETER_OFF +H5_WARN_SIGN_CONVERSION_OFF +H5_WARN_MISSING_PROTOTYPE_OFF +H5_WARN_UNUSED_PARAMETER_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5_1QUARTER_1HADDR_1MAX(JNIEnv *env, jclass cls) @@ -3800,8 +3801,9 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls) return H5Z_FILTER_ALL; } -// H5_WARN_UNUSED_PARAMETER_ON -// H5_WARN_MISSING_PROTOTYPE_ON +H5_WARN_UNUSED_PARAMETER_ON +H5_WARN_MISSING_PROTOTYPE_ON +H5_WARN_SIGN_CONVERSION_ON #ifdef __cplusplus } /* end extern "C" */ diff --git a/src/H5warnings.h b/src/H5warnings.h index b53a68227bd..7f233cf0a0e 100644 --- a/src/H5warnings.h +++ b/src/H5warnings.h @@ -298,7 +298,7 @@ /* Suppress warnings about missing prototypes */ #if defined(__clang__) || defined(__GNUC__) -#define H5_WARN_MISSING_PROTOTPYE_OFF H5_WARN_OFF("missing-prototypes") +#define H5_WARN_MISSING_PROTOTYPE_OFF H5_WARN_OFF("missing-prototypes") #define H5_WARN_MISSING_PROTOTYPE_ON H5_WARN_ON("missing-prototypes") #else #define H5_WARN_MISSING_PROTOTYPE_OFF From 3694d0497d57572910b75d5055251acd07b86aac Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 3 May 2025 23:16:00 -0700 Subject: [PATCH 11/14] Fix stack size warnings in h5repack --- tools/src/h5repack/h5repack.c | 69 ++++++------ tools/src/h5repack/h5repack_filters.c | 156 +++++++++++++------------- tools/src/h5repack/h5repack_main.c | 29 +++-- tools/src/h5repack/h5repack_verify.c | 17 ++- 4 files changed, 146 insertions(+), 125 deletions(-) diff --git a/tools/src/h5repack/h5repack.c b/tools/src/h5repack/h5repack.c index 71e4a1914ff..089969668b6 100644 --- a/tools/src/h5repack/h5repack.c +++ b/tools/src/h5repack/h5repack.c @@ -158,49 +158,54 @@ h5repack_addfilter(const char *str, pack_opt_t *options) int h5repack_addlayout(const char *str, pack_opt_t *options) { - obj_list_t *obj_list = NULL; /*one object list for the -t and -c option entry */ - unsigned n_objs; /*number of objects in the current -t or -c option entry */ - pack_info_t pack; /*info about layout to extract from parse */ - int j; - int ret_value = -1; - - init_packobject(&pack); + obj_list_t *obj_list = NULL; /* one object list for the -t and -c option entry */ + unsigned n_objs; /* number of objects in the current -t or -c option entry */ + pack_info_t *pack = NULL; /* info about layout to extract from parse */ + int j; + int ret_value = -1; if (options->all_layout == 1) { error_msg("invalid layout input: 'all' option is present with other objects <%s>\n", str); return ret_value; } + if (NULL == (pack = (pack_info_t *)calloc(1, sizeof(pack_info_t)))) + return ret_value; + + init_packobject(pack); + /* parse the layout option */ - obj_list = parse_layout(str, &n_objs, &pack, options); + obj_list = parse_layout(str, &n_objs, pack, options); if (obj_list) { /* set layout option */ - options->layout_g = pack.layout; + options->layout_g = pack->layout; /* no individual dataset specified */ if (options->all_layout == 1) { - if (pack.layout == H5D_CHUNKED) { + if (pack->layout == H5D_CHUNKED) { /* -2 means the NONE option, remove chunking and set the global layout to contiguous */ - if (pack.chunk.rank == -2) /* TODO: fix 'magic number' */ + if (pack->chunk.rank == -2) /* TODO: fix 'magic number' */ options->layout_g = H5D_CONTIGUOUS; /* otherwise set the global chunking type */ else { - options->chunk_g.rank = pack.chunk.rank; - for (j = 0; j < pack.chunk.rank; j++) - options->chunk_g.chunk_lengths[j] = pack.chunk.chunk_lengths[j]; + options->chunk_g.rank = pack->chunk.rank; + for (j = 0; j < pack->chunk.rank; j++) + options->chunk_g.chunk_lengths[j] = pack->chunk.chunk_lengths[j]; } } } /* individual dataset specified */ if (options->all_layout == 0) - ret_value = options_add_layout(obj_list, n_objs, &pack, options->op_tbl); + ret_value = options_add_layout(obj_list, n_objs, pack, options->op_tbl); free(obj_list); ret_value = 0; } /* end if obj_list exists */ + free(pack); + return ret_value; } /* end h5repack_addlayout() */ @@ -699,18 +704,18 @@ check_options(pack_opt_t *options) } /* end if verbose */ for (i = 0; i < options->op_tbl->nelems; i++) { - pack_info_t pack = options->op_tbl->objs[i]; - char *name = pack.path; + pack_info_t *pack = &options->op_tbl->objs[i]; + char *name = pack->path; - for (j = 0; j < pack.nfilters; j++) { + for (j = 0; j < pack->nfilters; j++) { if (options->verbose > 0) { - if (pack.filter[j].filtn >= 0) { - if (pack.filter[j].filtn > H5Z_FILTER_SCALEOFFSET) { - printf(" <%s> with %s filter %d\n", name, get_sfilter(pack.filter[j].filtn), - pack.filter[j].filtn); + if (pack->filter[j].filtn >= 0) { + if (pack->filter[j].filtn > H5Z_FILTER_SCALEOFFSET) { + printf(" <%s> with %s filter %d\n", name, get_sfilter(pack->filter[j].filtn), + pack->filter[j].filtn); } else { - printf(" <%s> with %s filter\n", name, get_sfilter(pack.filter[j].filtn)); + printf(" <%s> with %s filter\n", name, get_sfilter(pack->filter[j].filtn)); } } } @@ -822,8 +827,8 @@ check_objects(const char *fname, pack_opt_t *options) printf("Opening file. Searching %zu objects to modify ...\n", travt->nobjs); for (i = 0; i < options->op_tbl->nelems; i++) { - pack_info_t obj = options->op_tbl->objs[i]; - char *name = obj.path; + pack_info_t *obj = &options->op_tbl->objs[i]; + char *name = obj->path; if (options->verbose > 0) printf(" <%s>", name); @@ -835,23 +840,23 @@ check_objects(const char *fname, pack_opt_t *options) if (options->verbose > 0) printf("...Found\n"); - for (ifil = 0; ifil < obj.nfilters; ifil++) { - if (obj.filter[ifil].filtn < 0) + for (ifil = 0; ifil < obj->nfilters; ifil++) { + if (obj->filter[ifil].filtn < 0) H5TOOLS_GOTO_ERROR((-1), "invalid filter"); /* check for extra filter conditions */ - switch (obj.filter[ifil].filtn) { + switch (obj->filter[ifil].filtn) { /* chunk size must be smaller than pixels per block */ case H5Z_FILTER_SZIP: { int j; hsize_t csize = 1; - unsigned ppb = obj.filter[ifil].cd_values[0]; + unsigned ppb = obj->filter[ifil].cd_values[0]; hsize_t dims[H5S_MAX_RANK]; int rank; - if (obj.chunk.rank > 0) { - rank = obj.chunk.rank; + if (obj->chunk.rank > 0) { + rank = obj->chunk.rank; for (j = 0; j < rank; j++) - csize *= obj.chunk.chunk_lengths[j]; + csize *= obj->chunk.chunk_lengths[j]; } else { if ((did = H5Dopen2(fid, name, H5P_DEFAULT)) < 0) diff --git a/tools/src/h5repack/h5repack_filters.c b/tools/src/h5repack/h5repack_filters.c index f243f6fafa0..db62c10a495 100644 --- a/tools/src/h5repack/h5repack_filters.c +++ b/tools/src/h5repack/h5repack_filters.c @@ -119,32 +119,32 @@ aux_find_obj(const char *name, /* object name from traverse list */ * Purpose: find the object name NAME (got from the traverse list) * in the repack options list; assign the filter information OBJ * + * The pack_info_t object obj is allocated elsewhere and will + * be filled in by this function. + * * Return: 0 not found, 1 found *------------------------------------------------------------------------- */ static int -aux_assign_obj(const char *name, /* object name from traverse list */ - pack_opt_t *options, /* repack options */ - pack_info_t *obj /*OUT*/) /* info about object to filter */ +aux_assign_obj(const char *name, /* object name from traverse list */ + pack_opt_t *options, /* repack options */ + pack_info_t *obj) /* info about object to filter */ { - int idx, i; - pack_info_t tmp; - - init_packobject(&tmp); + int idx; - idx = aux_find_obj(name, options, &tmp); + idx = aux_find_obj(name, options, obj); /* name was on input */ if (idx >= 0) { /* applying to all objects */ if (options->all_layout) { /* assign the global layout info to the OBJ info */ - tmp.layout = options->layout_g; + obj->layout = options->layout_g; switch (options->layout_g) { case H5D_CHUNKED: - tmp.chunk.rank = options->chunk_g.rank; - for (i = 0; i < tmp.chunk.rank; i++) - tmp.chunk.chunk_lengths[i] = options->chunk_g.chunk_lengths[i]; + obj->chunk.rank = options->chunk_g.rank; + for (int i = 0; i < obj->chunk.rank; i++) + obj->chunk.chunk_lengths[i] = options->chunk_g.chunk_lengths[i]; break; case H5D_LAYOUT_ERROR: case H5D_COMPACT: @@ -157,12 +157,12 @@ aux_assign_obj(const char *name, /* object name from traverse list */ } /*switch*/ } else { - tmp.layout = options->op_tbl->objs[idx].layout; - switch (tmp.layout) { + obj->layout = options->op_tbl->objs[idx].layout; + switch (obj->layout) { case H5D_CHUNKED: - tmp.chunk.rank = options->op_tbl->objs[idx].chunk.rank; - for (i = 0; i < tmp.chunk.rank; i++) - tmp.chunk.chunk_lengths[i] = options->op_tbl->objs[idx].chunk.chunk_lengths[i]; + obj->chunk.rank = options->op_tbl->objs[idx].chunk.rank; + for (int i = 0; i < obj->chunk.rank; i++) + obj->chunk.chunk_lengths[i] = options->op_tbl->objs[idx].chunk.chunk_lengths[i]; break; case H5D_LAYOUT_ERROR: case H5D_COMPACT: @@ -178,34 +178,32 @@ aux_assign_obj(const char *name, /* object name from traverse list */ /* applying to all objects */ if (options->all_filter) { /* assign the global filter */ - tmp.nfilters = 1; - tmp.filter[0] = options->filter_g[0]; + obj->nfilters = 1; + obj->filter[0] = options->filter_g[0]; } /* if all */ else { - tmp.nfilters = options->op_tbl->objs[idx].nfilters; - for (i = 0; i < tmp.nfilters; i++) { - tmp.filter[i] = options->op_tbl->objs[idx].filter[i]; + obj->nfilters = options->op_tbl->objs[idx].nfilters; + for (int i = 0; i < obj->nfilters; i++) { + obj->filter[i] = options->op_tbl->objs[idx].filter[i]; } } } /* if idx */ /* no input name */ else { if (options->all_filter) { - int k; - /* assign the global filters */ - tmp.nfilters = options->n_filter_g; - for (k = 0; k < options->n_filter_g; k++) - tmp.filter[k] = options->filter_g[k]; + obj->nfilters = options->n_filter_g; + for (int k = 0; k < options->n_filter_g; k++) + obj->filter[k] = options->filter_g[k]; } if (options->all_layout) { /* assign the global layout info to the OBJ info */ - tmp.layout = options->layout_g; + obj->layout = options->layout_g; switch (options->layout_g) { case H5D_CHUNKED: - tmp.chunk.rank = options->chunk_g.rank; - for (i = 0; i < tmp.chunk.rank; i++) - tmp.chunk.chunk_lengths[i] = options->chunk_g.chunk_lengths[i]; + obj->chunk.rank = options->chunk_g.rank; + for (int i = 0; i < obj->chunk.rank; i++) + obj->chunk.chunk_lengths[i] = options->chunk_g.chunk_lengths[i]; break; case H5D_LAYOUT_ERROR: case H5D_COMPACT: @@ -219,7 +217,6 @@ aux_assign_obj(const char *name, /* object name from traverse list */ } } - *obj = tmp; return 1; } @@ -247,8 +244,8 @@ apply_filters(const char *name, /* object name from traverse list */ hsize_t chsize[64]; /* chunk size in elements */ H5D_layout_t layout; int i; - pack_info_t obj; - pack_info_t filtobj; + pack_info_t *obj = NULL; + pack_info_t *filtobj = NULL; int ret_value = 0; *has_filter = 0; @@ -256,18 +253,23 @@ apply_filters(const char *name, /* object name from traverse list */ if (rank == 0) /* scalar dataset, do not apply */ H5TOOLS_GOTO_DONE(0); + if (NULL == (obj = (pack_info_t *)calloc(1, sizeof(pack_info_t)))) + H5TOOLS_GOTO_ERROR((-1), "unable to allocate memory"); + if (NULL == (filtobj = (pack_info_t *)calloc(1, sizeof(pack_info_t)))) + H5TOOLS_GOTO_ERROR((-1), "unable to allocate memory"); + /*------------------------------------------------------------------------- * initialize the assignment object *------------------------------------------------------------------------- */ - init_packobject(&obj); - init_packobject(&filtobj); + init_packobject(obj); + init_packobject(filtobj); /*------------------------------------------------------------------------- * find options *------------------------------------------------------------------------- */ - if (aux_assign_obj(name, options, &obj) == 0) + if (aux_assign_obj(name, options, obj) == 0) H5TOOLS_GOTO_DONE(0); /* get information about input filters */ @@ -280,14 +282,14 @@ apply_filters(const char *name, /* object name from traverse list */ * only remove if we are inserting new ones *------------------------------------------------------------------------- */ - if (nfilters && obj.nfilters) { + if (nfilters && obj->nfilters) { *has_filter = 1; if (H5Premove_filter(dcpl_id, H5Z_FILTER_ALL) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Premove_filter failed"); } else if (nfilters) { *has_filter = 1; - if (aux_copy_obj(dcpl_id, name, &filtobj) < 0) + if (aux_copy_obj(dcpl_id, name, filtobj) < 0) H5TOOLS_GOTO_ERROR((-1), "aux_copy_obj failed"); } @@ -296,17 +298,17 @@ apply_filters(const char *name, /* object name from traverse list */ * read it only if there is not a requested layout *------------------------------------------------------------------------- */ - if (obj.layout == -1) { + if (obj->layout == -1) { if ((layout = H5Pget_layout(dcpl_id)) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pget_layout failed"); if (layout == H5D_CHUNKED) { if ((rank = H5Pget_chunk(dcpl_id, NELMTS(chsize), chsize /*out*/)) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pget_chunk failed"); - obj.layout = H5D_CHUNKED; - obj.chunk.rank = rank; + obj->layout = H5D_CHUNKED; + obj->chunk.rank = rank; for (i = 0; i < rank; i++) - obj.chunk.chunk_lengths[i] = chsize[i]; + obj->chunk.chunk_lengths[i] = chsize[i]; } } @@ -323,17 +325,17 @@ apply_filters(const char *name, /* object name from traverse list */ *------------------------------------------------------------------------- */ - if (obj.nfilters) { + if (obj->nfilters) { /*------------------------------------------------------------------------- * filters require CHUNK layout; if we do not have one define a default *------------------------------------------------------------------------- */ - if (obj.layout == -1) { + if (obj->layout == -1) { /* stripmine info */ hsize_t sm_size[H5S_MAX_RANK]; /*stripmine size */ hsize_t sm_nbytes; /*bytes per stripmine */ - obj.chunk.rank = rank; + obj->chunk.rank = rank; /* * determine the strip mine size. The strip mine is @@ -353,15 +355,15 @@ apply_filters(const char *name, /* object name from traverse list */ } for (i = 0; i < rank; i++) { - obj.chunk.chunk_lengths[i] = sm_size[i]; + obj->chunk.chunk_lengths[i] = sm_size[i]; } } - for (i = 0; i < obj.nfilters; i++) { - if (obj.filter[i].filtn < 0) + for (i = 0; i < obj->nfilters; i++) { + if (obj->filter[i].filtn < 0) H5TOOLS_GOTO_ERROR((-1), "invalid filter"); - switch (obj.filter[i].filtn) { + switch (obj->filter[i].filtn) { /*------------------------------------------------------------------------- * H5Z_FILTER_NONE 0 , uncompress if compressed *------------------------------------------------------------------------- @@ -376,9 +378,9 @@ apply_filters(const char *name, /* object name from traverse list */ case H5Z_FILTER_DEFLATE: { unsigned aggression; /* the deflate level */ - aggression = obj.filter[i].cd_values[0]; + aggression = obj->filter[i].cd_values[0]; /* set up for deflated data */ - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_deflate(dcpl_id, aggression) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_deflate failed"); @@ -392,11 +394,11 @@ apply_filters(const char *name, /* object name from traverse list */ unsigned options_mask; unsigned pixels_per_block; - options_mask = obj.filter[i].cd_values[0]; - pixels_per_block = obj.filter[i].cd_values[1]; + options_mask = obj->filter[i].cd_values[0]; + pixels_per_block = obj->filter[i].cd_values[1]; /* set up for szip data */ - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_szip(dcpl_id, options_mask, pixels_per_block) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_szip failed"); @@ -407,7 +409,7 @@ apply_filters(const char *name, /* object name from traverse list */ *------------------------------------------------------------------------- */ case H5Z_FILTER_SHUFFLE: - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_shuffle(dcpl_id) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_shuffle failed"); @@ -418,7 +420,7 @@ apply_filters(const char *name, /* object name from traverse list */ *------------------------------------------------------------------------- */ case H5Z_FILTER_FLETCHER32: - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_fletcher32(dcpl_id) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_fletcher32 failed"); @@ -428,7 +430,7 @@ apply_filters(const char *name, /* object name from traverse list */ *------------------------------------------------------------------------- */ case H5Z_FILTER_NBIT: - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_nbit(dcpl_id) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_nbit failed"); @@ -441,33 +443,33 @@ apply_filters(const char *name, /* object name from traverse list */ H5Z_SO_scale_type_t scale_type; int scale_factor; - scale_type = (H5Z_SO_scale_type_t)obj.filter[i].cd_values[0]; - scale_factor = (int)obj.filter[i].cd_values[1]; + scale_type = (H5Z_SO_scale_type_t)obj->filter[i].cd_values[0]; + scale_factor = (int)obj->filter[i].cd_values[1]; - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); if (H5Pset_scaleoffset(dcpl_id, scale_type, scale_factor) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_scaleoffset failed"); } break; default: { - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); - if (H5Pset_filter(dcpl_id, obj.filter[i].filtn, obj.filter[i].filt_flag, - obj.filter[i].cd_nelmts, obj.filter[i].cd_values) < 0) + if (H5Pset_filter(dcpl_id, obj->filter[i].filtn, obj->filter[i].filt_flag, + obj->filter[i].cd_nelmts, obj->filter[i].cd_values) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_filter failed"); } break; } /* switch */ } /*i*/ } - /*obj.nfilters*/ + /*obj->nfilters*/ - if (filtobj.nfilters) { - for (i = 0; i < filtobj.nfilters; i++) { - if (filtobj.filter[i].filtn < 0) + if (filtobj->nfilters) { + for (i = 0; i < filtobj->nfilters; i++) { + if (filtobj->filter[i].filtn < 0) H5TOOLS_GOTO_ERROR((-1), "invalid filter"); - if (H5Zfilter_avail(filtobj.filter[i].filtn) <= 0) - H5TOOLS_GOTO_ERROR((-1), "%d filter unavailable", filtobj.filter[i].filtn); + if (H5Zfilter_avail(filtobj->filter[i].filtn) <= 0) + H5TOOLS_GOTO_ERROR((-1), "%d filter unavailable", filtobj->filter[i].filtn); } /* for */ } /* nfilters */ @@ -476,26 +478,28 @@ apply_filters(const char *name, /* object name from traverse list */ *------------------------------------------------------------------------- */ - if (obj.layout >= 0) { + if (obj->layout >= 0) { /* a layout was defined */ - if (H5Pset_layout(dcpl_id, obj.layout) < 0) + if (H5Pset_layout(dcpl_id, obj->layout) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_layout failed"); - if (H5D_CHUNKED == obj.layout) { - if (H5Pset_chunk(dcpl_id, obj.chunk.rank, obj.chunk.chunk_lengths) < 0) + if (H5D_CHUNKED == obj->layout) { + if (H5Pset_chunk(dcpl_id, obj->chunk.rank, obj->chunk.chunk_lengths) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_chunk failed"); } - else if (H5D_COMPACT == obj.layout) { + else if (H5D_COMPACT == obj->layout) { if (H5Pset_alloc_time(dcpl_id, H5D_ALLOC_TIME_EARLY) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Pset_alloc_time failed"); } /* remove filters for the H5D_CONTIGUOUS case */ - else if (H5D_CONTIGUOUS == obj.layout) { + else if (H5D_CONTIGUOUS == obj->layout) { if (H5Premove_filter(dcpl_id, H5Z_FILTER_ALL) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Premove_filter failed"); } } done: + free(obj); + free(filtobj); return ret_value; } diff --git a/tools/src/h5repack/h5repack_main.c b/tools/src/h5repack/h5repack_main.c index 0809d97856e..ccf3209fbbc 100644 --- a/tools/src/h5repack/h5repack_main.c +++ b/tools/src/h5repack/h5repack_main.c @@ -989,10 +989,11 @@ parse_command_line(int argc, const char *const *argv, pack_opt_t *options) int main(int argc, char **argv) { - pack_opt_t options; /*the global options */ - int parse_ret; + pack_opt_t *options = NULL; /*the global options */ + int parse_ret; - memset(&options, 0, sizeof(pack_opt_t)); + if (NULL == (options = (pack_opt_t *)calloc(1, sizeof(pack_opt_t)))) + goto done; /* Initialize h5tools lib */ h5tools_init(); @@ -1008,7 +1009,7 @@ main(int argc, char **argv) } /* initialize options */ - if (h5repack_init(&options, 0, false) < 0) { + if (h5repack_init(options, 0, false) < 0) { printf("Error occurred while initializing repack options\n"); h5tools_setstatus(EXIT_FAILURE); goto done; @@ -1017,7 +1018,7 @@ main(int argc, char **argv) /* Initialize default indexing options */ sort_by = H5_INDEX_CRT_ORDER; - parse_ret = parse_command_line(argc, (const char *const *)argv, &options); + parse_ret = parse_command_line(argc, (const char *const *)argv, options); if (parse_ret < 0) { printf("Error occurred while parsing command-line options\n"); h5tools_setstatus(EXIT_FAILURE); @@ -1033,7 +1034,7 @@ main(int argc, char **argv) h5tools_error_report(); /* pack it */ - if (h5repack(infile, outfile, &options) < 0) { + if (h5repack(infile, outfile, options) < 0) { printf("Error occurred while repacking\n"); h5tools_setstatus(EXIT_FAILURE); goto done; @@ -1042,13 +1043,17 @@ main(int argc, char **argv) h5tools_setstatus(EXIT_SUCCESS); done: - if (options.fin_fapl >= 0 && options.fin_fapl != H5P_DEFAULT) - H5Pclose(options.fin_fapl); - if (options.fout_fapl >= 0 && options.fout_fapl != H5P_DEFAULT) - H5Pclose(options.fout_fapl); + if (options) { + if (options->fin_fapl >= 0 && options->fin_fapl != H5P_DEFAULT) + H5Pclose(options->fin_fapl); + if (options->fout_fapl >= 0 && options->fout_fapl != H5P_DEFAULT) + H5Pclose(options->fout_fapl); + + /* free tables */ + h5repack_end(options); - /* free tables */ - h5repack_end(&options); + free(options); + } leave(h5tools_getstatus()); } diff --git a/tools/src/h5repack/h5repack_verify.c b/tools/src/h5repack/h5repack_verify.c index 190cf436712..175c0e9c8f9 100644 --- a/tools/src/h5repack/h5repack_verify.c +++ b/tools/src/h5repack/h5repack_verify.c @@ -52,8 +52,12 @@ h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options bool in_persist, out_persist; /* free-space persist status for in/output file */ hsize_t in_threshold, out_threshold; /* free-space section threshold for in/output file */ hsize_t in_pagesize, out_pagesize; /* file space page size for input/output file */ + pack_info_t *pack_info = NULL; /* repack options */ int ret_value = 0; + if (NULL == (pack_info = (pack_info_t *)calloc(1, sizeof(pack_info_t)))) + H5TOOLS_GOTO_ERROR((-1), "unable to allocate memory"); + /* open the output file */ if ((fidout = H5Fopen(out_fname, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) H5TOOLS_GOTO_ERROR((-1), "H5Fopen failed on <%s>", out_fname); @@ -149,12 +153,13 @@ h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options *------------------------------------------------------------------------- */ if (options->all_layout == 1) { - pack_info_t pack; - init_packobject(&pack); - pack.layout = options->layout_g; - pack.chunk = options->chunk_g; - if (verify_layout(pid, &pack) == 0) + memset(pack_info, 0, sizeof(pack_info_t)); + + init_packobject(pack_info); + pack_info->layout = options->layout_g; + pack_info->chunk = options->chunk_g; + if (verify_layout(pid, pack_info) == 0) ok = 0; } @@ -288,6 +293,8 @@ h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options } H5E_END_TRY + free(pack_info); + return ret_value; } /* h5repack_verify() */ From 3d6ca42f2a52c083efaa70df5ba08e23b4a51437 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 3 May 2025 23:19:43 -0700 Subject: [PATCH 12/14] Turn Java back on in -Werror builds --- .github/workflows/main-cmake-spc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main-cmake-spc.yml b/.github/workflows/main-cmake-spc.yml index 3a14b44f063..b5934b8ac5b 100644 --- a/.github/workflows/main-cmake-spc.yml +++ b/.github/workflows/main-cmake-spc.yml @@ -554,7 +554,7 @@ jobs: -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=OFF \ - -DHDF5_BUILD_JAVA=OFF \ + -DHDF5_BUILD_JAVA=ON \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ @@ -603,7 +603,7 @@ jobs: -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=ON \ - -DHDF5_BUILD_JAVA=OFF \ + -DHDF5_BUILD_JAVA=ON \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ From e402132a5e03bc2a40abb15d58a8adbdec1b8a51 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 3 May 2025 23:20:29 -0700 Subject: [PATCH 13/14] Turn Java back on in test-cmake-minimum --- .github/workflows/main-cmake-spc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-cmake-spc.yml b/.github/workflows/main-cmake-spc.yml index b5934b8ac5b..97b4047ac72 100644 --- a/.github/workflows/main-cmake-spc.yml +++ b/.github/workflows/main-cmake-spc.yml @@ -654,7 +654,7 @@ jobs: -DHDF5_ENABLE_PARALLEL:BOOL=OFF \ -DHDF5_BUILD_CPP_LIB:BOOL=ON \ -DHDF5_BUILD_FORTRAN=OFF \ - -DHDF5_BUILD_JAVA=OFF \ + -DHDF5_BUILD_JAVA=ON \ -DHDF5_BUILD_DOC=OFF \ -DLIBAEC_USE_LOCALCONTENT=OFF \ -DZLIB_USE_LOCALCONTENT=OFF \ From 097670637eb7ab5fcfa90018d47573e92f6b53f7 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Sat, 3 May 2025 23:23:06 -0700 Subject: [PATCH 14/14] Fix sign conversion macros in JNI code --- java/src/jni/h5Constants.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c index 00c1438f2fb..65730f598d9 100644 --- a/java/src/jni/h5Constants.c +++ b/java/src/jni/h5Constants.c @@ -19,7 +19,6 @@ extern "C" { #include #include "h5jni.h" -H5_WARN_SIGN_CONVERSION_OFF H5_WARN_MISSING_PROTOTYPE_OFF H5_WARN_UNUSED_PARAMETER_OFF @@ -1211,7 +1210,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1CANCELED(JNIEnv *env, jclass cls) } /* Java does not have unsigned native types */ -// H5_WARN_SIGN_CONVERSION_OFF +H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1CREAT(JNIEnv *env, jclass cls) { @@ -1252,7 +1251,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1SWMR_1WRITE(JNIEnv *env, jclass cls) { return H5F_ACC_SWMR_WRITE; } -// H5_WARN_SIGN_CONVERSION_ON +H5_WARN_SIGN_CONVERSION_ON JNIEXPORT jint JNICALL Java_hdf_hdf5lib_HDF5Constants_H5F_1CLOSE_1DEFAULT(JNIEnv *env, jclass cls) @@ -1653,7 +1652,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1GHEAP_1SIZE(JNIEnv *env, jcla { return (hsize_t)(3 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -// H5_WARN_SIGN_CONVERSION_OFF +H5_WARN_SIGN_CONVERSION_OFF JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1LHEAP_1SIZE(JNIEnv *env, jclass cls) { @@ -1670,7 +1669,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5FD_1MEM_1DEFAULT_1OHDR_1SIZE(JNIEnv *env, jclas /* XXX: BADNESS! - This value cannot fit into a jlong! */ return (hsize_t)(5 * (HADDR_MAX / (H5FD_MEM_NTYPES - 1))); } -// H5_WARN_SIGN_CONVERSION_ON +H5_WARN_SIGN_CONVERSION_ON /* Symbols defined for compatibility with previous versions of the HDF5 API. * @@ -3803,7 +3802,6 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls) H5_WARN_UNUSED_PARAMETER_ON H5_WARN_MISSING_PROTOTYPE_ON -H5_WARN_SIGN_CONVERSION_ON #ifdef __cplusplus } /* end extern "C" */