diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c
index d599282193348018c08325e82becf9bee292e563..cb3b7e9278325480b9cbb1ccb23802d7fa82924a 100644
--- a/src/backend/access/hash/hashfunc.c
+++ b/src/backend/access/hash/hashfunc.c
@@ -314,7 +314,7 @@ hash_any(register const unsigned char *k, register int keylen)
 	a = b = c = 0x9e3779b9 + len + 3923095;
 
 	/* If the source pointer is word-aligned, we use word-wide fetches */
-	if (((intptr_t) k & UINT32_ALIGN_MASK) == 0)
+	if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0)
 	{
 		/* Code path for aligned source data */
 		register const uint32 *ka = (const uint32 *) k;
diff --git a/src/include/access/tupmacs.h b/src/include/access/tupmacs.h
index 2886cedc1c81c323fa1d39776be5d15c6092e8c8..42a50e4604fd9c80ad6fab066747679dff2e5660 100644
--- a/src/include/access/tupmacs.h
+++ b/src/include/access/tupmacs.h
@@ -101,7 +101,7 @@
 #define att_align_datum(cur_offset, attalign, attlen, attdatum) \
 ( \
 	((attlen) == -1 && VARATT_IS_SHORT(DatumGetPointer(attdatum))) ? \
-	(intptr_t) (cur_offset) : \
+	(uintptr_t) (cur_offset) : \
 	att_align_nominal(cur_offset, attalign) \
 )
 
@@ -116,13 +116,13 @@
  * aligned 4-byte length word; in either case we need not align.)
  *
  * Note: some callers pass a "char *" pointer for cur_offset.  This is
- * a bit of a hack but should work all right as long as intptr_t is the
+ * a bit of a hack but should work all right as long as uintptr_t is the
  * correct width.
  */
 #define att_align_pointer(cur_offset, attalign, attlen, attptr) \
 ( \
 	((attlen) == -1 && VARATT_NOT_PAD_BYTE(attptr)) ? \
-	(intptr_t) (cur_offset) : \
+	(uintptr_t) (cur_offset) : \
 	att_align_nominal(cur_offset, attalign) \
 )
 
@@ -144,7 +144,7 @@
 #define att_align_nominal(cur_offset, attalign) \
 ( \
 	((attalign) == 'i') ? INTALIGN(cur_offset) : \
-	 (((attalign) == 'c') ? (intptr_t) (cur_offset) : \
+	 (((attalign) == 'c') ? (uintptr_t) (cur_offset) : \
 	  (((attalign) == 'd') ? DOUBLEALIGN(cur_offset) : \
 	   ( \
 			AssertMacro((attalign) == 's'), \
diff --git a/src/include/c.h b/src/include/c.h
index 8916310b5bfa4a7b29761d335632c79ca62efdc3..6e19c6df878b8d09d170624af8b6f1cff239addb 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -486,7 +486,7 @@ typedef NameData *Name;
  *		True iff pointer is properly aligned to point to the given type.
  */
 #define PointerIsAligned(pointer, type) \
-		(((intptr_t)(pointer) % (sizeof (type))) == 0)
+		(((uintptr_t)(pointer) % (sizeof (type))) == 0)
 
 #define OidIsValid(objectId)  ((bool) ((objectId) != InvalidOid))
 
@@ -532,7 +532,7 @@ typedef NameData *Name;
  */
 
 #define TYPEALIGN(ALIGNVAL,LEN)  \
-	(((intptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((intptr_t) ((ALIGNVAL) - 1)))
+	(((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
 
 #define SHORTALIGN(LEN)			TYPEALIGN(ALIGNOF_SHORT, (LEN))
 #define INTALIGN(LEN)			TYPEALIGN(ALIGNOF_INT, (LEN))
@@ -543,7 +543,7 @@ typedef NameData *Name;
 #define BUFFERALIGN(LEN)		TYPEALIGN(ALIGNOF_BUFFER, (LEN))
 
 #define TYPEALIGN_DOWN(ALIGNVAL,LEN)  \
-	(((intptr_t) (LEN)) & ~((intptr_t) ((ALIGNVAL) - 1)))
+	(((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
 
 #define SHORTALIGN_DOWN(LEN)	TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN))
 #define INTALIGN_DOWN(LEN)		TYPEALIGN_DOWN(ALIGNOF_INT, (LEN))
@@ -552,7 +552,7 @@ typedef NameData *Name;
 #define MAXALIGN_DOWN(LEN)		TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN))
 
 /*
- * The above macros will not work with types wider than intptr_t, like with
+ * The above macros will not work with types wider than uintptr_t, like with
  * uint64 on 32-bit platforms.  That's not problem for the usual use where a
  * pointer or a length is aligned, but for the odd case that you need to
  * align something (potentially) wider, use TYPEALIGN64.
@@ -763,7 +763,7 @@ typedef NameData *Name;
 		int		_val = (val); \
 		Size	_len = (len); \
 \
-		if ((((intptr_t) _vstart) & LONG_ALIGN_MASK) == 0 && \
+		if ((((uintptr_t) _vstart) & LONG_ALIGN_MASK) == 0 && \
 			(_len & LONG_ALIGN_MASK) == 0 && \
 			_val == 0 && \
 			_len <= MEMSET_LOOP_LIMIT && \