aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/tools/r8
diff options
context:
space:
mode:
authorIan Zerny <zerny@google.com>2017-07-04 11:17:55 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-07-04 11:17:55 +0000
commit724be2d479f4f34dc76fcef812943f5bb3ce2914 (patch)
tree2e75f305f16317d2b35e72d96605531b91edb6bd /src/main/java/com/android/tools/r8
parent056eefdf37a995c532a503a11b8c3f09c14e8db9 (diff)
parentd50d8ed50f8f39cf8e6722688e8a7b88e234b32d (diff)
downloadr8-724be2d479f4f34dc76fcef812943f5bb3ce2914.tar.gz
Merge "Update the instruction block pointer when creating shared suffix blocks."
Diffstat (limited to 'src/main/java/com/android/tools/r8')
-rw-r--r--src/main/java/com/android/tools/r8/ir/code/IRCode.java10
-rw-r--r--src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index b98d857b8..c96bf92fa 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -137,6 +137,7 @@ public class IRCode {
public boolean isConsistentGraph() {
assert consistentPredecessorSuccessors();
assert consistentCatchHandlers();
+ assert consistentBlockInstructions();
assert normalExitBlock == null || normalExitBlock.exit().isReturn();
return true;
}
@@ -262,6 +263,15 @@ public class IRCode {
return true;
}
+ private boolean consistentBlockInstructions() {
+ for (BasicBlock block : blocks) {
+ for (Instruction instruction : block.getInstructions()) {
+ assert instruction.getBlock() == block;
+ }
+ }
+ return true;
+ }
+
private boolean validThrowingInstructions() {
for (BasicBlock block : blocks) {
if (block.hasCatchHandlers()) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
index b5b0bd31d..de81dfeff 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
@@ -107,6 +107,7 @@ public class PeepholeOptimizer {
Instruction instruction = from.previous();
movedThrowingInstruction = movedThrowingInstruction || instruction.instructionTypeCanThrow();
newBlock.getInstructions().addFirst(instruction);
+ instruction.setBlock(newBlock);
}
if (movedThrowingInstruction && first.hasCatchHandlers()) {
newBlock.transferCatchHandlers(first);