diff --git a/compiler/testData/cfg/Finally.instructions b/compiler/testData/cfg/Finally.instructions index 652eed75a12..8500acbd625 100644 --- a/compiler/testData/cfg/Finally.instructions +++ b/compiler/testData/cfg/Finally.instructions @@ -41,12 +41,12 @@ l0: jf(l3) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)] r(2) NEXT:[ret l1] PREV:[jf(l3)] ret l1 NEXT:[] PREV:[r(2)] - jmp(l4) NEXT:[r(2)] PREV:[] +* jmp(l4) NEXT:[r(2)] PREV:[] l3: read (Unit) NEXT:[r(2)] PREV:[jf(l3)] l2: l4: - r(2) NEXT:[] PREV:[jmp?(l2), jmp(l4), read (Unit)] + r(2) NEXT:[] PREV:[jmp?(l2), read (Unit)] l1: NEXT:[] PREV:[ret l1, r(2)] error: @@ -67,12 +67,12 @@ l3: r(2 > 3) NEXT:[jf(l5)] PREV:[r(>)] jf(l5) NEXT:[read (Unit), ret l4] PREV:[r(2 > 3)] ret l4 NEXT:[] PREV:[jf(l5)] - jmp(l6) NEXT:[] PREV:[] +* jmp(l6) NEXT:[] PREV:[] l5: read (Unit) NEXT:[] PREV:[jf(l5)] l4: l6: - NEXT:[] PREV:[ret l4, jmp(l6), read (Unit)] + NEXT:[] PREV:[ret l4, read (Unit)] error: NEXT:[] PREV:[] ===================== @@ -113,12 +113,12 @@ l3: r(2 > 3) NEXT:[jf(l5)] PREV:[r(>)] jf(l5) NEXT:[read (Unit), ret l4] PREV:[r(2 > 3)] ret l4 NEXT:[] PREV:[jf(l5)] - jmp(l6) NEXT:[] PREV:[] +* jmp(l6) NEXT:[] PREV:[] l5: read (Unit) NEXT:[] PREV:[jf(l5)] l4: l6: - NEXT:[] PREV:[ret l4, jmp(l6), read (Unit)] + NEXT:[] PREV:[ret l4, read (Unit)] error: NEXT:[] PREV:[] ===================== @@ -145,12 +145,12 @@ l2: jf(l5) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)] r(2) NEXT:[ret l3] PREV:[jf(l5)] ret l3 NEXT:[] PREV:[r(2)] - jmp(l6) NEXT:[r(2)] PREV:[] +* jmp(l6) NEXT:[r(2)] PREV:[] l5: read (Unit) NEXT:[r(2)] PREV:[jf(l5)] l4: l6: - r(2) NEXT:[] PREV:[jmp?(l4), jmp(l6), read (Unit)] + r(2) NEXT:[] PREV:[jmp?(l4), read (Unit)] l3: NEXT:[] PREV:[ret l3, r(2)] error: @@ -197,12 +197,12 @@ l2: jf(l5) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)] r(2) NEXT:[ret l3] PREV:[jf(l5)] ret l3 NEXT:[] PREV:[r(2)] - jmp(l6) NEXT:[r(2)] PREV:[] +* jmp(l6) NEXT:[r(2)] PREV:[] l5: read (Unit) NEXT:[r(2)] PREV:[jf(l5)] l4: l6: - r(2) NEXT:[] PREV:[jmp?(l4), jmp(l6), read (Unit)] + r(2) NEXT:[] PREV:[jmp?(l4), read (Unit)] l3: NEXT:[] PREV:[ret l3, r(2)] error: @@ -238,12 +238,12 @@ l4: jf(l7) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)] r(2) NEXT:[jmp(l3)] PREV:[jf(l7)] jmp(l3) NEXT:[read (Unit)] PREV:[r(2)] - jmp(l8) NEXT:[r(2)] PREV:[] +* jmp(l8) NEXT:[r(2)] PREV:[] l7: read (Unit) NEXT:[r(2)] PREV:[jf(l7)] l6: l8: - r(2) NEXT:[jmp(l2)] PREV:[jmp?(l6), jmp(l8), read (Unit)] + r(2) NEXT:[jmp(l2)] PREV:[jmp?(l6), read (Unit)] jmp(l2) NEXT:[r(true)] PREV:[r(2)] l3: read (Unit) NEXT:[] PREV:[jf(l3), jmp(l3)] @@ -282,11 +282,11 @@ l5: r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)] jf(l7) NEXT:[read (Unit), jmp(l4)] PREV:[r(2 > 3)] jmp(l4) NEXT:[read (Unit)] PREV:[jf(l7)] - jmp(l8) NEXT:[jmp(l3)] PREV:[] +* jmp(l8) NEXT:[jmp(l3)] PREV:[] l7: read (Unit) NEXT:[jmp(l3)] PREV:[jf(l7)] l8: - jmp(l3) NEXT:[r(true)] PREV:[jmp(l8), read (Unit)] + jmp(l3) NEXT:[r(true)] PREV:[read (Unit)] l4: read (Unit) NEXT:[r(5)] PREV:[jf(l4), jmp(l4)] r(5) NEXT:[r(2)] PREV:[read (Unit)] @@ -326,11 +326,11 @@ l5: r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)] jf(l7) NEXT:[read (Unit), jmp(l4)] PREV:[r(2 > 3)] jmp(l4) NEXT:[read (Unit)] PREV:[jf(l7)] - jmp(l8) NEXT:[jmp(l3)] PREV:[] +* jmp(l8) NEXT:[jmp(l3)] PREV:[] l7: read (Unit) NEXT:[jmp(l3)] PREV:[jf(l7)] l8: - jmp(l3) NEXT:[r(true)] PREV:[jmp(l8), read (Unit)] + jmp(l3) NEXT:[r(true)] PREV:[read (Unit)] l4: read (Unit) NEXT:[r(2)] PREV:[jf(l4), jmp(l4)] l2: @@ -374,12 +374,12 @@ l5: jf(l7) NEXT:[read (Unit), r(2)] PREV:[r(2 > 3)] r(2) NEXT:[jmp(l4)] PREV:[jf(l7)] jmp(l4) NEXT:[jmp?(l6)] PREV:[r(2)] - jmp(l8) NEXT:[r(2)] PREV:[] +* jmp(l8) NEXT:[r(2)] PREV:[] l7: read (Unit) NEXT:[r(2)] PREV:[jf(l7)] l6: l8: - r(2) NEXT:[jmp?(l4)] PREV:[jmp?(l6), jmp(l8), read (Unit)] + r(2) NEXT:[jmp?(l4)] PREV:[jmp?(l6), read (Unit)] jmp?(l4) NEXT:[jmp?(l6), read (Unit)] PREV:[r(2)] l2: read (Unit) NEXT:[] PREV:[jmp?(l2), jmp?(l4)] @@ -422,11 +422,11 @@ l6: r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)] jf(l7) NEXT:[read (Unit), jmp(l5)] PREV:[r(2 > 3)] jmp(l5) NEXT:[r(1)] PREV:[jf(l7)] - jmp(l8) NEXT:[jmp?(l5)] PREV:[] +* jmp(l8) NEXT:[jmp?(l5)] PREV:[] l7: read (Unit) NEXT:[jmp?(l5)] PREV:[jf(l7)] l8: - jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[jmp(l8), read (Unit)] + jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[read (Unit)] l3: read (Unit) NEXT:[r(5)] PREV:[jmp?(l3), jmp?(l5)] r(5) NEXT:[r(2)] PREV:[read (Unit)] @@ -470,11 +470,11 @@ l6: r(2 > 3) NEXT:[jf(l7)] PREV:[r(>)] jf(l7) NEXT:[read (Unit), jmp(l5)] PREV:[r(2 > 3)] jmp(l5) NEXT:[r(1)] PREV:[jf(l7)] - jmp(l8) NEXT:[jmp?(l5)] PREV:[] +* jmp(l8) NEXT:[jmp?(l5)] PREV:[] l7: read (Unit) NEXT:[jmp?(l5)] PREV:[jf(l7)] l8: - jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[jmp(l8), read (Unit)] + jmp?(l5) NEXT:[r(1), read (Unit)] PREV:[read (Unit)] l3: read (Unit) NEXT:[r(2)] PREV:[jmp?(l3), jmp?(l5)] l2: @@ -500,12 +500,12 @@ l0: r(1) NEXT:[r(2)] PREV:[jmp?(l2)] r(2) NEXT:[ret(*) l1] PREV:[r(1)] ret(*) l1 NEXT:[] PREV:[r(2)] - ret(*) l1 NEXT:[] PREV:[] +* ret(*) l1 NEXT:[] PREV:[] l2: r(2) NEXT:[ret(*) l1] PREV:[jmp?(l2)] ret(*) l1 NEXT:[] PREV:[r(2)] l1: - NEXT:[] PREV:[ret(*) l1, ret(*) l1, ret(*) l1] + NEXT:[] PREV:[ret(*) l1, ret(*) l1] error: NEXT:[] PREV:[] ===================== diff --git a/compiler/testData/cfg/If.instructions b/compiler/testData/cfg/If.instructions index c4d5a9a542c..d075477d559 100644 --- a/compiler/testData/cfg/If.instructions +++ b/compiler/testData/cfg/If.instructions @@ -65,23 +65,23 @@ l0: r(b) NEXT:[jf(l2)] PREV:[w(i)] jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)] ret l1 NEXT:[] PREV:[jf(l2)] - jmp(l3) NEXT:[r(i)] PREV:[] +* jmp(l3) NEXT:[r(i)] PREV:[] l2: read (Unit) NEXT:[r(i)] PREV:[jf(l2)] l3: - r(i) NEXT:[r(doSmth)] PREV:[jmp(l3), read (Unit)] + r(i) NEXT:[r(doSmth)] PREV:[read (Unit)] r(doSmth) NEXT:[r(doSmth(i))] PREV:[r(i)] r(doSmth(i)) NEXT:[r(i)] PREV:[r(doSmth)] r(i) NEXT:[r(i is Int)] PREV:[r(doSmth(i))] r(i is Int) NEXT:[jf(l4)] PREV:[r(i)] jf(l4) NEXT:[read (Unit), ret l1] PREV:[r(i is Int)] ret l1 NEXT:[] PREV:[jf(l4)] - jmp(l5) NEXT:[] PREV:[] +* jmp(l5) NEXT:[] PREV:[] l4: read (Unit) NEXT:[] PREV:[jf(l4)] l1: l5: - NEXT:[] PREV:[ret l1, ret l1, jmp(l5), read (Unit)] + NEXT:[] PREV:[ret l1, ret l1, read (Unit)] error: NEXT:[] PREV:[] ===================== diff --git a/compiler/testData/cfg/OnlyWhileInFunctionBody.instructions b/compiler/testData/cfg/OnlyWhileInFunctionBody.instructions index c0e4641ad03..bdad7a8566b 100644 --- a/compiler/testData/cfg/OnlyWhileInFunctionBody.instructions +++ b/compiler/testData/cfg/OnlyWhileInFunctionBody.instructions @@ -34,17 +34,17 @@ l0: NEXT:[ret l1] PREV:[] l2: l4: - ret l1 NEXT:[] PREV:[, jt(l2)] + ret l1 NEXT:[] PREV:[] l5: - r(1) NEXT:[r(0)] PREV:[] - r(0) NEXT:[r(>)] PREV:[r(1)] - r(>) NEXT:[r(1 > 0)] PREV:[r(0)] - r(1 > 0) NEXT:[jt(l2)] PREV:[r(>)] - jt(l2) NEXT:[read (Unit), ret l1] PREV:[r(1 > 0)] +* r(1) NEXT:[r(0)] PREV:[] +* r(0) NEXT:[r(>)] PREV:[] +* r(>) NEXT:[r(1 > 0)] PREV:[] +* r(1 > 0) NEXT:[jt(l2)] PREV:[] +* jt(l2) NEXT:[read (Unit), ret l1] PREV:[] l3: - read (Unit) NEXT:[] PREV:[jt(l2)] +* read (Unit) NEXT:[] PREV:[] l1: - NEXT:[] PREV:[ret l1, read (Unit)] + NEXT:[] PREV:[ret l1] error: NEXT:[] PREV:[] ===================== diff --git a/compiler/tests/org/jetbrains/jet/cfg/JetControlFlowTest.java b/compiler/tests/org/jetbrains/jet/cfg/JetControlFlowTest.java index 5d82577cda5..b9efa562bcf 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/JetControlFlowTest.java +++ b/compiler/tests/org/jetbrains/jet/cfg/JetControlFlowTest.java @@ -154,13 +154,14 @@ public class JetControlFlowTest extends JetTestCaseBase { private static String formatInstruction(Instruction instruction, int maxLength) { String[] parts = instruction.toString().split("\n"); + String prefix = ((InstructionImpl)instruction).isDead() ? "* " : " "; if (parts.length == 1) { - return " " + String.format("%1$-" + maxLength + "s", instruction); + return prefix + String.format("%1$-" + maxLength + "s", instruction); } StringBuilder sb = new StringBuilder(); for (int i = 0, partsLength = parts.length; i < partsLength; i++) { String part = parts[i]; - sb.append(" ").append(String.format("%1$-" + maxLength + "s", part)); + sb.append(prefix).append(String.format("%1$-" + maxLength + "s", part)); if (i < partsLength - 1) sb.append("\n"); } return sb.toString(); @@ -214,7 +215,9 @@ public class JetControlFlowTest extends JetTestCaseBase { } } else { - maxLength = instuctionText.length(); + if (instuctionText.length() > maxLength) { + maxLength = instuctionText.length(); + } } } String instructionListText = formatInstructionList(instruction.getNextInstructions());