diff --git a/Cython/Utility/StringTools.c b/Cython/Utility/StringTools.c
index b132101708b3f5fb65e93020a4b8c5f71f563e08_Q3l0aG9uL1V0aWxpdHkvU3RyaW5nVG9vbHMuYw==..13a71528fea4a2e847cb9a6c2d9d82ee369beef1_Q3l0aG9uL1V0aWxpdHkvU3RyaW5nVG9vbHMuYw== 100644
--- a/Cython/Utility/StringTools.c
+++ b/Cython/Utility/StringTools.c
@@ -66,6 +66,7 @@
 
 //////////////////// PyUCS4InUnicode ////////////////////
 
+#if PY_VERSION_HEX < 0x03090000
 #if Py_UNICODE_SIZE == 2
 static int __Pyx_PyUnicodeBufferContainsUCS4_SP(Py_UNICODE* buffer, Py_ssize_t length, Py_UCS4 character) {
     /* handle surrogate pairs for Py_UNICODE buffers in 16bit Unicode builds */
@@ -89,6 +90,7 @@
     }
     return 0;
 }
+#endif
 
 static CYTHON_INLINE int __Pyx_UnicodeContainsUCS4(PyObject* unicode, Py_UCS4 character) {
 #if CYTHON_PEP393_ENABLED
@@ -102,4 +104,6 @@
         }
         return 0;
     }
+#elif PY_VERSION_HEX >= 0x03090000
+    #error Cannot use "UChar in Unicode" in Python 3.9 without PEP-393 unicode strings.
 #endif
@@ -105,4 +109,5 @@
 #endif
+#if PY_VERSION_HEX < 0x03090000
 #if Py_UNICODE_SIZE == 2
     if (unlikely(character > 65535)) {
         return __Pyx_PyUnicodeBufferContainsUCS4_SP(
@@ -118,6 +123,7 @@
             character);
 
     }
+#endif
 }