Thread: Do we still need PowerPC-specific timestamp_is_current/epoch?
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. regards, tom lane
> 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. Yes. > 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. Let me check if my Linux/PPC still needs the workaround. BTW, what about MkLinux? Anybody tried recent DR5 release? -- Tatsuo Ishii
> 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
Tatsuo Ishii <t-ishii@sra.co.jp> writes: > After further research, I remembered that we used to have "DB_MIN > check" in configure back to 6.4.2: > I don't know wht it was removed, Hmm. Digging in the CVS logs shows that it was removed by Bruce in configure.in version 1.262, 1999/07/18, with the unedifying log message "configure cleanup". A guess is that he took it out because it wasn't being used anywhere. > 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? I think that is a bad idea, since that code is guaranteed to fail on any machine where the representation of double is at all different from a PPC's. (Even if you are willing to assume that the entire world uses IEEE floats these days, what of endianness?) We could revive the configure test and do #if defined(HAVE_DBL_MIN_PROBLEM) && defined(__powerpc__) However, I really wonder whether there is any point. It may be worth noting that the original version of the patch read "#if ... defined(PPC)". It's quite likely that the current test, "... defined(__powerpc__)", doesn't even fire on the old compiler that the patch is intended for. If so, this is dead code and has been since release 6.5. regards, tom lane
> Tatsuo Ishii <t-ishii@sra.co.jp> writes: > > After further research, I remembered that we used to have "DB_MIN > > check" in configure back to 6.4.2: > > I don't know wht it was removed, > > Hmm. Digging in the CVS logs shows that it was removed by Bruce in > configure.in version 1.262, 1999/07/18, with the unedifying log message > "configure cleanup". > > A guess is that he took it out because it wasn't being used anywhere. > > > 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? > > I think that is a bad idea, since that code is guaranteed to fail on any > machine where the representation of double is at all different from a > PPC's. (Even if you are willing to assume that the entire world uses > IEEE floats these days, what of endianness?) > > We could revive the configure test and do > > #if defined(HAVE_DBL_MIN_PROBLEM) && defined(__powerpc__) > > However, I really wonder whether there is any point. It may be worth > noting that the original version of the patch read "#if ... defined(PPC)". > It's quite likely that the current test, "... defined(__powerpc__)", > doesn't even fire on the old compiler that the patch is intended for. > If so, this is dead code and has been since release 6.5. Ok, let's remove the code in datetime.c and see anybody would come up and complain... -- Tatsuo Ishii
> Tatsuo Ishii <t-ishii@sra.co.jp> writes: > > After further research, I remembered that we used to have "DB_MIN > > check" in configure back to 6.4.2: > > I don't know wht it was removed, > > Hmm. Digging in the CVS logs shows that it was removed by Bruce in > configure.in version 1.262, 1999/07/18, with the unedifying log message > "configure cleanup". > > A guess is that he took it out because it wasn't being used anywhere. Yes, I checked all configure flags and removed the ones not being used. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026