1 extern int p(int);
   2 
   3 static int ffor(void)
   4 {
   5         int i;
   6         for (int i = 0; i < 10; i++) {
   7                 if (!p(i))
   8                         return 0;
   9         }
  10         return 1;
  11 }
  12 
  13 static int fwhile(void)
  14 {
  15         int i = 0;
  16         while (i < 10) {
  17                 if (!p(i))
  18                         return 0;
  19                 i++;
  20         }
  21         return 1;
  22 }
  23 
  24 static int fdo(void)
  25 {
  26         int i = 0;
  27         do {
  28                 if (!p(i))
  29                         return 0;
  30         } while (i++ < 10);
  31         return 1;
  32 }
  33 
  34 /*
  35  * check-name: loop-linearization
  36  * check-command: test-linearize $file
  37  *
  38  * check-output-start
  39 ffor:
  40 .L0:
  41         <entry-point>
  42         phisrc.32   %phi5(i) <- $0
  43         br          .L4
  44 
  45 .L4:
  46         phi.32      %r1(i) <- %phi5(i), %phi6(i)
  47         setlt.32    %r2 <- %r1(i), $10
  48         cbr         %r2, .L1, .L3
  49 
  50 .L1:
  51         call.32     %r4 <- p, %r1(i)
  52         cbr         %r4, .L2, .L5
  53 
  54 .L5:
  55         phisrc.32   %phi1(return) <- $0
  56         br          .L7
  57 
  58 .L2:
  59         add.32      %r7 <- %r1(i), $1
  60         phisrc.32   %phi6(i) <- %r7
  61         br          .L4
  62 
  63 .L3:
  64         phisrc.32   %phi2(return) <- $1
  65         br          .L7
  66 
  67 .L7:
  68         phi.32      %r5 <- %phi1(return), %phi2(return)
  69         ret.32      %r5
  70 
  71 
  72 fwhile:
  73 .L8:
  74         <entry-point>
  75         phisrc.32   %phi11(i) <- $0
  76         br          .L12
  77 
  78 .L12:
  79         phi.32      %r8(i) <- %phi11(i), %phi12(i)
  80         setlt.32    %r9 <- %r8(i), $10
  81         cbr         %r9, .L9, .L11
  82 
  83 .L9:
  84         call.32     %r11 <- p, %r8(i)
  85         cbr         %r11, .L14, .L13
  86 
  87 .L13:
  88         phisrc.32   %phi7(return) <- $0
  89         br          .L15
  90 
  91 .L14:
  92         add.32      %r14 <- %r8(i), $1
  93         phisrc.32   %phi12(i) <- %r14
  94         br          .L12
  95 
  96 .L11:
  97         phisrc.32   %phi8(return) <- $1
  98         br          .L15
  99 
 100 .L15:
 101         phi.32      %r12 <- %phi7(return), %phi8(return)
 102         ret.32      %r12
 103 
 104 
 105 fdo:
 106 .L16:
 107         <entry-point>
 108         phisrc.32   %phi16(i) <- $0
 109         br          .L17
 110 
 111 .L17:
 112         phi.32      %r15(i) <- %phi16(i), %phi17(i)
 113         call.32     %r16 <- p, %r15(i)
 114         cbr         %r16, .L18, .L20
 115 
 116 .L20:
 117         phisrc.32   %phi13(return) <- $0
 118         br          .L22
 119 
 120 .L18:
 121         add.32      %r19 <- %r15(i), $1
 122         setlt.32    %r20 <- %r15(i), $10
 123         phisrc.32   %phi17(i) <- %r19
 124         cbr         %r20, .L17, .L19
 125 
 126 .L19:
 127         phisrc.32   %phi14(return) <- $1
 128         br          .L22
 129 
 130 .L22:
 131         phi.32      %r17 <- %phi13(return), %phi14(return)
 132         ret.32      %r17
 133 
 134 
 135  * check-output-end
 136  */