shm_mq_handle **input);
 
 /* Main entrypoint for a worker. */
-extern void test_shm_mq_main(Datum);
+extern void test_shm_mq_main(Datum) __attribute__((noreturn));
 
 #endif
 
 PG_FUNCTION_INFO_V1(worker_spi_launch);
 
 void       _PG_init(void);
-void       worker_spi_main(Datum);
+void       worker_spi_main(Datum) __attribute__((noreturn));
 
 /* flags set by signal handlers */
 static volatile sig_atomic_t got_sighup = false;
 
 extern int boot_yyparse(void);
 
 extern int boot_yylex(void);
-extern void boot_yyerror(const char *str);
+extern void boot_yyerror(const char *str) __attribute__((noreturn));
 
 #endif   /* BOOTSTRAP_H */
 
 extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp,
           core_yyscan_t yyscanner);
 extern int scanner_errposition(int location, core_yyscan_t yyscanner);
-extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner);
+extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) __attribute__((noreturn));
 
 #endif   /* SCANNER_H */
 
 extern void ResetBackgroundWorkerCrashTimes(void);
 
 /* Function to start a background worker, called from postmaster.c */
-extern void StartBackgroundWorker(void);
+extern void StartBackgroundWorker(void) __attribute__((noreturn));
 
 #ifdef EXEC_BACKEND
 extern BackgroundWorker *BackgroundWorkerEntry(int slotno);