diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java index 1106d56f9a2..a9563d36dfd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java @@ -151,6 +151,15 @@ public class PseudocodeImpl implements Pseudocode { if (reversedInstructions == null) { LinkedHashSet traversedInstructions = Sets.newLinkedHashSet(); traverseInstructionsInReverseOrder(sinkInstruction, traversedInstructions); + if (traversedInstructions.size() < instructions.size()) { + List simplyReversedInstructions = Lists.newArrayList(instructions); + Collections.reverse(simplyReversedInstructions); + for (Instruction instruction : simplyReversedInstructions) { + if (!traversedInstructions.contains(instruction)) { + traverseInstructionsInReverseOrder(instruction, traversedInstructions); + } + } + } reversedInstructions = Lists.newArrayList(traversedInstructions); } return reversedInstructions;