diff options
author | Ian Zerny <zerny@google.com> | 2017-07-04 11:17:55 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-07-04 11:17:55 +0000 |
commit | 724be2d479f4f34dc76fcef812943f5bb3ce2914 (patch) | |
tree | 2e75f305f16317d2b35e72d96605531b91edb6bd /src/main/java/com/android/tools/r8 | |
parent | 056eefdf37a995c532a503a11b8c3f09c14e8db9 (diff) | |
parent | d50d8ed50f8f39cf8e6722688e8a7b88e234b32d (diff) | |
download | r8-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.java | 10 | ||||
-rw-r--r-- | src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java | 1 |
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); |