Repackage sparse conditional constant propagation.

...ir.analysis is way too general. For future analyses, it might be
better to use anlysis-specific package names. FYI, I'm about to steal
go/r8g/4140 and package it as ...ir.analysis.type

I thought of re-using Bottom/Top/LatticeElement, along with meet(),
but we can defer that decision until there are more and more analyses
that share the same computation logic, e.g., local work-list based, etc.

Bug: 69964136
Change-Id: I98dcfff528f2e1df9c7ae416ffd4095992e50e62
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/Bottom.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/Bottom.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
index e384d1a..2f6e36e 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/Bottom.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 public class Bottom extends LatticeElement {
   private static final Bottom INSTANCE = new Bottom();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
similarity index 96%
rename from src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
index 0a63bda..33bff86 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 import com.android.tools.r8.ir.code.ConstNumber;
 
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
similarity index 95%
rename from src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
index c1d1b3b..0e2d511 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 import com.android.tools.r8.ir.code.Value;
 
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
index fc58d8b..320425f 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 abstract public class LatticeElement {
   abstract public LatticeElement meet(LatticeElement other);
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
similarity index 99%
rename from src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
index 7cacbc9..3dc84bb 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 import com.android.tools.r8.ir.code.BasicBlock;
 import com.android.tools.r8.ir.code.ConstNumber;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/Top.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/Top.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
index 8610c64..4e08a73 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/Top.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
 
 public class Top extends LatticeElement {
   private static final Top INSTANCE = new Top();
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
index daf83d3..5248ea4 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
@@ -1,14 +1,13 @@
 // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-
 package com.android.tools.r8.ir.code;
 
 import com.android.tools.r8.code.Instruction;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import java.util.Map;
 
diff --git a/src/main/java/com/android/tools/r8/ir/code/Cmp.java b/src/main/java/com/android/tools/r8/ir/code/Cmp.java
index c66d3f0..eb22446 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Cmp.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Cmp.java
@@ -1,7 +1,6 @@
 // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-
 package com.android.tools.r8.ir.code;
 
 import com.android.tools.r8.code.CmpLong;
@@ -11,9 +10,9 @@
 import com.android.tools.r8.code.CmplFloat;
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import com.android.tools.r8.utils.LongInterval;
 import com.android.tools.r8.utils.StringUtils;
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
index 1411ccf..b9c5aaf 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
@@ -17,9 +17,9 @@
 import com.android.tools.r8.code.ConstWideHigh16;
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.CfBuilder;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import com.android.tools.r8.utils.NumberUtils;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Div.java b/src/main/java/com/android/tools/r8/ir/code/Div.java
index 2ca114f..bb74883 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Div.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Div.java
@@ -1,7 +1,6 @@
 // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-
 package com.android.tools.r8.ir.code;
 
 import com.android.tools.r8.code.DivDouble;
@@ -15,8 +14,8 @@
 import com.android.tools.r8.code.DivLong;
 import com.android.tools.r8.code.DivLong2Addr;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import java.util.Map;
 import org.objectweb.asm.Opcodes;
 
diff --git a/src/main/java/com/android/tools/r8/ir/code/Instruction.java b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
index 2b23103..17f4536 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
@@ -10,9 +10,9 @@
 import com.android.tools.r8.graph.AppInfoWithSubtyping;
 import com.android.tools.r8.graph.DebugLocalInfo;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstRangeLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstRangeLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.CfBuilder;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import com.android.tools.r8.ir.optimize.Inliner.Constraint;
diff --git a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
index c90b759..456fe62 100644
--- a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
+++ b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
@@ -5,9 +5,9 @@
 
 import com.android.tools.r8.code.Instruction;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import java.util.Map;
 
diff --git a/src/main/java/com/android/tools/r8/ir/code/Neg.java b/src/main/java/com/android/tools/r8/ir/code/Neg.java
index ac1e2ee..1103700 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Neg.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Neg.java
@@ -8,9 +8,9 @@
 import com.android.tools.r8.code.NegInt;
 import com.android.tools.r8.code.NegLong;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import java.util.Map;
 import org.objectweb.asm.Opcodes;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Not.java b/src/main/java/com/android/tools/r8/ir/code/Not.java
index ca86532..74df329 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Not.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Not.java
@@ -9,9 +9,9 @@
 import com.android.tools.r8.code.NotInt;
 import com.android.tools.r8.code.NotLong;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import com.android.tools.r8.ir.conversion.CfBuilder;
 import com.android.tools.r8.ir.conversion.DexBuilder;
 import java.util.Map;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Rem.java b/src/main/java/com/android/tools/r8/ir/code/Rem.java
index 7ba40b5..3672eda 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Rem.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Rem.java
@@ -1,7 +1,6 @@
 // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-
 package com.android.tools.r8.ir.code;
 
 import com.android.tools.r8.code.RemDouble;
@@ -15,8 +14,8 @@
 import com.android.tools.r8.code.RemLong;
 import com.android.tools.r8.code.RemLong2Addr;
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
 import java.util.Map;
 import org.objectweb.asm.Opcodes;
 
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 342de51..7ab9696 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -21,7 +21,7 @@
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.GraphLense;
-import com.android.tools.r8.ir.analysis.SparseConditionalConstantPropagation;
+import com.android.tools.r8.ir.analysis.constant.SparseConditionalConstantPropagation;
 import com.android.tools.r8.ir.code.IRCode;
 import com.android.tools.r8.ir.desugar.InterfaceMethodRewriter;
 import com.android.tools.r8.ir.desugar.LambdaRewriter;