| // RUN: %target-sil-opt -enable-sil-verify-all -compute-dominance-info -compute-loop-info -loop-canonicalizer %s | %FileCheck %s |
| |
| sil_stage canonical |
| |
| import Builtin |
| |
| // Test insertBackedgeBlock. |
| // |
| // CHECK-LABEL: insert_backedge_block |
| // CHECK: bb2: |
| // CHECK: cond_br undef, bb3, bb5 |
| // CHECK: bb3: |
| // CHECK: br bb4 |
| // CHECK: bb5: |
| // CHECK: cond_br undef, bb6, bb7 |
| // CHECK: bb6: |
| // CHECK: br bb4 |
| sil @insert_backedge_block : $@convention(thin) () -> () { |
| bb0: |
| br bb1 |
| |
| bb1: |
| br bb2 |
| |
| bb2: |
| cond_br undef, bb3, bb4 |
| |
| bb3: |
| br bb1 |
| |
| bb4: |
| cond_br undef, bb5, bb7 |
| |
| bb5: |
| br bb1 |
| |
| bb7: |
| return undef : $() |
| } |
| |
| // CHECK-LABEL: sil @insert_backedge_block_inner_loop : $@convention(thin) () -> () { |
| // CHECK: bb1: |
| // CHECK: br bb2 |
| // CHECK: bb2: |
| // CHECK: br bb3 |
| // CHECK: bb3: |
| // CHECK: cond_br undef, bb4, bb6 |
| // CHECK: bb4: |
| // CHECK: br bb5 |
| // CHECK: bb5: |
| // CHECK: br bb2 |
| // CHECK: bb6: |
| // CHECK: cond_br undef, bb7, bb8 |
| // CHECK: bb7: |
| // CHECK: br bb5 |
| // CHECK: bb8: |
| // CHECK: cond_br undef, bb9, bb10 |
| // CHECK: bb9: |
| // CHECK: br bb1 |
| // CHECK: bb10: |
| // CHECK: return undef |
| sil @insert_backedge_block_inner_loop : $@convention(thin) () -> () { |
| bb0: |
| br bb1 |
| |
| bb1: |
| br bb2 |
| |
| bb2: |
| br bb3 |
| |
| bb3: |
| cond_br undef, bb4, bb5 |
| |
| bb4: |
| br bb2 |
| |
| bb5: |
| cond_br undef, bb6, bb7 |
| |
| bb6: |
| br bb2 |
| |
| bb7: |
| cond_br undef, bb8, bb9 |
| |
| bb8: |
| br bb1 |
| |
| bb9: |
| return undef : $() |
| } |