Home | History | Annotate | Download | only in NewGVN
      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
      4 
      5 @c = external global i64, align 8
      6 
      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: }
     30 
     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
     54 }
     55