Home | History | Annotate | Download | only in LoopDeletion
      1 ; This is the test case taken from Appel's book that illustrates a hard case
      2 ; that SCCP gets right, and when followed by ADCE, is completely eliminated
      3 ;
      4 ; RUN: opt < %s -sccp -simplifycfg -indvars -loop-deletion -dce -simplifycfg -S | not grep br
      5 
      6 define i32 @"test function"(i32 %i0, i32 %j0) {
      7 BB1:
      8         br label %BB2
      9 
     10 BB2:            ; preds = %BB7, %BB1
     11         %j2 = phi i32 [ %j4, %BB7 ], [ 1, %BB1 ]                ; <i32> [#uses=2]
     12         %k2 = phi i32 [ %k4, %BB7 ], [ 0, %BB1 ]                ; <i32> [#uses=4]
     13         %kcond = icmp slt i32 %k2, 100          ; <i1> [#uses=1]
     14         br i1 %kcond, label %BB3, label %BB4
     15 
     16 BB3:            ; preds = %BB2
     17         %jcond = icmp slt i32 %j2, 20           ; <i1> [#uses=1]
     18         br i1 %jcond, label %BB5, label %BB6
     19 
     20 BB4:            ; preds = %BB2
     21         ret i32 %j2
     22 
     23 BB5:            ; preds = %BB3
     24         %k3 = add i32 %k2, 1            ; <i32> [#uses=1]
     25         br label %BB7
     26 
     27 BB6:            ; preds = %BB3
     28         %k5 = add i32 %k2, 1            ; <i32> [#uses=1]
     29         br label %BB7
     30 
     31 BB7:            ; preds = %BB6, %BB5
     32         %j4 = phi i32 [ 1, %BB5 ], [ %k2, %BB6 ]                ; <i32> [#uses=1]
     33         %k4 = phi i32 [ %k3, %BB5 ], [ %k5, %BB6 ]              ; <i32> [#uses=1]
     34         br label %BB2
     35 }
     36 
     37