> At the end of backend/utils/adt/datetime.c, there is some fairly ugly
> code that is conditionally compiled on
>
> #if defined(linux) && defined(__powerpc__)
>
> Do we still need this? The standard versions of TIMESTAMP_IS_CURRENT
> and TIMESTAMP_IS_EPOCH appear to work just fine on my Powerbook G3
> running Linux 2.2.18 (LinuxPPC 2000 Q4 distro).
>
> I see from the CVS logs that Tatsuo originally introduced this code
> on 1997/07/29 (at the time it lived in dt.c and was called
> datetime_is_current & datetime_is_epoch). I suppose that it must have
> been meant to work around some bug in old versions of gcc for PPC.
> But it seems to me to be a net decrease in portability --- it's assuming
> that the symbolic constants DBL_MIN and -DBL_MIN will produce particular
> bit patterns --- so I'd like to remove it unless someone knows of a
> recent Linux/PPC release that still needs it.
After further research, I remembered that we used to have "DB_MIN
check" in configure back to 6.4.2:
AC_MSG_CHECKING(for good DBL_MIN)
AC_TRY_RUN([#include <stdlib.h>
#include <math.h>
#ifdef HAVE_FLOAT_H
# include <float.h>
#endif
main() { double d = DBL_MIN; if (d != DBL_MIN) exit(-1); else exit(0);
}],AC_MSG_RESULT(yes),[AC_DEFINE(HAVE_DBL_MIN_PROBLEM)AC_MSG_RESULT(no)],AC_MSG_RESULT(assuming ok on target machine))
I don't know wht it was removed, but I think we'd better to revive the
checking and replace
#if defined(linux) && defined(__powerpc__)
with
#ifdef HAVE_DBL_MIN_PROBLEM
What do you think?
--
Tatsuo Ishii