• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -S -loop-simplifycfg < %s | FileCheck %s
2; RUN: opt -S -passes='require<domtree>,loop(loop-simplifycfg)' < %s | FileCheck %s
3; RUN: opt -S -loop-simplifycfg -enable-mssa-loop-dependency=true -verify-memoryssa < %s | FileCheck %s
4
5; CHECK-LABEL: foo
6; CHECK:      entry:
7; CHECK-NEXT:   br label %[[LOOP:[a-z]+]]
8; CHECK:      [[LOOP]]:
9; CHECK-NEXT:   phi
10; CHECK-NOT:    br label
11; CHECK:        br i1
12define i32 @foo(i32* %P, i64* %Q) {
13entry:
14  br label %outer
15
16outer:                                            ; preds = %outer.latch2, %entry
17  %y.2 = phi i32 [ 0, %entry ], [ %y.inc2, %outer.latch2 ]
18  br label %inner
19
20inner:                                            ; preds = %outer
21  store i32 0, i32* %P
22  store i32 1, i32* %P
23  store i32 2, i32* %P
24  %y.inc2 = add nsw i32 %y.2, 1
25  %exitcond.outer = icmp eq i32 %y.inc2, 3
26  store i32 %y.2, i32* %P
27  br i1 %exitcond.outer, label %exit, label %outer.latch2
28
29outer.latch2:                                     ; preds = %inner
30  %t = sext i32 %y.inc2 to i64
31  store i64 %t, i64* %Q
32  br label %outer
33
34exit:                                             ; preds = %inner
35  ret i32 0
36}
37