@@ -189,104 +189,159 @@ L0:
189189[case testFrozenSetFromRange4]
190190from typing import FrozenSet
191191def fn() -> FrozenSet[str]:
192- return frozenset(str(i) for i in range(3))
192+ abc = tuple(range(3))
193+ return frozenset(str(i) for i in abc)
193194[out]
194195def fn():
195- r0 :: list
196- r1 :: short_int
197- i :: int
198- r2 :: bit
199- r3 :: str
200- r4 :: i32
201- r5 :: bit
202- r6 :: short_int
203- r7 :: frozenset
196+ r0, r1 :: object
197+ r2 :: object[1]
198+ r3 :: object_ptr
199+ r4 :: object
200+ r5 :: range
201+ r6, abc :: tuple
202+ r7 :: native_int
203+ r8 :: list
204+ r9 :: native_int
205+ r10 :: bit
206+ r11 :: object
207+ r12, i :: int
208+ r13 :: str
209+ r14 :: native_int
210+ r15 :: frozenset
204211L0:
205- r0 = PyList_New(0)
206- r1 = 0
207- i = r1
212+ r0 = load_address PyRange_Type
213+ r1 = object 3
214+ r2 = [r1]
215+ r3 = load_address r2
216+ r4 = PyObject_Vectorcall(r0, r3, 1, 0)
217+ keep_alive r1
218+ r5 = cast(range, r4)
219+ r6 = PySequence_Tuple(r5)
220+ abc = r6
221+ r7 = var_object_size abc
222+ r8 = PyList_New(r7)
223+ r9 = 0
208224L1:
209- r2 = int_lt r1, 6
210- if r2 goto L2 else goto L4 :: bool
225+ r10 = r9 < r7 :: signed
226+ if r10 goto L2 else goto L4 :: bool
211227L2:
212- r3 = CPyTagged_Str(i)
213- r4 = PyList_Append(r0, r3)
214- r5 = r4 >= 0 :: signed
228+ r11 = CPySequenceTuple_GetItemUnsafe(abc, r9)
229+ r12 = unbox(int, r11)
230+ i = r12
231+ r13 = CPyTagged_Str(i)
232+ CPyList_SetItemUnsafe(r8, r9, r13)
215233L3:
216- r6 = r1 + 2
217- r1 = r6
218- i = r6
234+ r14 = r9 + 1
235+ r9 = r14
219236 goto L1
220237L4:
221- r7 = PyFrozenSet_New(r0 )
222- return r7
238+ r15 = PyFrozenSet_New(r8 )
239+ return r15
223240
224241[case testFrozenSetFromRange5]
225242from typing import FrozenSet
226243def fn() -> FrozenSet[str]:
227- return frozenset(str(i) for i in range(1, 3))
244+ abc = tuple(range(1, 3))
245+ return frozenset(str(i) for i in abc)
228246[out]
229247def fn():
230- r0 :: list
231- r1 :: short_int
232- i :: int
233- r2 :: bit
234- r3 :: str
235- r4 :: i32
236- r5 :: bit
237- r6 :: short_int
238- r7 :: frozenset
248+ r0, r1, r2 :: object
249+ r3 :: object[2]
250+ r4 :: object_ptr
251+ r5 :: object
252+ r6 :: range
253+ r7, abc :: tuple
254+ r8 :: native_int
255+ r9 :: list
256+ r10 :: native_int
257+ r11 :: bit
258+ r12 :: object
259+ r13, i :: int
260+ r14 :: str
261+ r15 :: native_int
262+ r16 :: frozenset
239263L0:
240- r0 = PyList_New(0)
241- r1 = 2
242- i = r1
264+ r0 = load_address PyRange_Type
265+ r1 = object 1
266+ r2 = object 3
267+ r3 = [r1, r2]
268+ r4 = load_address r3
269+ r5 = PyObject_Vectorcall(r0, r4, 2, 0)
270+ keep_alive r1, r2
271+ r6 = cast(range, r5)
272+ r7 = PySequence_Tuple(r6)
273+ abc = r7
274+ r8 = var_object_size abc
275+ r9 = PyList_New(r8)
276+ r10 = 0
243277L1:
244- r2 = int_lt r1, 6
245- if r2 goto L2 else goto L4 :: bool
278+ r11 = r10 < r8 :: signed
279+ if r11 goto L2 else goto L4 :: bool
246280L2:
247- r3 = CPyTagged_Str(i)
248- r4 = PyList_Append(r0, r3)
249- r5 = r4 >= 0 :: signed
281+ r12 = CPySequenceTuple_GetItemUnsafe(abc, r10)
282+ r13 = unbox(int, r12)
283+ i = r13
284+ r14 = CPyTagged_Str(i)
285+ CPyList_SetItemUnsafe(r9, r10, r14)
250286L3:
251- r6 = r1 + 2
252- r1 = r6
253- i = r6
287+ r15 = r10 + 1
288+ r10 = r15
254289 goto L1
255290L4:
256- r7 = PyFrozenSet_New(r0 )
257- return r7
291+ r16 = PyFrozenSet_New(r9 )
292+ return r16
258293
259294[case testFrozenSetFromRange6]
260295from typing import FrozenSet
261296def fn() -> FrozenSet[str]:
262- return frozenset(str(i) for i in range(1, 3, 2))
297+ abc = tuple(range(1, 3, 2))
298+ return frozenset(str(i) for i in abc)
263299[out]
264300def fn():
265- r0 :: list
266- r1 :: short_int
267- i :: int
268- r2 :: bit
269- r3 :: str
270- r4 :: i32
271- r5 :: bit
272- r6 :: short_int
273- r7 :: frozenset
301+ r0, r1, r2, r3 :: object
302+ r4 :: object[3]
303+ r5 :: object_ptr
304+ r6 :: object
305+ r7 :: range
306+ r8, abc :: tuple
307+ r9 :: native_int
308+ r10 :: list
309+ r11 :: native_int
310+ r12 :: bit
311+ r13 :: object
312+ r14, i :: int
313+ r15 :: str
314+ r16 :: native_int
315+ r17 :: frozenset
274316L0:
275- r0 = PyList_New(0)
276- r1 = 2
277- i = r1
317+ r0 = load_address PyRange_Type
318+ r1 = object 1
319+ r2 = object 3
320+ r3 = object 2
321+ r4 = [r1, r2, r3]
322+ r5 = load_address r4
323+ r6 = PyObject_Vectorcall(r0, r5, 3, 0)
324+ keep_alive r1, r2, r3
325+ r7 = cast(range, r6)
326+ r8 = PySequence_Tuple(r7)
327+ abc = r8
328+ r9 = var_object_size abc
329+ r10 = PyList_New(r9)
330+ r11 = 0
278331L1:
279- r2 = int_lt r1, 6
280- if r2 goto L2 else goto L4 :: bool
332+ r12 = r11 < r9 :: signed
333+ if r12 goto L2 else goto L4 :: bool
281334L2:
282- r3 = CPyTagged_Str(i)
283- r4 = PyList_Append(r0, r3)
284- r5 = r4 >= 0 :: signed
335+ r13 = CPySequenceTuple_GetItemUnsafe(abc, r11)
336+ r14 = unbox(int, r13)
337+ i = r14
338+ r15 = CPyTagged_Str(i)
339+ CPyList_SetItemUnsafe(r10, r11, r15)
285340L3:
286- r6 = r1 + 4
287- r1 = r6
288- i = r6
341+ r16 = r11 + 1
342+ r11 = r16
289343 goto L1
290344L4:
291- r7 = PyFrozenSet_New(r0)
292- return r7
345+ r17 = PyFrozenSet_New(r10)
346+ return r17
347+
0 commit comments