Quellcode durchsuchen

Added a specific edge case that may occasionally remove loops

Taddeus Kroes vor 11 Jahren
Ursprung
Commit
9c15b50603
1 geänderte Dateien mit 2 neuen und 0 gelöschten Zeilen
  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) ->