brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 96aa9b9 Raw
62 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; REQUIRES: asserts3; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes='require<domtree>,loop(indvars,loop-simplifycfg)' -verify-loop-info -verify-dom-info -verify-loop-lcssa 2>&1 < %s | FileCheck %s4; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes=indvars,loop-simplifycfg -verify-memoryssa -verify-loop-info -verify-dom-info -verify-loop-lcssa 2>&1 < %s | FileCheck %s5 6define void @test(i1 %c) {7; CHECK-LABEL: @test(8; CHECK-NEXT:  entry:9; CHECK-NEXT:    switch i32 0, label [[ENTRY_SPLIT:%.*]] [10; CHECK-NEXT:    i32 1, label [[DEAD_EXIT:%.*]]11; CHECK-NEXT:    ]12; CHECK:       entry.split:13; CHECK-NEXT:    br label [[OUTER:%.*]]14; CHECK:       outer:15; CHECK-NEXT:    br i1 [[C:%.*]], label [[TO_FOLD:%.*]], label [[LATCH:%.*]]16; CHECK:       to_fold:17; CHECK-NEXT:    br i1 [[C]], label [[LATCH]], label [[INNER_PREHEADER:%.*]]18; CHECK:       inner.preheader:19; CHECK-NEXT:    br label [[INNER:%.*]]20; CHECK:       inner:21; CHECK-NEXT:    br i1 false, label [[INNER_LATCH:%.*]], label [[UNDEAD:%.*]]22; CHECK:       inner_latch:23; CHECK-NEXT:    br i1 true, label [[INNER]], label [[LATCH_LOOPEXIT:%.*]]24; CHECK:       undead:25; CHECK-NEXT:    br label [[LATCH]]26; CHECK:       latch.loopexit:27; CHECK-NEXT:    br label [[LATCH]]28; CHECK:       latch:29; CHECK-NEXT:    br label [[OUTER]]30; CHECK:       dead_exit:31; CHECK-NEXT:    ret void32;33 34entry:35  br label %outer36 37outer:38  br i1 %c, label %to_fold, label %latch39 40to_fold:41  br i1 %c, label %latch, label %inner42 43inner:44  %iv = phi i32 [0, %to_fold], [%iv.next, %inner_latch]45  %never = icmp sgt i32 %iv, 4046  br i1 %never, label %inner_latch, label %undead47 48inner_latch:49  %iv.next = add i32 %iv, 150  %cmp = icmp slt i32 %iv.next, 1051  br i1 %cmp, label %inner, label %latch52 53undead:54  br label %latch55 56latch:57  br i1 true, label %outer, label %dead_exit58 59dead_exit:60  ret void61}62