Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / LoopSimplifyCFG / merge-header.ll
bloba81e2d81b89b26e371f0d6b864576c86fa0e72c2
1 ; RUN: opt -S -passes='require<domtree>,loop(loop-simplifycfg)' < %s | FileCheck %s
2 ; RUN: opt -S -passes=loop-simplifycfg -verify-memoryssa < %s | FileCheck %s
4 ; CHECK-LABEL: foo
5 ; CHECK:      entry:
6 ; CHECK-NEXT:   br label %[[LOOP:[a-z]+]]
7 ; CHECK:      [[LOOP]]:
8 ; CHECK-NEXT:   phi
9 ; CHECK-NOT:    br label
10 ; CHECK:        br i1
11 define i32 @foo(ptr %P, ptr %Q) {
12 entry:
13   br label %outer
15 outer:                                            ; preds = %outer.latch2, %entry
16   %y.2 = phi i32 [ 0, %entry ], [ %y.inc2, %outer.latch2 ]
17   br label %inner
19 inner:                                            ; preds = %outer
20   store i32 0, ptr %P
21   store i32 1, ptr %P
22   store i32 2, ptr %P
23   %y.inc2 = add nsw i32 %y.2, 1
24   %exitcond.outer = icmp eq i32 %y.inc2, 3
25   store i32 %y.2, ptr %P
26   br i1 %exitcond.outer, label %exit, label %outer.latch2
28 outer.latch2:                                     ; preds = %inner
29   %t = sext i32 %y.inc2 to i64
30   store i64 %t, ptr %Q
31   br label %outer
33 exit:                                             ; preds = %inner
34   ret i32 0