Hi,

I am experiencing the following issue with hdf5 and gcc 4.8.0

Consider this very simple test

#include <hdf5.h>

int main() {
  switch (H5Tget_order(H5T_NATIVE_LDOUBLE)) {
  case H5T_ORDER_LE:
    printf("H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_LE\n");
    break;
  case H5T_ORDER_BE:
    printf("H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_BE\n");
    break;
  case H5T_ORDER_VAX:
    printf("H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_VAX\n");
    break;
  case H5T_ORDER_MIXED:
    printf("H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_MIXED\n");
    break;
  case H5T_ORDER_NONE:
    printf("H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_NONE\n");
    break;
  default:
    printf("here are dragons\n");
  }
  return 0;
}

on the same x86_64 GNU/Linux machine I get

$ hdf5-1.8.11-gcc-4.7.0/my_test # compiled with gcc 4.7.0
H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_LE

$ hdf5-1.8.11-gcc-4.8.0/my_test # compiled with gcc 4.8.0
H5Tget_order(H5T_NATIVE_LDOUBLE) = H5T_ORDER_VAX

So H5T_NATIVE_LDOUBLE is mis-detected. I tried to dig deeper and basically
the fault must be in src/H5detect.c which is used to generate the
definitions in src/H5Tinit.c
I could not figure out what H5detect.c does wrong (it is not very readable,
given its extensive use of macros) but the compiler does emit a lot of
warnings (see https://gist.github.com/andreabedini/6419975).

I think this must be related to the failure of dt_arith long double test
observed recently.

Any suggestion on how to fix this ?

Best wishes,
Andrea


-- 
Andrea Bedini <[email protected]>
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org

Reply via email to