1 ; RUN: opt < %s -loop-extract -disable-output 2 3 declare i32 @_IO_getc() 4 5 declare void @__errno_location() 6 7 define void @yylex() { 8 entry: 9 switch i32 0, label %label.126 [ 10 i32 0, label %return 11 i32 61, label %combine 12 i32 33, label %combine 13 i32 94, label %combine 14 i32 37, label %combine 15 i32 47, label %combine 16 i32 42, label %combine 17 i32 62, label %combine 18 i32 60, label %combine 19 i32 58, label %combine 20 i32 124, label %combine 21 i32 38, label %combine 22 i32 45, label %combine 23 i32 43, label %combine 24 i32 34, label %string_constant 25 i32 39, label %char_constant 26 i32 46, label %loopexit.2 27 i32 57, label %loopexit.2 28 i32 56, label %loopexit.2 29 i32 55, label %loopexit.2 30 i32 54, label %loopexit.2 31 i32 53, label %loopexit.2 32 i32 52, label %loopexit.2 33 i32 51, label %loopexit.2 34 i32 50, label %loopexit.2 35 i32 49, label %loopexit.2 36 i32 48, label %loopexit.2 37 i32 95, label %letter 38 i32 122, label %letter 39 i32 121, label %letter 40 i32 120, label %letter 41 i32 119, label %letter 42 i32 118, label %letter 43 i32 117, label %letter 44 i32 116, label %letter 45 i32 115, label %letter 46 i32 114, label %letter 47 i32 113, label %letter 48 i32 112, label %letter 49 i32 111, label %letter 50 i32 110, label %letter 51 i32 109, label %letter 52 i32 108, label %letter 53 i32 107, label %letter 54 i32 106, label %letter 55 i32 105, label %letter 56 i32 104, label %letter 57 i32 103, label %letter 58 i32 102, label %letter 59 i32 101, label %letter 60 i32 100, label %letter 61 i32 99, label %letter 62 i32 98, label %letter 63 i32 97, label %letter 64 i32 90, label %letter 65 i32 89, label %letter 66 i32 88, label %letter 67 i32 87, label %letter 68 i32 86, label %letter 69 i32 85, label %letter 70 i32 84, label %letter 71 i32 83, label %letter 72 i32 82, label %letter 73 i32 81, label %letter 74 i32 80, label %letter 75 i32 79, label %letter 76 i32 78, label %letter 77 i32 77, label %letter 78 i32 75, label %letter 79 i32 74, label %letter 80 i32 73, label %letter 81 i32 72, label %letter 82 i32 71, label %letter 83 i32 70, label %letter 84 i32 69, label %letter 85 i32 68, label %letter 86 i32 67, label %letter 87 i32 66, label %letter 88 i32 65, label %letter 89 i32 64, label %label.13 90 i32 76, label %label.12 91 i32 36, label %label.11 92 i32 -1, label %label.10 93 ] 94 95 label.10: ; preds = %entry 96 ret void 97 98 label.11: ; preds = %entry 99 ret void 100 101 label.12: ; preds = %entry 102 ret void 103 104 label.13: ; preds = %entry 105 ret void 106 107 letter: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 108 ret void 109 110 loopexit.2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 111 switch i32 0, label %shortcirc_next.14 [ 112 i32 48, label %then.20 113 i32 46, label %endif.38 114 ] 115 116 then.20: ; preds = %loopexit.2 117 switch i32 0, label %else.4 [ 118 i32 120, label %then.21 119 i32 88, label %then.21 120 ] 121 122 then.21: ; preds = %then.20, %then.20 123 ret void 124 125 else.4: ; preds = %then.20 126 ret void 127 128 shortcirc_next.14: ; preds = %loopexit.2 129 ret void 130 131 endif.38: ; preds = %loopexit.2 132 br i1 false, label %then.40, label %then.39 133 134 then.39: ; preds = %endif.38 135 ret void 136 137 then.40: ; preds = %endif.38 138 invoke void @__errno_location( ) 139 to label %switchexit.2 unwind label %LongJmpBlkPre 140 141 loopentry.6: ; preds = %endif.52 142 switch i32 0, label %switchexit.2 [ 143 i32 73, label %label.82 144 i32 105, label %label.82 145 i32 76, label %label.80 146 i32 108, label %label.80 147 i32 70, label %label.78 148 i32 102, label %label.78 149 ] 150 151 label.78: ; preds = %loopentry.6, %loopentry.6 152 ret void 153 154 label.80: ; preds = %loopentry.6, %loopentry.6 155 ret void 156 157 label.82: ; preds = %loopentry.6, %loopentry.6 158 %c.0.15.5 = phi i32 [ %tmp.79417, %loopentry.6 ], [ %tmp.79417, %loopentry.6 ] ; <i32> [#uses=0] 159 ret void 160 161 switchexit.2: ; preds = %loopentry.6, %then.40 162 br i1 false, label %endif.51, label %loopexit.6 163 164 endif.51: ; preds = %switchexit.2 165 br i1 false, label %endif.52, label %then.52 166 167 then.52: ; preds = %endif.51 168 ret void 169 170 endif.52: ; preds = %endif.51 171 %tmp.79417 = invoke i32 @_IO_getc( ) 172 to label %loopentry.6 unwind label %LongJmpBlkPre ; <i32> [#uses=2] 173 174 loopexit.6: ; preds = %switchexit.2 175 ret void 176 177 char_constant: ; preds = %entry 178 ret void 179 180 string_constant: ; preds = %entry 181 ret void 182 183 combine: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 184 ret void 185 186 label.126: ; preds = %entry 187 ret void 188 189 return: ; preds = %entry 190 ret void 191 192 LongJmpBlkPre: ; preds = %endif.52, %then.40 193 ret void 194 } 195