| 1153 | builder.assign(self.index_target, builder.read(self.index_reg, self.line), self.line) |
| 1154 | |
| 1155 | def gen_step(self) -> None: |
| 1156 | builder = self.builder |
| 1157 | line = self.line |
| 1158 | |
| 1159 | # Increment index register. If the range is known to fit in short ints, use |
| 1160 | # short ints. |
| 1161 | if is_short_int_rprimitive(self.start_reg.type) and is_short_int_rprimitive( |
| 1162 | self.end_reg.type |
| 1163 | ): |
| 1164 | new_val = builder.int_op( |
| 1165 | short_int_rprimitive, |
| 1166 | builder.read(self.index_reg, line), |
| 1167 | Integer(self.step), |
| 1168 | IntOp.ADD, |
| 1169 | line, |
| 1170 | ) |
| 1171 | |
| 1172 | else: |
| 1173 | new_val = builder.binary_op( |
| 1174 | builder.read(self.index_reg, line), Integer(self.step), "+", line |
| 1175 | ) |
| 1176 | builder.assign(self.index_reg, new_val, line) |
| 1177 | |
| 1178 | |
| 1179 | class ForInfiniteCounter(ForGenerator): |