diff --git a/src/interpreter.h b/src/interpreter.h
index 9f26933c71ddadf19a3d966f19a74b4135268b13..9da06d84d38fcd87246a70d6779c1d4845b18d0a 100644
--- a/src/interpreter.h
+++ b/src/interpreter.h
@@ -1285,6 +1285,22 @@ static int eval_instruction(unsigned char *pc)
 
       CASE(F_CAST); f_cast(); break;
 
+      CASE(F_SOFT_CAST);
+#ifdef PIKE_DEBUG
+      if (d_flag) {
+	/* FIXME: Perform a type-check here */
+	/* Stack: type_string, value */
+	if (d_flag > 1) {
+	  struct pike_string *t = describe_type(sp[-2].u.string);
+	  fprintf(stderr, "Soft cast to %s\n", t->str);
+	  free_string(t);
+	}
+      }
+#endif /* PIKE_DEBUG */
+      stack_swap();
+      pop_stack();
+      break;
+
       CASE(F_RANGE); o_range(); break;
       CASE(F_COPY_VALUE);
       {