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 */