Binop rewriter only used when relevant

Bug: b/284304606
Change-Id: I2fbb2123bcbdc8d1309a8f9985af1a3ab70a67b8
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/BinopRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/BinopRewriter.java
index a84c292..70c64f1 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/BinopRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/BinopRewriter.java
@@ -245,7 +245,9 @@
 
   @Override
   protected boolean shouldRewriteCode(IRCode code) {
-    return options.testing.enableBinopOptimization && !isDebugMode(code.context());
+    return options.testing.enableBinopOptimization
+        && !isDebugMode(code.context())
+        && code.metadata().mayHaveArithmeticOrLogicalBinop();
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
index 2238b82..96b52dc 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
@@ -58,7 +58,8 @@
 
   @Override
   protected boolean shouldRewriteCode(IRCode code) {
-    return appView.options().enableLoopUnrolling;
+    // This is relevant only if a loop may be present, which implies at least 4 blocks.
+    return appView.options().enableLoopUnrolling && code.getBlocks().size() >= 4;
   }
 
   private boolean isComparisonBlock(BasicBlock comparisonBlockCandidate) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/SplitBranch.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/SplitBranch.java
index e4bac3e..2defd76 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/SplitBranch.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/SplitBranch.java
@@ -40,7 +40,8 @@
 
   @Override
   protected boolean shouldRewriteCode(IRCode code) {
-    return true;
+    // This is relevant only if there is a diamond followed by an if which is a minimum of 6 blocks.
+    return code.getBlocks().size() >= 6;
   }
 
   /**