[LIR] Fix missing block index and add: ishl, land.
Bug: b/225838009
Change-Id: Ic4d0ca63b5b1c7b9740f7ac8698f962b26fd1179
diff --git a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
index 9c3cb42..c80020b 100644
--- a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
+++ b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
@@ -164,7 +164,7 @@
// Control instructions must close the block, thus the current block is null iff the
// instruction denotes a new block.
if (currentBlock == null) {
- currentBlock = blocks.computeIfAbsent(nextInstructionIndex, k -> new BasicBlock());
+ currentBlock = getBasicBlock(nextInstructionIndex);
CatchHandlers<Integer> handlers =
code.getTryCatchTable().getHandlersForBlock(nextInstructionIndex);
if (handlers != null) {
diff --git a/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java b/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
index f715f0e..57e0914 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
@@ -253,7 +253,8 @@
EV right = getNextValueOperand(view);
switch (opcode) {
case LirOpcodes.ISHL:
- throw new Unimplemented(LirOpcodes.toString(opcode));
+ onShl(NumericType.INT, left, right);
+ return;
case LirOpcodes.LSHL:
onShl(NumericType.LONG, left, right);
return;
@@ -273,7 +274,8 @@
onAnd(NumericType.INT, left, right);
return;
case LirOpcodes.LAND:
- throw new Unimplemented(LirOpcodes.toString(opcode));
+ onAnd(NumericType.LONG, left, right);
+ return;
case LirOpcodes.IOR:
onOr(NumericType.INT, left, right);
return;