diff --git a/Python/ceval.c b/Python/ceval.c
index 368ad69..2d4b16a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2052,7 +2052,6 @@
             break;
 
         TARGET(LOAD_NAME)
-        TARGET(LOAD_NAME_LOCAL_ONLY)
             w = GETITEM(names, oparg);
             if ((v = f->f_locals) == NULL) {
                 PyErr_Format(PyExc_SystemError,
@@ -2074,14 +2073,15 @@
                 }
             }
             if (x == NULL) {
-                if (opcode != LOAD_NAME_LOCAL_ONLY) {
-                    x = PyDict_GetItem(f->f_globals, w);
-                    if (x == NULL)
-                        x = PyDict_GetItem(f->f_builtins, w);
-                }
+                x = PyDict_GetItem(f->f_globals, w);
                 if (x == NULL) {
-                    format_exc_check_arg(PyExc_NameError, NAME_ERROR_MSG, w);
-                    break;
+                    x = PyDict_GetItem(f->f_builtins, w);
+                    if (x == NULL) {
+                        format_exc_check_arg(
+                                    PyExc_NameError,
+                                    NAME_ERROR_MSG, w);
+                        break;
+                    }
                 }
                 Py_INCREF(x);
             }
diff --git a/Python/compile.c b/Python/compile.c
index 83c9e02..aae0339 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -787,7 +787,6 @@
         case LOAD_CONST:
             return 1;
         case LOAD_NAME:
-        case LOAD_NAME_LOCAL_ONLY:
             return 1;
         case BUILD_TUPLE:
         case BUILD_LIST:
@@ -2482,7 +2481,6 @@
         optype = OP_DEREF;
         break;
     case LOCAL:
-    case LOCAL_ONLY:
         if (c->u->u_ste->ste_type == FunctionBlock)
             optype = OP_FAST;
         break;
@@ -2558,7 +2556,7 @@
         break;
     case OP_NAME:
         switch (ctx) {
-        case Load: op = (scope == LOCAL_ONLY) ? LOAD_NAME_LOCAL_ONLY : LOAD_NAME; break;
+        case Load: op = LOAD_NAME; break;
         case Store: op = STORE_NAME; break;
         case Del: op = DELETE_NAME; break;
         case AugLoad:
diff --git a/Python/symtable.c b/Python/symtable.c
index 37bdf2a..55c9f47 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -432,14 +432,7 @@
         return PySet_Add(free, name) >= 0;
     }
     if (flags & DEF_BOUND) {
-        if (ste->ste_type == ClassBlock &&
-            !(flags & DEF_PARAM) &&
-            bound && PySet_Contains(bound, name)) {
-            SET_SCOPE(scopes, name, LOCAL_ONLY);
-        }
-        else {
-            SET_SCOPE(scopes, name, LOCAL);
-        }
+        SET_SCOPE(scopes, name, LOCAL);
         if (PySet_Add(local, name) < 0)
             return 0;
         if (PySet_Discard(global, name) < 0)
@@ -496,7 +489,7 @@
         long scope;
         assert(PyLong_Check(v));
         scope = PyLong_AS_LONG(v);
-        if (scope != LOCAL && scope != LOCAL_ONLY)
+        if (scope != LOCAL)
             continue;
         if (!PySet_Contains(free, name))
             continue;
