Преглед на файлове

Added a specific edge case that may occasionally remove loops

Taddeus Kroes преди 11 години
родител
ревизия
9c15b50603
променени са 1 файла, в които са добавени 2 реда и са изтрити 0 реда
  1. 2 0
      bf.ml

+ 2 - 0
bf.ml

@@ -205,6 +205,8 @@ let optimize program =
     (* remove dead code *)
     | Set 0 :: Loop _ :: tl ->
       Set 0 :: tl |> opt
+    | (Offset (i, Set 0) as off) :: Shift j :: Loop _ :: tl when i = j ->
+      off :: Shift j :: tl |> opt
 
     | (Shift 0 | Add 0) :: tl
     | (Add _ | Set _ | Mul _) :: (Set _ :: _ as tl) ->