From 2c42f566467ecc50f5ec5090cd66ea17af1dc3a9 Mon Sep 17 00:00:00 2001 From: Matthieu Schaller <schaller@strw.leidenuniv.nl> Date: Wed, 8 Nov 2023 09:23:46 +0000 Subject: [PATCH] Use a locally-defined macro to bypass a GCC optimization bug --- src/lightcone/lightcone_particle_io.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lightcone/lightcone_particle_io.c b/src/lightcone/lightcone_particle_io.c index 9d3584412a..10c0a8b9ca 100644 --- a/src/lightcone/lightcone_particle_io.c +++ b/src/lightcone/lightcone_particle_io.c @@ -642,34 +642,33 @@ void append_dataset(const struct unit_system *snapshot_units, hid_t mem_type_id, hsize_t chunk_size, int lossy_compression, enum lossy_compression_schemes compression_scheme, - int gzip_level, const int rank, const hsize_t *dims, + int gzip_level, const int rank, const hsize_t dims[2], const hsize_t num_written, const void *data) { - const int max_rank = 2; - if (rank > max_rank) - error("HDF5 dataset has too may dimensions. Increase max_rank."); + if (rank > 2) + error("HDF5 dataset has too may dimensions."); if (rank < 1) error("HDF5 dataset must be at least one dimensional"); /* If we have zero elements to append, there's nothing to do */ if (dims[0] == 0) return; /* Determine size of the dataset after we append our data */ - hsize_t full_dims[max_rank]; + hsize_t full_dims[rank]; for (int i = 0; i < rank; i += 1) full_dims[i] = dims[i]; full_dims[0] += num_written; /* Determine maximum size in each dimension */ - hsize_t max_dims[max_rank]; + hsize_t max_dims[rank]; for (int i = 1; i < rank; i += 1) max_dims[i] = full_dims[i]; max_dims[0] = H5S_UNLIMITED; /* Determine chunk size in each dimension */ - hsize_t chunk_dims[max_rank]; + hsize_t chunk_dims[rank]; for (int i = 1; i < rank; i += 1) chunk_dims[i] = full_dims[i]; chunk_dims[0] = (hsize_t)chunk_size; /* Find offset to region to write in each dimension */ - hsize_t offset[max_rank]; + hsize_t offset[rank]; for (int i = 1; i < rank; i += 1) offset[i] = 0; offset[0] = num_written; -- GitLab