Home | History | Annotate | Download | only in LoopDeletion
      1 ; RUN: opt < %s -S -indvars -loop-deletion -simplifycfg | FileCheck %s
      2 ; PR5794
      3 
      4 ; Indvars and loop deletion should be able to eliminate all looping
      5 ; in this testcase.
      6 
      7 ; CHECK:      define i32 @pmat(i32 %m, i32 %n, double* %y) #0 {
      8 ; CHECK-NEXT: entry:
      9 ; CHECK-NEXT:   ret i32 0
     10 ; CHECK-NEXT: }
     11 
     12 target datalayout = "e-p:64:64:64"
     13 
     14 define i32 @pmat(i32 %m, i32 %n, double* %y) nounwind {
     15 entry:
     16   %cmp4 = icmp sgt i32 %m, 0
     17   br i1 %cmp4, label %bb.n10, label %w.e12
     18 
     19 w.c:
     20   %cmp = icmp slt i32 %inc11, %m
     21   br i1 %cmp, label %w.c2.p, label %w.c.w.e12c
     22 
     23 w.c.w.e12c:
     24   br label %w.c.w.e12c.s
     25 
     26 w.c.w.e12c.s:
     27   br label %w.e12
     28 
     29 bb.n10:
     30   %cmp51 = icmp sgt i32 %n, 0
     31   br i1 %cmp51, label %bb.n10.w.c.w.e12c.sc, label %bb.n10.bb.n10.sc
     32 
     33 bb.n10.bb.n10.sc:
     34   br label %bb.n10.s
     35 
     36 bb.n10.w.c.w.e12c.sc:
     37   br label %w.c.w.e12c.s
     38 
     39 bb.n10.s:
     40   br label %w.c2.p
     41 
     42 w.c2.p:
     43   %i.05 = phi i32 [ 0, %bb.n10.s ], [ %inc11, %w.c ]
     44   br i1 false, label %bb.n, label %w.e
     45 
     46 w.c2:
     47   br i1 undef, label %w.b6, label %w.c2.w.ec
     48 
     49 w.c2.w.ec:
     50   br label %w.e
     51 
     52 bb.n:
     53   br label %w.b6
     54 
     55 w.b6:
     56   br label %w.c2
     57 
     58 w.e:
     59   %i.08 = phi i32 [ undef, %w.c2.w.ec ], [ %i.05, %w.c2.p ]
     60   %inc11 = add nsw i32 %i.08, 1
     61   br label %w.c
     62 
     63 w.e12:
     64   ret i32 0
     65 }
     66 
     67 ; CHECK: attributes #0 = { nounwind }
     68