diff --git a/py/compile.c b/py/compile.c
index 5ea7bb4b298c55e4c284b0f215ed4ddd2857e2f9..3967350e384d7f6d62cc046a3ee619e99e6bca2f 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -1484,7 +1484,7 @@ STATIC void compile_for_stmt(compiler_t *comp, mp_parse_node_struct_t *pns) {
         EMIT_ARG(jump, continue_label);
     }
     EMIT_ARG(label_assign, pop_label);
-    EMIT_ARG(for_iter_end, true);
+    EMIT(for_iter_end);
 
     // break/continue apply to outer loop (if any) in the else block
     END_BREAK_CONTINUE_BLOCK
@@ -2906,7 +2906,7 @@ STATIC void compile_scope_comp_iter(compiler_t *comp, mp_parse_node_struct_t *pn
 
     EMIT_ARG(jump, l_top);
     EMIT_ARG(label_assign, l_end);
-    EMIT_ARG(for_iter_end, true);
+    EMIT(for_iter_end);
 }
 
 STATIC void check_for_doc_string(compiler_t *comp, mp_parse_node_t pn) {
diff --git a/py/emit.h b/py/emit.h
index 6acae9e80f61208ad6c3e2559ca904988a459024..64bb957f60960fac7ddaccc07a6cef5d3967ec34 100644
--- a/py/emit.h
+++ b/py/emit.h
@@ -112,7 +112,7 @@ typedef struct _emit_method_table_t {
     void (*end_finally)(emit_t *emit);
     void (*get_iter)(emit_t *emit, bool use_stack);
     void (*for_iter)(emit_t *emit, mp_uint_t label);
-    void (*for_iter_end)(emit_t *emit, bool use_stack);
+    void (*for_iter_end)(emit_t *emit);
     void (*pop_block)(emit_t *emit);
     void (*pop_except)(emit_t *emit);
     void (*unary_op)(emit_t *emit, mp_unary_op_t op);
@@ -230,7 +230,7 @@ void mp_emit_bc_setup_finally(emit_t *emit, mp_uint_t label);
 void mp_emit_bc_end_finally(emit_t *emit);
 void mp_emit_bc_get_iter(emit_t *emit, bool use_stack);
 void mp_emit_bc_for_iter(emit_t *emit, mp_uint_t label);
-void mp_emit_bc_for_iter_end(emit_t *emit, bool use_stack);
+void mp_emit_bc_for_iter_end(emit_t *emit);
 void mp_emit_bc_pop_block(emit_t *emit);
 void mp_emit_bc_pop_except(emit_t *emit);
 void mp_emit_bc_unary_op(emit_t *emit, mp_unary_op_t op);
diff --git a/py/emitbc.c b/py/emitbc.c
index caa6761fe7c2c3c87725467504b84b4449c8469e..0076c147e1c5305a965640e59b5373017df89887 100644
--- a/py/emitbc.c
+++ b/py/emitbc.c
@@ -787,8 +787,8 @@ void mp_emit_bc_for_iter(emit_t *emit, mp_uint_t label) {
     emit_write_bytecode_byte_unsigned_label(emit, MP_BC_FOR_ITER, label);
 }
 
-void mp_emit_bc_for_iter_end(emit_t *emit, bool use_stack) {
-    emit_bc_pre(emit, -(use_stack ? sizeof(mp_obj_iter_buf_t) / sizeof(mp_obj_t) : 1));
+void mp_emit_bc_for_iter_end(emit_t *emit) {
+    emit_bc_pre(emit, -(sizeof(mp_obj_iter_buf_t) / sizeof(mp_obj_t)));
 }
 
 void mp_emit_bc_pop_block(emit_t *emit) {
diff --git a/py/emitnative.c b/py/emitnative.c
index ffc4d9187051098522641857ec016999e67bec35..9176f0a3c229318894af93cce006d2e3c66e6833 100644
--- a/py/emitnative.c
+++ b/py/emitnative.c
@@ -1827,10 +1827,10 @@ STATIC void emit_native_for_iter(emit_t *emit, mp_uint_t label) {
     emit_post_push_reg(emit, VTYPE_PYOBJ, REG_RET);
 }
 
-STATIC void emit_native_for_iter_end(emit_t *emit, bool use_stack) {
+STATIC void emit_native_for_iter_end(emit_t *emit) {
     // adjust stack counter (we get here from for_iter ending, which popped the value for us)
     emit_native_pre(emit);
-    adjust_stack(emit, -(use_stack ? sizeof(mp_obj_iter_buf_t) / sizeof(mp_obj_t) : 1));
+    adjust_stack(emit, -(sizeof(mp_obj_iter_buf_t) / sizeof(mp_obj_t)));
     emit_post(emit);
 }