public final class com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph
  super_class: java.lang.Object
{
  private com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock[] blocks;
    descriptor: [Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop> cfgLoops;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;

  private int nextLoop;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private boolean reducible;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock[]);
    descriptor: ([Lcom/oracle/truffle/llvm/parser/model/blocks/InstructionBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
        start local 1 // com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock[] blocks
         0: .line 158
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
         2: .line 45
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.reducible:Z
         3: .line 159
            aload 0 /* this */
            aload 1 /* blocks */
            arraylength
            anewarray com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
         4: .line 160
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         5: goto 8
         6: .line 161
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock[] int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            iload 2 /* i */
            new com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock
            dup
            aload 0 /* this */
            aload 1 /* blocks */
            iload 2 /* i */
            aaload
            invokespecial com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.<init>:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;Lcom/oracle/truffle/llvm/parser/model/blocks/InstructionBlock;)V
            aastore
         7: .line 160
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 1 /* blocks */
            arraylength
            if_icmplt 6
        end local 2 // int i
         9: .line 163
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
        10: .line 164
            return
        end local 1 // com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock[] blocks
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            0   11     1  blocks  [Lcom/oracle/truffle/llvm/parser/model/blocks/InstructionBlock;
            5    9     2       i  I
    MethodParameters:
        Name  Flags
      blocks  

  private void resolveEdges();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
         0: .line 167
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 11
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph top int int com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* block */
        start local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
         2: .line 168
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.instructionBlock:Lcom/oracle/truffle/llvm/parser/model/blocks/InstructionBlock;
            invokevirtual com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock.getTerminatingInstruction:()Lcom/oracle/truffle/llvm/parser/model/symbols/instructions/TerminatingInstruction;
            astore 5 /* term */
        start local 5 // com.oracle.truffle.llvm.parser.model.symbols.instructions.TerminatingInstruction term
         3: .line 170
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 9
         5: .line 171
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock int int com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock[] com.oracle.truffle.llvm.parser.model.symbols.instructions.TerminatingInstruction int
      StackMap stack:
            aload 5 /* term */
            iload 6 /* i */
            invokeinterface com.oracle.truffle.llvm.parser.model.symbols.instructions.TerminatingInstruction.getSuccessor:(I)Lcom/oracle/truffle/llvm/parser/model/blocks/InstructionBlock;
            invokevirtual com.oracle.truffle.llvm.parser.model.blocks.InstructionBlock.getBlockIndex:()I
            istore 7 /* sucId */
        start local 7 // int sucId
         6: .line 172
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.sucs:Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            iload 7 /* sucId */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 173
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            iload 7 /* sucId */
            aaload
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.preds:Ljava/util/List;
            aload 1 /* block */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // int sucId
         8: .line 170
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            aload 5 /* term */
            invokeinterface com.oracle.truffle.llvm.parser.model.symbols.instructions.TerminatingInstruction.getSuccessorCount:()I
            if_icmplt 5
        end local 6 // int i
        end local 5 // com.oracle.truffle.llvm.parser.model.symbols.instructions.TerminatingInstruction term
        end local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
        10: .line 167
            iinc 2 1
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph top int int com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock[]
      StackMap stack:
        11: iload 2
            iload 3
            if_icmplt 1
        12: .line 176
            return
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            2   10     1  block  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            3   10     5   term  Lcom/oracle/truffle/llvm/parser/model/symbols/instructions/TerminatingInstruction;
            4   10     6      i  I
            6    8     7  sucId  I

  public java.util.List<com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop> getCFGLoops();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
         0: .line 179
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;

  public boolean isReducible();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
         0: .line 183
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.reducible:Z
            ireturn
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;

  public void build();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
         0: .line 187
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.reducible:Z
         1: .line 189
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.resolveEdges:()V
         2: .line 190
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.blocks:[Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            iconst_0
            aaload
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.openLoops:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;)Ljava/util/BitSet;
            invokevirtual java.util.BitSet.isEmpty:()Z
            ifne 5
         3: .line 191
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.reducible:Z
         4: .line 192
            return
         5: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.sortLoops:()Z
            pop
         6: .line 196
            goto 10
      StackMap locals:
      StackMap stack: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException
         7: pop
         8: .line 197
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.reducible:Z
         9: .line 198
            return
        10: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.getCFGLoops:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 13
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph top java.util.Iterator
      StackMap stack:
        11: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            astore 1 /* l */
        start local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop l
        12: .line 201
            aload 1 /* l */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.calculateSuccessors:()V
        end local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop l
        13: .line 200
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        14: .line 203
            return
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
           12   13     1     l  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;
      Exception table:
        from    to  target  type
           5     6       7  Class com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException

  private boolean sortLoops();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
         0: .line 206
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* sorted */
        start local 1 // java.util.List sorted
         1: .line 207
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* active */
        start local 2 // java.util.List active
         2: .line 208
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.getCFGLoops:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            astore 3 /* l */
        start local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop l
         4: .line 209
            aload 0 /* this */
            aload 1 /* sorted */
            aload 2 /* active */
            aload 3 /* l */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.sortLoop:(Ljava/util/List;Ljava/util/List;Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;)V
        end local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop l
         5: .line 208
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 211
            aload 0 /* this */
            aload 1 /* sorted */
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
         7: .line 212
            iconst_1
            ireturn
        end local 2 // java.util.List active
        end local 1 // java.util.List sorted
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            1    8     1  sorted  Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;
            2    8     2  active  Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;
            4    5     3       l  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;
    Exceptions:
      throws com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException

  private void sortLoop(java.util.List<com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop>, java.util.List<com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop>, com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop);
    descriptor: (Ljava/util/List;Ljava/util/List;Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
        start local 1 // java.util.List sorted
        start local 2 // java.util.List active
        start local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop loop
         0: .line 216
            aload 1 /* sorted */
            aload 3 /* loop */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 217
            return
         2: .line 219
      StackMap locals:
      StackMap stack:
            aload 2 /* active */
            aload 3 /* loop */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 220
            aload 3 /* loop */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.body:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 11
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph java.util.List java.util.List com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock
            astore 4 /* b */
        start local 4 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock b
         5: .line 221
            aload 4 /* b */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.isLoopHeader:Z
            ifeq 11
         6: .line 222
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
            aload 4 /* b */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loopId:I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            astore 6 /* inner */
        start local 6 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop inner
         7: .line 223
            aload 2 /* active */
            aload 6 /* inner */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 227
            new com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException
            dup
            aload 0 /* this */
            ldc "Irreducible nestedness!"
            invokespecial com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException.<init>:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;Ljava/lang/String;)V
            athrow
         9: .line 229
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph java.util.List java.util.List com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock java.util.Iterator com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sorted */
            aload 2 /* active */
            aload 6 /* inner */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.sortLoop:(Ljava/util/List;Ljava/util/List;Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;)V
        10: .line 230
            aload 3 /* loop */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.innerLoops:Ljava/util/List;
            aload 6 /* inner */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop inner
        end local 4 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock b
        11: .line 220
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph java.util.List java.util.List com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        12: .line 233
            aload 3 /* loop */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.body:Ljava/util/List;
            new com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$1.<init>:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;)V
            invokeinterface java.util.List.sort:(Ljava/util/Comparator;)V
        13: .line 239
            aload 1 /* sorted */
            aload 3 /* loop */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        14: .line 240
            aload 2 /* active */
            aload 3 /* loop */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        15: .line 241
            return
        end local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop loop
        end local 2 // java.util.List active
        end local 1 // java.util.List sorted
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            0   16     1  sorted  Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;
            0   16     2  active  Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;
            0   16     3    loop  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;
            5   11     4       b  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            7   11     6   inner  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;
    Exceptions:
      throws com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException
    Signature: (Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;Ljava/util/List<Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;>;Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGLoop;)V
    MethodParameters:
        Name  Flags
      sorted  
      active  
      loop    

  private java.util.BitSet openLoops(com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock);
    descriptor: (Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;)Ljava/util/BitSet;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
        start local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
         0: .line 244
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.visited:Z
            ifeq 10
         1: .line 245
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.active:Z
            ifeq 4
         2: .line 247
            aload 0 /* this */
            aload 1 /* block */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.makeLoopHeader:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;)V
         3: .line 249
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            areturn
         4: .line 250
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.isLoopHeader:Z
            ifeq 9
         5: .line 251
            new java.util.BitSet
            dup
            invokespecial java.util.BitSet.<init>:()V
            astore 2 /* outerLoops */
        start local 2 // java.util.BitSet outerLoops
         6: .line 252
            aload 2 /* outerLoops */
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            invokevirtual java.util.BitSet.or:(Ljava/util/BitSet;)V
         7: .line 253
            aload 2 /* outerLoops */
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loopId:I
            invokevirtual java.util.BitSet.clear:(I)V
         8: .line 254
            aload 2 /* outerLoops */
            areturn
        end local 2 // java.util.BitSet outerLoops
         9: .line 256
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            areturn
        10: .line 259
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            iconst_1
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.visited:Z
        11: .line 260
            aload 1 /* block */
            iconst_1
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.active:Z
        12: .line 261
            new java.util.BitSet
            dup
            invokespecial java.util.BitSet.<init>:()V
            astore 2 /* loops */
        start local 2 // java.util.BitSet loops
        13: .line 262
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.sucs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 18
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock java.util.BitSet top java.util.Iterator
      StackMap stack:
        14: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock
            astore 3 /* successor */
        start local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock successor
        15: .line 264
            aload 2 /* loops */
            aload 0 /* this */
            aload 3 /* successor */
            invokevirtual com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.openLoops:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;)Ljava/util/BitSet;
            invokevirtual java.util.BitSet.or:(Ljava/util/BitSet;)V
        16: .line 265
            aload 3 /* successor */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.active:Z
            ifeq 18
        17: .line 267
            aload 2 /* loops */
            aload 3 /* successor */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loopId:I
            invokevirtual java.util.BitSet.set:(I)V
        end local 3 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock successor
        18: .line 262
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        19: .line 270
            aload 1 /* block */
            aload 2 /* loops */
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
        20: .line 271
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.isLoopHeader:Z
            ifeq 22
        21: .line 272
            aload 2 /* loops */
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loopId:I
            invokevirtual java.util.BitSet.clear:(I)V
        22: .line 274
      StackMap locals: com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock java.util.BitSet
      StackMap stack:
            aload 1 /* block */
            iconst_0
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.active:Z
        23: .line 276
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        24: goto 28
        25: .line 277
      StackMap locals: int
      StackMap stack:
            aload 2 /* loops */
            iload 3 /* i */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 27
        26: .line 278
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.body:Ljava/util/List;
            aload 1 /* block */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        27: .line 276
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: iload 3 /* i */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            if_icmplt 25
        end local 3 // int i
        29: .line 281
            aload 2 /* loops */
            areturn
        end local 2 // java.util.BitSet loops
        end local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   30     0        this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            0   30     1       block  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
            6    9     2  outerLoops  Ljava/util/BitSet;
           13   30     2       loops  Ljava/util/BitSet;
           15   18     3   successor  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
           24   29     3           i  I
    MethodParameters:
       Name  Flags
      block  

  private void makeLoopHeader(com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock);
    descriptor: (Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
        start local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
         0: .line 285
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.isLoopHeader:Z
            ifne 7
         1: .line 286
            aload 1 /* block */
            iconst_1
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.isLoopHeader:Z
         2: .line 287
            getstatic com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.$assertionsDisabled:Z
            ifne 3
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            invokevirtual java.util.BitSet.isEmpty:()Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 288
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            invokevirtual java.util.BitSet.set:(I)V
         4: .line 289
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
            new com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            invokespecial com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.<init>:(Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;I)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 290
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.cfgLoops:Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop
            aload 1 /* block */
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop.loopHeader:Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
         6: .line 291
            aload 1 /* block */
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            dup_x1
            iconst_1
            iadd
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.nextLoop:I
            putfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loopId:I
         7: .line 293
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph.$assertionsDisabled:Z
            ifne 8
            aload 1 /* block */
            getfield com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock.loops:Ljava/util/BitSet;
            invokevirtual java.util.BitSet.cardinality:()I
            iconst_1
            if_icmpeq 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock block
        end local 0 // com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph;
            0    9     1  block  Lcom/oracle/truffle/llvm/parser/util/LLVMControlFlowGraph$CFGBlock;
    MethodParameters:
       Name  Flags
      block  
}
SourceFile: "LLVMControlFlowGraph.java"
NestMembers:
  com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$1  com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock  com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop  com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException
InnerClasses:
  com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$1
  public final CFGBlock = com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGBlock of com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph
  public final CFGLoop = com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$CFGLoop of com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph
  private ControlFlowBailoutException = com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph$ControlFlowBailoutException of com.oracle.truffle.llvm.parser.util.LLVMControlFlowGraph