[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / Transforms / NewGVN / pr33014.ll
blob4157178e4f0ccf2a54985de644c71cf8c9252f47
1 ; Make sure we don't end up in an infinite recursion in singleReachablePHIPath().
2 ; REQUIRES: asserts
3 ; RUN: opt -newgvn -S %s | FileCheck %s
5 @c = external global i64, align 8
7 ; CHECK-LABEL: define void @tinkywinky() {
8 ; CHECK: entry:
9 ; CHECK-NEXT:   br i1 undef, label %l2, label %if.then
10 ; CHECK: if.then:                                          ; preds = %entry
11 ; CHECK-NEXT:   br label %for.body
12 ; CHECK: ph:                                               ; preds = %back, %ontrue
13 ; CHECK-NEXT:   br label %for.body
14 ; CHECK: for.body:                                         ; preds = %ph, %if.then
15 ; CHECK-NEXT:   br i1 undef, label %ontrue, label %onfalse
16 ; CHECK: onfalse:                                          ; preds = %for.body
17 ; CHECK-NEXT:   %patatino = load i64, i64* @c
18 ; CHECK-NEXT:   ret void
19 ; CHECK: ontrue:                                           ; preds = %for.body
20 ; CHECK-NEXT:   %dipsy = load i64, i64* @c
21 ; CHECK-NEXT:   br label %ph
22 ; CHECK: back:                                             ; preds = %l2
23 ; CHECK-NEXT:   store i8 undef, i8* null
24 ; CHECK-NEXT:   br label %ph
25 ; CHECK: end:                                              ; preds = %l2
26 ; CHECK-NEXT:   ret void
27 ; CHECK: l2:                                               ; preds = %entry
28 ; CHECK-NEXT:   br i1 false, label %back, label %end
29 ; CHECK-NEXT: }
31 define void @tinkywinky() {
32 entry:
33   br i1 undef, label %l2, label %if.then
34 if.then:
35   br label %for.body
36 ph:
37   br label %for.body
38 for.body:
39   br i1 undef, label %ontrue, label %onfalse
40 onfalse:
41   %patatino = load i64, i64* @c
42   store i64 %patatino, i64* @c
43   ret void
44 ontrue:
45   %dipsy = load i64, i64* @c
46   store i64 %dipsy, i64* @c
47   br label %ph
48 back:
49   br label %ph
50 end:
51   ret void
52 l2:
53   br i1 false, label %back, label %end