Home | History | Annotate | Download | only in ValueTracking
      1 ; RUN: opt -instsimplify -S < %s | FileCheck %s
      2 
      3 ; CHECK-LABEL: @test1
      4 define i1 @test1(i8 %p, i8* %pq, i8 %n, i8 %r) {
      5 entry:
      6   br label %loop
      7 loop:
      8   %A = phi i8 [ 1, %entry ], [ %next, %loop ]
      9   %next = add nsw i8 %A, 1
     10   %cmp1 = icmp eq i8 %A, %n
     11   br i1 %cmp1, label %exit, label %loop
     12 exit:
     13   %add = or i8 %A, %r
     14   %cmp = icmp eq i8 %add, 0
     15   ; CHECK: ret i1 false
     16   ret i1 %cmp
     17 }
     18 
     19 ; CHECK-LABEL: @test2
     20 define i1 @test2(i8 %p, i8* %pq, i8 %n, i8 %r) {
     21 entry:
     22   br label %loop
     23 loop:
     24   %A = phi i8 [ 1, %entry ], [ %next, %loop ]
     25   %next = add i8 %A, 1
     26   %cmp1 = icmp eq i8 %A, %n
     27   br i1 %cmp1, label %exit, label %loop
     28 exit:
     29   %add = or i8 %A, %r
     30   %cmp = icmp eq i8 %add, 0
     31   ; CHECK-NOT: ret i1 false
     32   ret i1 %cmp
     33 }
     34 
     35 ; CHECK-LABEL: @test3
     36 define i1 @test3(i8 %p, i8* %pq, i8 %n, i8 %r) {
     37 entry:
     38   br label %loop
     39 loop:
     40   %A = phi i8 [ 1, %entry ], [ %next, %loop ]
     41   %next = add nuw i8 %A, 1
     42   %cmp1 = icmp eq i8 %A, %n
     43   br i1 %cmp1, label %exit, label %loop
     44 exit:
     45   %add = or i8 %A, %r
     46   %cmp = icmp eq i8 %add, 0
     47   ; CHECK: ret i1 false
     48   ret i1 %cmp
     49 }
     50