From 15a3ec25677d8923b7eaea0b0caeef1ea6c8141e Mon Sep 17 00:00:00 2001 From: pcpa Date: Tue, 10 Sep 2013 21:29:15 -0300 Subject: [PATCH] Use the logic to workaround float NaN and Inf Hercules bug conditional * check/lightning.c, configure.ac: Conditionally use the code written to workaround a bug in the Hercules emulator, as isnan and isinf are not available at least on HP-UX ia64. enter the commit message for your changes. Lines starting --- ChangeLog | 6 ++++++ check/lightning.c | 4 ++++ configure.ac | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0f70ff3e8..37436588b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-09-10 Paulo Andrade + + * check/lightning.c, configure.ac: Conditionally use the + code written to workaround a bug in the Hercules emulator, + as isnan and isinf are not available at least on HP-UX ia64. + 2013-09-10 Paulo Andrade * lib/jit_s390x-cpu.c: Spill/reload correct callee save diff --git a/check/lightning.c b/check/lightning.c index 7ddd17aa0..2cf38edc8 100644 --- a/check/lightning.c +++ b/check/lightning.c @@ -1880,11 +1880,15 @@ get_float(skip_t skip) static float make_float(double d) { + /* This is an workaround to a bug in Hercules s390x emulator, + * and at least HP-UX ia64 not have these */ +#if defined(HAVE_ISNAN) && defined(HAVE_ISINF) if (isnan(d)) return ( 0.0f/0.0f); if (isinf(d)) { if (d > 0.0) return ( 1.0f/0.0f); else return (-1.0f/0.0f); } +#endif return ((float)d); } diff --git a/configure.ac b/configure.ac index 4f645df92..3741452d5 100644 --- a/configure.ac +++ b/configure.ac @@ -43,7 +43,7 @@ AC_PROG_CC AC_PROG_INSTALL AC_PROG_LIBTOOL -AC_CHECK_FUNCS(mremap ffsl getopt_long_only,,) +AC_CHECK_FUNCS(mremap ffsl getopt_long_only isnan isinf,,) AC_CHECK_HEADERS([getopt.h],,,)