diff --git a/src/backend/storage/ipc/ipci.c b/src/backend/storage/ipc/ipci.c
index 217f5291270..2a37bb15936 100644
--- a/src/backend/storage/ipc/ipci.c
+++ b/src/backend/storage/ipc/ipci.c
@@ -183,14 +183,9 @@ CreateSharedMemoryAndSemaphores(void)
 void
 RegisterBuiltinShmemCallbacks(void)
 {
-	const ShmemCallbacks *builtin_subsystems[] = {
-#define PG_SHMEM_SUBSYSTEM(subsystem_callbacks) &subsystem_callbacks,
+#define PG_SHMEM_SUBSYSTEM(subsystem_callbacks) RegisterShmemCallbacks(&(subsystem_callbacks));
 #include "storage/subsystemlist.h"
 #undef PG_SHMEM_SUBSYSTEM
-	};
-
-	for (int i = 0; i < lengthof(builtin_subsystems); i++)
-		RegisterShmemCallbacks(builtin_subsystems[i]);
 }
 
 /*
