gh-122974: Suppress GCC array bound warnings in free-threaded build (#123071)

GCC 11 and newer warn about the access to `unique_id` in non-debug builds
due to inlining the call on static non-heap types.
This commit is contained in:
Sam Gross 2024-08-17 16:03:50 -04:00 committed by GitHub
parent 44e458357f
commit 40632b1f1d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 0 deletions

View File

@ -301,6 +301,14 @@ _Py_INCREF_TYPE(PyTypeObject *type)
return;
}
// gh-122974: GCC 11 warns about the access to PyHeapTypeObject fields when
// _Py_INCREF_TYPE() is called on a statically allocated type. The
// _PyType_HasFeature check above ensures that the type is a heap type.
#if defined(__GNUC__) && __GNUC__ >= 11
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Warray-bounds"
#endif
_PyThreadStateImpl *tstate = (_PyThreadStateImpl *)_PyThreadState_GET();
PyHeapTypeObject *ht = (PyHeapTypeObject *)type;
@ -319,6 +327,10 @@ _Py_INCREF_TYPE(PyTypeObject *type)
// It handles the unique_id=-1 case to keep the inlinable function smaller.
_PyType_IncrefSlow(ht);
}
#if defined(__GNUC__) && __GNUC__ >= 11
# pragma GCC diagnostic pop
#endif
}
static inline void