OSDN Git Service

Fixed bug 2438465, prevented blocks with move-result from being combined.
authorjeffhao <jeffhao@google.com>
Tue, 23 Feb 2010 20:29:47 +0000 (12:29 -0800)
committerjeffhao <jeffhao@google.com>
Tue, 23 Feb 2010 21:13:16 +0000 (13:13 -0800)
dx/src/com/android/dx/ssa/back/IdenticalBlockCombiner.java

index e9974c0..cfc7015 100644 (file)
@@ -81,7 +81,9 @@ public class IdenticalBlockCombiner {
                 BasicBlock iBlock = blocks.labelToBlock(iLabel);
 
                 if (toDelete.get(iLabel)
-                        || iBlock.getSuccessors().size() > 1) {
+                        || iBlock.getSuccessors().size() > 1
+                        || iBlock.getFirstInsn().getOpcode().getOpcode() ==
+                            RegOps.MOVE_RESULT) {
                     continue;
                 }
 
@@ -93,8 +95,6 @@ public class IdenticalBlockCombiner {
                     BasicBlock jBlock = blocks.labelToBlock(jLabel);
 
                     if (jBlock.getSuccessors().size() == 1
-                            && iBlock.getFirstInsn().getOpcode().getOpcode() !=
-                                RegOps.MOVE_RESULT
                             && compareInsns(iBlock, jBlock)) {
 
                         toCombine.add(jLabel);