Add flag for disabling 2addr hints for logical binop

Change-Id: I1e62174f361474a6de03f540b3514e4aadaba45f
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 95a44fb..4e57d1c 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -1464,7 +1464,11 @@
       return;
     }
     Value value = unhandledInterval.getValue();
-    if (value.isDefinedByInstructionSatisfying(i -> i.isArithmeticBinop() || i.isLogicalBinop())) {
+    if (value.isDefinedByInstructionSatisfying(
+        i ->
+            i.isArithmeticBinop()
+                || (options().getTestingOptions().enable2AddrHintsForLogicalBinop
+                    && i.isLogicalBinop()))) {
       Binop binop = value.getDefinition().asBinop();
       Value left = binop.leftValue();
       if (left.getLiveIntervals() != null && !left.getLiveIntervals().overlaps(unhandledInterval)) {
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index a33e4a9..e08186d 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -2378,6 +2378,9 @@
     public boolean enableBranchDiamondInverter =
         SystemPropertyUtils.parseSystemPropertyOrDefault(
             "com.android.tools.r8.enableBranchDiamondInverter", true);
+    public boolean enable2AddrHintsForLogicalBinop =
+        SystemPropertyUtils.parseSystemPropertyOrDefault(
+            "com.android.tools.r8.enable2AddrHintsForLogicalBinop", true);
 
     public boolean enableClassToDexDistributionRefinement(InternalOptions options) {
       if (options.debug && !enableClassToDexDistributionRefinementInDebugMode) {