The opcode FOR_LOOP no longer exists.
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index 38b3464..90f83a3 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -556,13 +556,9 @@
 popped, and the byte code counter is incremented by \var{delta}.
 \end{opcodedesc}
 
-\begin{opcodedesc}{FOR_LOOP}{delta}
-This opcode is obsolete.
-%Iterate over a sequence.  TOS is the current index, TOS1 the sequence.
-%First, the next element is computed.  If the sequence is exhausted,
-%increment byte code counter by \var{delta}.  Otherwise, push the
-%sequence, the incremented counter, and the current item onto the stack.
-\end{opcodedesc}
+%\begin{opcodedesc}{FOR_LOOP}{delta}
+%This opcode is obsolete.
+%\end{opcodedesc}
 
 %\begin{opcodedesc}{LOAD_LOCAL}{namei}
 %This opcode is obsolete.
diff --git a/Include/opcode.h b/Include/opcode.h
index df086ef..2e20246 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -107,7 +107,6 @@
 #define JUMP_IF_FALSE	111	/* "" */
 #define JUMP_IF_TRUE	112	/* "" */
 #define JUMP_ABSOLUTE	113	/* Target byte offset from beginning of code */
-#define FOR_LOOP	114	/* Number of bytes to skip */
 
 #define LOAD_GLOBAL	116	/* Index in name list */
 
diff --git a/Lib/dis.py b/Lib/dis.py
index 1529222..2674094 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -262,7 +262,6 @@
 jrel_op('JUMP_IF_FALSE', 111)   # ""
 jrel_op('JUMP_IF_TRUE', 112)    # ""
 jabs_op('JUMP_ABSOLUTE', 113)   # Target byte offset from beginning of code
-jrel_op('FOR_LOOP', 114)        # Number of bytes to skip
 
 name_op('LOAD_GLOBAL', 116)     # Index in name list
 
diff --git a/Python/ceval.c b/Python/ceval.c
index b9c0d5d..12397b4 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1942,37 +1942,6 @@
 			}
 			break;
 
-		case FOR_LOOP:
-			/* for v in s: ...
-			   On entry: stack contains s, i.
-			   On exit: stack contains s, i+1, s[i];
-			   but if loop exhausted:
-			   	s, i are popped, and we jump */
-			w = POP(); /* Loop index */
-			v = POP(); /* Sequence object */
-			u = loop_subscript(v, w);
-			if (u != NULL) {
-				PUSH(v);
-				x = PyInt_FromLong(PyInt_AsLong(w)+1);
-				PUSH(x);
-				Py_DECREF(w);
-				PUSH(u);
-				if (x != NULL) continue;
-			}
-			else {
-				Py_DECREF(v);
-				Py_DECREF(w);
-				/* A NULL can mean "s exhausted"
-				   but also an error: */
-				if (PyErr_Occurred())
-					why = WHY_EXCEPTION;
-				else {
-					JUMPBY(oparg);
-					continue;
-				}
-			}
-			break;
-
 		case SETUP_LOOP:
 		case SETUP_EXCEPT:
 		case SETUP_FINALLY: