diff --git a/Objects/clinic/odictobject.c.h b/Objects/clinic/odictobject.c.h
index 5543f94..ee35af6 100644
--- a/Objects/clinic/odictobject.c.h
+++ b/Objects/clinic/odictobject.c.h
@@ -46,7 +46,7 @@
 
 static PyObject *
 OrderedDict_setdefault_impl(PyODictObject *self, PyObject *key,
-                            PyObject *failobj);
+                            PyObject *default_value);
 
 static PyObject *
 OrderedDict_setdefault(PyODictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
@@ -55,13 +55,13 @@
     static const char * const _keywords[] = {"key", "default", NULL};
     static _PyArg_Parser _parser = {"O|O:setdefault", _keywords, 0};
     PyObject *key;
-    PyObject *failobj = Py_None;
+    PyObject *default_value = Py_None;
 
     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
-        &key, &failobj)) {
+        &key, &default_value)) {
         goto exit;
     }
-    return_value = OrderedDict_setdefault_impl(self, key, failobj);
+    return_value = OrderedDict_setdefault_impl(self, key, default_value);
 
 exit:
     return return_value;
@@ -132,4 +132,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=f2641e1277045b59 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=84ef19e7b5db0086 input=a9049054013a1b77]*/
diff --git a/Objects/odictobject.c b/Objects/odictobject.c
index aac454c..8b1e114 100644
--- a/Objects/odictobject.c
+++ b/Objects/odictobject.c
@@ -1012,15 +1012,15 @@
 OrderedDict.setdefault
 
     key: object
-    default as failobj: object = None
+    default: object = None
 
 od.get(k,d), also set od[k]=d if k not in od.
 [clinic start generated code]*/
 
 static PyObject *
 OrderedDict_setdefault_impl(PyODictObject *self, PyObject *key,
-                            PyObject *failobj)
-/*[clinic end generated code: output=605d0f6f61ccb0a6 input=4ee5006f32f5691b]*/
+                            PyObject *default_value)
+/*[clinic end generated code: output=97537cb7c28464b6 input=d5e940fcea7a5a67]*/
 {
     PyObject *result = NULL;
 
@@ -1030,9 +1030,9 @@
             if (PyErr_Occurred())
                 return NULL;
             assert(_odict_find_node(self, key) == NULL);
-            if (PyODict_SetItem((PyObject *)self, key, failobj) >= 0) {
-                result = failobj;
-                Py_INCREF(failobj);
+            if (PyODict_SetItem((PyObject *)self, key, default_value) >= 0) {
+                result = default_value;
+                Py_INCREF(result);
             }
         }
         else {
@@ -1047,9 +1047,9 @@
         else if (exists) {
             result = PyObject_GetItem((PyObject *)self, key);
         }
-        else if (PyObject_SetItem((PyObject *)self, key, failobj) >= 0) {
-            result = failobj;
-            Py_INCREF(failobj);
+        else if (PyObject_SetItem((PyObject *)self, key, default_value) >= 0) {
+            result = default_value;
+            Py_INCREF(result);
         }
     }
 
