diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2009-08-20 18:40:50 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2009-08-20 18:40:50 (GMT) |
commit | 0b3b4351e7841f00cdcda837fc2960a37a923d69 (patch) | |
tree | b2b34f09112d63444133446152742e321e895beb /configure | |
parent | f8c63dd9dcb4459dd8d57a2b2543e2e99f6d4a35 (diff) | |
download | hdf5-0b3b4351e7841f00cdcda837fc2960a37a923d69.zip hdf5-0b3b4351e7841f00cdcda837fc2960a37a923d69.tar.gz hdf5-0b3b4351e7841f00cdcda837fc2960a37a923d69.tar.bz2 |
[svn-r17392] I added a detection for the correctness of converting from unsigned long to float in the
configure.in. The Pathscale compiler on Sandia's Linux machine misinterprets the values of
unsigned long as negative during the conversion to float, when the first bit of unsigned long
is on.
Tested on jam. Need to test it on Sandia's machine.
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 68 |
1 files changed, 68 insertions, 0 deletions
@@ -27058,6 +27058,74 @@ else $as_echo "no" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately converting unsigned long to float values" >&5 +$as_echo_n "checking if accurately converting unsigned long to float values... " >&6; } + +if test "${hdf5_ulong_to_float_accurate+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run test program while cross compiling +See \`config.log' for more details." "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + int main(void) + { + int ret = 0; + unsigned long l1; + unsigned long l2; + unsigned long l3; + float f1; + float f2; + float f3; + + + if(sizeof(unsigned long)==8) { + l1 = 0xffffffffffffffffUL; + l2 = 0xffffffffffff0000UL; + l3 = 0xf000000000000000UL; + + f1 = (float)l1; + f2 = (float)l2; + f3 = (float)l3; + + if((f1 < 0) || (f2 < 0) || (f3 < 0)) + ret = 1; + } + +done: + exit(ret); + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + hdf5_ulong_to_float_accurate=yes +else + hdf5_ulong_to_float_accurate=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + + +if test ${hdf5_ulong_to_float_accurate} = "yes"; then + +$as_echo "#define ULONG_TO_FLOAT_ACCURATE 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if accurately converting unsigned long long to floating-point values" >&5 $as_echo_n "checking if accurately converting unsigned long long to floating-point values... " >&6; } |