• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -S < %s -jump-threading | FileCheck %s
2; CHECK-LABEL: @foo
3; CHECK: bb6:
4; CHECK-NEXT: ret void
5; CHECK: bb3:
6; CHECK: br label %bb3
7define void @foo() {
8entry:
9  br i1 true, label %bb6, label %bb3
10
11bb3:
12  %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ]
13  %y  = and i64 undef, 1
14  %p  = icmp ne i64 %y, 0
15  br i1 %p, label %bb4, label %bb5
16
17bb4:
18  br label %bb5
19
20bb5:
21  %x1 = phi i32 [ %x0, %bb3 ], [ %x0, %bb4 ]
22  %z  = phi i32 [ 0, %bb3 ], [ 1, %bb4 ]
23  %q  = icmp eq i32 %z, 0
24  br i1 %q, label %bb3, label %bb6
25
26bb6:
27  ret void
28}
29
30; CHECK-LABEL: @bar
31; Just check that we don't crash on this test.
32define void @bar(i1 %p) {
33entry:
34  br i1 false, label %bb2, label %exit
35
36bb2:
37  %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ]
38  br i1 %p, label %bb3, label %bb4
39
40bb3:
41  br label %bb5
42
43bb4:
44  br label %bb5
45
46bb5:
47  %x1 = phi i32 [ %x0, %bb3 ], [ 0, %bb4 ]
48  switch i32 %x1, label %exit [
49    i32 10, label %bb2
50  ]
51
52exit:
53  ret void
54}
55