diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index 5c67518..94af3cb 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -21,17 +21,6 @@
 PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *);
 #endif
 
-#if defined(__clang__) || \
-    (defined(__GNUC__) && \
-     ((__GNUC__ >= 3) || \
-      (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5)))
-#  define _Py_NO_RETURN __attribute__((__noreturn__))
-#elif defined(_MSC_VER)
-#  define _Py_NO_RETURN __declspec(noreturn)
-#else
-#  define _Py_NO_RETURN
-#endif
-
 /* Defined in Python/pylifecycle.c */
 PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message);
 
diff --git a/Include/pyport.h b/Include/pyport.h
index 97fb5e5..ab88a9a 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -829,4 +829,18 @@
 #  define _Py_FORCE_UTF8_FS_ENCODING
 #endif
 
+/* Mark a function which cannot return. Example:
+
+   PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void); */
+#if defined(__clang__) || \
+    (defined(__GNUC__) && \
+     ((__GNUC__ >= 3) || \
+      (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5)))
+#  define _Py_NO_RETURN __attribute__((__noreturn__))
+#elif defined(_MSC_VER)
+#  define _Py_NO_RETURN __declspec(noreturn)
+#else
+#  define _Py_NO_RETURN
+#endif
+
 #endif /* Py_PYPORT_H */
diff --git a/Include/pythread.h b/Include/pythread.h
index eb61033..bc1d92c 100644
--- a/Include/pythread.h
+++ b/Include/pythread.h
@@ -23,7 +23,7 @@
 
 PyAPI_FUNC(void) PyThread_init_thread(void);
 PyAPI_FUNC(unsigned long) PyThread_start_new_thread(void (*)(void *), void *);
-PyAPI_FUNC(void) PyThread_exit_thread(void);
+PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void);
 PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void);
 
 PyAPI_FUNC(PyThread_type_lock) PyThread_allocate_lock(void);
diff --git a/Python/ceval.c b/Python/ceval.c
index 8ae273e..e616a3f 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -211,7 +211,6 @@
     if (_Py_IsFinalizing() && !_Py_CURRENTLY_FINALIZING(tstate)) {
         drop_gil(tstate);
         PyThread_exit_thread();
-        Py_UNREACHABLE();
     }
 }
 
diff --git a/Python/thread_nt.h b/Python/thread_nt.h
index fdb192b..5e00c35 100644
--- a/Python/thread_nt.h
+++ b/Python/thread_nt.h
@@ -227,7 +227,7 @@
     return GetCurrentThreadId();
 }
 
-void
+void _Py_NO_RETURN
 PyThread_exit_thread(void)
 {
     dprintf(("%lu: PyThread_exit_thread called\n", PyThread_get_thread_ident()));
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 25f58d9..1f4f36d 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -302,7 +302,7 @@
     return (unsigned long) threadid;
 }
 
-void
+void _Py_NO_RETURN
 PyThread_exit_thread(void)
 {
     dprintf(("PyThread_exit_thread called\n"));
