Issue #16881: Fix Py_ARRAY_LENGTH macro for GCC < 3.1.
diff --git a/Include/pymacro.h b/Include/pymacro.h
index 52e8ee3..5bb4b3d 100644
--- a/Include/pymacro.h
+++ b/Include/pymacro.h
@@ -29,8 +29,11 @@
    parameters. With correct compiler support, such usage will cause a build
    error (see Py_BUILD_ASSERT_EXPR).
 
-   Written by Rusty Russell, public domain, http://ccodearchive.net/ */
-#if (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+   Written by Rusty Russell, public domain, http://ccodearchive.net/
+
+   Requires at GCC 3.1+ */
+#if (defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
+    ((__GNUC__ == 3) && (__GNU_MINOR__ >= 1)) || (__GNUC__ >= 4))
 /* Two gcc extensions.
    &a[0] degrades to a pointer: a different type from an array */
 #define Py_ARRAY_LENGTH(array) \