From 2b6b5b7ff749a9b84c75ea07332a636671ad64ee Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Sun, 24 Jul 2022 00:12:37 +1200
Subject: [PATCH v3 07/13] Remove dead replacement code for clock_gettime().

clock_gettime() is in SUSv2 (realtime) and all targeted Unix systems
have it.  Fallback code for old Unix is no longer reachable on modern
systems, though we still need Windows-specific code.

There is no need to retain a HAVE_CLOCK_GETTIME macro here, because it
is used in contexts that have very obvious Unix and Windows code
variants.

XXX This can only be committed once prairedog is decommissioned, because
macOS 10.4 didn't have clock_gettime().

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com
---
 configure                            |  2 +-
 configure.ac                         |  1 -
 src/include/pg_config.h.in           |  3 --
 src/include/portability/instr_time.h | 68 ----------------------------
 src/tools/msvc/Solution.pm           |  1 -
 5 files changed, 1 insertion(+), 74 deletions(-)

diff --git a/configure b/configure
index 6358bdcabc..fc1739b431 100755
--- a/configure
+++ b/configure
@@ -16039,7 +16039,7 @@ fi
 LIBS_including_readline="$LIBS"
 LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
 
-for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readv setproctitle setproctitle_fast strchrnul strsignal syncfs sync_file_range uselocale wcstombs_l writev
+for ac_func in backtrace_symbols copyfile fdatasync getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readv setproctitle setproctitle_fast strchrnul strsignal syncfs sync_file_range uselocale wcstombs_l writev
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/configure.ac b/configure.ac
index 3cf42d1ce4..7e071ce585 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1792,7 +1792,6 @@ LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
 
 AC_CHECK_FUNCS(m4_normalize([
 	backtrace_symbols
-	clock_gettime
 	copyfile
 	fdatasync
 	getifaddrs
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index beb42549c1..16c160af4c 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -83,9 +83,6 @@
 /* Define to 1 if you have the `BIO_meth_new' function. */
 #undef HAVE_BIO_METH_NEW
 
-/* Define to 1 if you have the `clock_gettime' function. */
-#undef HAVE_CLOCK_GETTIME
-
 /* Define to 1 if your compiler handles computed gotos. */
 #undef HAVE_COMPUTED_GOTO
 
diff --git a/src/include/portability/instr_time.h b/src/include/portability/instr_time.h
index ca09a1608f..8faeca8b49 100644
--- a/src/include/portability/instr_time.h
+++ b/src/include/portability/instr_time.h
@@ -57,8 +57,6 @@
 
 #ifndef WIN32
 
-#ifdef HAVE_CLOCK_GETTIME
-
 /* Use clock_gettime() */
 
 #include <time.h>
@@ -141,72 +139,6 @@ typedef struct timespec instr_time;
 #define INSTR_TIME_GET_MICROSEC(t) \
 	(((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) ((t).tv_nsec / 1000))
 
-#else							/* !HAVE_CLOCK_GETTIME */
-
-/* Use gettimeofday() */
-
-#include <sys/time.h>
-
-typedef struct timeval instr_time;
-
-#define INSTR_TIME_IS_ZERO(t)	((t).tv_usec == 0 && (t).tv_sec == 0)
-
-#define INSTR_TIME_SET_ZERO(t)	((t).tv_sec = 0, (t).tv_usec = 0)
-
-#define INSTR_TIME_SET_CURRENT(t)	gettimeofday(&(t), NULL)
-
-#define INSTR_TIME_ADD(x,y) \
-	do { \
-		(x).tv_sec += (y).tv_sec; \
-		(x).tv_usec += (y).tv_usec; \
-		/* Normalize */ \
-		while ((x).tv_usec >= 1000000) \
-		{ \
-			(x).tv_usec -= 1000000; \
-			(x).tv_sec++; \
-		} \
-	} while (0)
-
-#define INSTR_TIME_SUBTRACT(x,y) \
-	do { \
-		(x).tv_sec -= (y).tv_sec; \
-		(x).tv_usec -= (y).tv_usec; \
-		/* Normalize */ \
-		while ((x).tv_usec < 0) \
-		{ \
-			(x).tv_usec += 1000000; \
-			(x).tv_sec--; \
-		} \
-	} while (0)
-
-#define INSTR_TIME_ACCUM_DIFF(x,y,z) \
-	do { \
-		(x).tv_sec += (y).tv_sec - (z).tv_sec; \
-		(x).tv_usec += (y).tv_usec - (z).tv_usec; \
-		/* Normalize after each add to avoid overflow/underflow of tv_usec */ \
-		while ((x).tv_usec < 0) \
-		{ \
-			(x).tv_usec += 1000000; \
-			(x).tv_sec--; \
-		} \
-		while ((x).tv_usec >= 1000000) \
-		{ \
-			(x).tv_usec -= 1000000; \
-			(x).tv_sec++; \
-		} \
-	} while (0)
-
-#define INSTR_TIME_GET_DOUBLE(t) \
-	(((double) (t).tv_sec) + ((double) (t).tv_usec) / 1000000.0)
-
-#define INSTR_TIME_GET_MILLISEC(t) \
-	(((double) (t).tv_sec * 1000.0) + ((double) (t).tv_usec) / 1000.0)
-
-#define INSTR_TIME_GET_MICROSEC(t) \
-	(((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) (t).tv_usec)
-
-#endif							/* HAVE_CLOCK_GETTIME */
-
 #else							/* WIN32 */
 
 /* Use QueryPerformanceCounter() */
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 7806ad67d0..9bc23ae919 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -228,7 +228,6 @@ sub GenerateFiles
 		HAVE_BACKTRACE_SYMBOLS     => undef,
 		HAVE_BIO_GET_DATA          => undef,
 		HAVE_BIO_METH_NEW          => undef,
-		HAVE_CLOCK_GETTIME         => undef,
 		HAVE_COMPUTED_GOTO         => undef,
 		HAVE_COPYFILE              => undef,
 		HAVE_COPYFILE_H            => undef,
-- 
2.37.1

