diff --git a/Objects/setobject.c b/Objects/setobject.c
index bbe013b..df4a0e1 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -137,7 +137,6 @@
 set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
 {
     setentry *table;
-    setentry *freeslot;
     setentry *entry;
     size_t perturb;
     size_t mask;
@@ -158,7 +157,6 @@
     if (entry->key == NULL)
         goto found_unused;
 
-    freeslot = NULL;
     perturb = hash;
 
     while (1) {
@@ -187,14 +185,12 @@
                 goto restart;
             mask = so->mask;                 /* help avoid a register spill */
         }
-        else if (entry->hash == -1)
-            freeslot = entry;
 
         if (i + LINEAR_PROBES <= mask) {
             for (j = 0 ; j < LINEAR_PROBES ; j++) {
                 entry++;
                 if (entry->hash == 0 && entry->key == NULL)
-                    goto found_unused_or_dummy;
+                    goto found_unused;
                 if (entry->hash == hash) {
                     PyObject *startkey = entry->key;
                     assert(startkey != dummy);
@@ -216,8 +212,6 @@
                         goto restart;
                     mask = so->mask;
                 }
-                else if (entry->hash == -1)
-                    freeslot = entry;
             }
         }
 
@@ -226,17 +220,9 @@
 
         entry = &so->table[i];
         if (entry->key == NULL)
-            goto found_unused_or_dummy;
+            goto found_unused;
     }
 
-  found_unused_or_dummy:
-    if (freeslot == NULL)
-        goto found_unused;
-    so->used++;
-    freeslot->key = key;
-    freeslot->hash = hash;
-    return 0;
-
   found_unused:
     so->fill++;
     so->used++;
