Revert "Remove special handling of const number for evaluating throwing for div"
This reverts commit 4f0945b25c843413ace170cf48506962848b8ee7.
Reason for revert: broken bots
Change-Id: I5c245b18e70d7cb5f3028f5d92214dd1b3c8d45e
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 a7e9822..c78137c 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
@@ -15,6 +15,8 @@
import com.android.tools.r8.dex.code.DexDivLong;
import com.android.tools.r8.dex.code.DexDivLong2Addr;
import com.android.tools.r8.dex.code.DexInstruction;
+import com.android.tools.r8.graph.AppView;
+import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.ir.analysis.constant.Bottom;
import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.lightir.LirBuilder;
@@ -137,6 +139,14 @@
}
@Override
+ public boolean instructionInstanceCanThrow(AppView<?> appView, ProgramMethod context) {
+ if (instructionTypeCanThrow()) {
+ return !rightValue().isConstNumber() || rightValue().isConstZero();
+ }
+ return false;
+ }
+
+ @Override
public LatticeElement evaluate(IRCode code, Function<Value, LatticeElement> getLatticeElement) {
LatticeElement rightLattice = getLatticeElement.apply(rightValue());
if (rightLattice.isConst() && !rightLattice.asConst().getConstNumber().isZero()) {