diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 09e7e7f9a466c84330e93312a1836a14b8d73e66..9bf396e9df26cb1c7290dcaacaee3646177481c7 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -1018,11 +1018,11 @@ AtStart_Memory(void)
 	 */
 	if (TransactionAbortContext == NULL)
 		TransactionAbortContext =
-			AllocSetContextCreateExtended(TopMemoryContext,
-										  "TransactionAbortContext",
-										  32 * 1024,
-										  32 * 1024,
-										  32 * 1024);
+			AllocSetContextCreate(TopMemoryContext,
+								  "TransactionAbortContext",
+								  32 * 1024,
+								  32 * 1024,
+								  32 * 1024);
 
 	/*
 	 * We shouldn't have a transaction context already.
diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c
index e3d2c4e2faa05168f7d75333669352ad2a994596..c4d7a499b152c09d14cf57fa5629c62b3441a09b 100644
--- a/src/backend/utils/mmgr/aset.c
+++ b/src/backend/utils/mmgr/aset.c
@@ -381,8 +381,10 @@ AllocSetFreeIndex(Size size)
  * maxBlockSize: maximum allocation block size
  *
  * Most callers should abstract the context size parameters using a macro
- * such as ALLOCSET_DEFAULT_SIZES.  (This is now *required* when going
- * through the AllocSetContextCreate macro.)
+ * such as ALLOCSET_DEFAULT_SIZES.
+ *
+ * Note: don't call this directly; go through the wrapper macro
+ * AllocSetContextCreate.
  */
 MemoryContext
 AllocSetContextCreateExtended(MemoryContext parent,
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index ebe0342f18e396172b5e2d552c0ddfee33ed6eec..22da98c19d93297d723fa05d25ccf468f9e978b0 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -119,11 +119,11 @@ MemoryContextInit(void)
 	 * This should be the last step in this function, as elog.c assumes memory
 	 * management works once ErrorContext is non-null.
 	 */
-	ErrorContext = AllocSetContextCreateExtended(TopMemoryContext,
-												 "ErrorContext",
-												 8 * 1024,
-												 8 * 1024,
-												 8 * 1024);
+	ErrorContext = AllocSetContextCreate(TopMemoryContext,
+										 "ErrorContext",
+										 8 * 1024,
+										 8 * 1024,
+										 8 * 1024);
 	MemoryContextAllowInCriticalSection(ErrorContext, true);
 }
 
diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
index bc5757681ba2e7912c9cbb4597a35f2b18f07e6d..8bbf2ed122c4e528f89aed68338cdbb9244c0497 100644
--- a/src/include/utils/memutils.h
+++ b/src/include/utils/memutils.h
@@ -158,17 +158,16 @@ extern MemoryContext AllocSetContextCreateExtended(MemoryContext parent,
 /*
  * This wrapper macro exists to check for non-constant strings used as context
  * names; that's no longer supported.  (Use MemoryContextSetIdentifier if you
- * want to provide a variable identifier.)  Note you must specify block sizes
- * with one of the abstraction macros below.
+ * want to provide a variable identifier.)
  */
-#ifdef HAVE__BUILTIN_CONSTANT_P
-#define AllocSetContextCreate(parent, name, allocparams) \
+#if defined(HAVE__BUILTIN_CONSTANT_P) && defined(HAVE__VA_ARGS)
+#define AllocSetContextCreate(parent, name, ...) \
 	(StaticAssertExpr(__builtin_constant_p(name), \
 					  "memory context names must be constant strings"), \
-	 AllocSetContextCreateExtended(parent, name, allocparams))
+	 AllocSetContextCreateExtended(parent, name, __VA_ARGS__))
 #else
-#define AllocSetContextCreate(parent, name, allocparams) \
-	AllocSetContextCreateExtended(parent, name, allocparams)
+#define AllocSetContextCreate \
+	AllocSetContextCreateExtended
 #endif
 
 /* slab.c */