@@ -691,36 +691,50 @@ L0:
691691 return r1
692692def test():
693693 r0, source :: tuple[int, int, int]
694- r1 :: list
695- r2, r3, r4 :: object
696- r5, x :: int
697- r6 :: bool
698- r7 :: object
699- r8 :: i32
700- r9, r10 :: bit
701- r11, a :: tuple
694+ r1 :: object
695+ r2 :: native_int
696+ r3 :: bit
697+ r4, r5, r6 :: int
698+ r7, r8, r9 :: object
699+ r10, r11 :: tuple
700+ r12 :: native_int
701+ r13 :: bit
702+ r14 :: object
703+ r15, x :: int
704+ r16 :: bool
705+ r17 :: object
706+ r18 :: native_int
707+ a :: tuple
702708L0:
703709 r0 = (2, 4, 6)
704710 source = r0
705- r1 = PyList_New(0)
706- r2 = box(tuple[int, int, int], source)
707- r3 = PyObject_GetIter(r2)
711+ r1 = box(tuple[int, int, int], source)
712+ r2 = PyObject_Size(r1)
713+ r3 = r2 >= 0 :: signed
714+ r4 = source[0]
715+ r5 = source[1]
716+ r6 = source[2]
717+ r7 = box(int, r4)
718+ r8 = box(int, r5)
719+ r9 = box(int, r6)
720+ r10 = PyTuple_Pack(3, r7, r8, r9)
721+ r11 = PyTuple_New(r2)
722+ r12 = 0
708723L1:
709- r4 = PyIter_Next(r3)
710- if is_error(r4) goto L4 else goto L2
724+ r13 = r12 < r2 :: signed
725+ if r13 goto L2 else goto L4 :: bool
711726L2:
712- r5 = unbox(int, r4 )
713- x = r5
714- r6 = f(x)
715- r7 = box(bool, r6 )
716- r8 = PyList_Append(r1, r7 )
717- r9 = r8 >= 0 :: signed
727+ r14 = CPySequenceTuple_GetItemUnsafe(r10, r12 )
728+ r15 = unbox(int, r14)
729+ x = r15
730+ r16 = f(x )
731+ r17 = box(bool, r16 )
732+ CPySequenceTuple_SetItemUnsafe(r11, r12, r17)
718733L3:
734+ r18 = r12 + 1
735+ r12 = r18
719736 goto L1
720737L4:
721- r10 = CPy_NoErrOccurred()
722- L5:
723- r11 = PyList_AsTuple(r1)
724738 a = r11
725739 return 1
726740
@@ -743,42 +757,56 @@ L0:
743757 r1 = int_eq r0, 0
744758 return r1
745759def test():
746- r0 :: list
747- r1 :: tuple[int, int, int]
748- r2 :: bool
749- r3, r4, r5 :: object
750- r6, x :: int
751- r7 :: bool
752- r8 :: object
753- r9 :: i32
754- r10, r11 :: bit
755- r12, a :: tuple
756- L0:
757- r0 = PyList_New(0)
758- r1 = __main__.source :: static
759- if is_error(r1) goto L1 else goto L2
760+ r0 :: tuple[int, int, int]
761+ r1 :: bool
762+ r2 :: object
763+ r3 :: native_int
764+ r4 :: bit
765+ r5, r6, r7 :: int
766+ r8, r9, r10 :: object
767+ r11, r12 :: tuple
768+ r13 :: native_int
769+ r14 :: bit
770+ r15 :: object
771+ r16, x :: int
772+ r17 :: bool
773+ r18 :: object
774+ r19 :: native_int
775+ a :: tuple
776+ L0:
777+ r0 = __main__.source :: static
778+ if is_error(r0) goto L1 else goto L2
760779L1:
761- r2 = raise NameError('value for final name "source" was not set')
780+ r1 = raise NameError('value for final name "source" was not set')
762781 unreachable
763782L2:
764- r3 = box(tuple[int, int, int], r1)
765- r4 = PyObject_GetIter(r3)
783+ r2 = box(tuple[int, int, int], r0)
784+ r3 = PyObject_Size(r2)
785+ r4 = r3 >= 0 :: signed
786+ r5 = r0[0]
787+ r6 = r0[1]
788+ r7 = r0[2]
789+ r8 = box(int, r5)
790+ r9 = box(int, r6)
791+ r10 = box(int, r7)
792+ r11 = PyTuple_Pack(3, r8, r9, r10)
793+ r12 = PyTuple_New(r3)
794+ r13 = 0
766795L3:
767- r5 = PyIter_Next(r4)
768- if is_error(r5) goto L6 else goto L4
796+ r14 = r13 < r3 :: signed
797+ if r14 goto L4 else goto L6 :: bool
769798L4:
770- r6 = unbox(int, r5 )
771- x = r6
772- r7 = f(x)
773- r8 = box(bool, r7 )
774- r9 = PyList_Append(r0, r8 )
775- r10 = r9 >= 0 :: signed
799+ r15 = CPySequenceTuple_GetItemUnsafe(r11, r13 )
800+ r16 = unbox(int, r15)
801+ x = r16
802+ r17 = f(x )
803+ r18 = box(bool, r17 )
804+ CPySequenceTuple_SetItemUnsafe(r12, r13, r18)
776805L5:
806+ r19 = r13 + 1
807+ r13 = r19
777808 goto L3
778809L6:
779- r11 = CPy_NoErrOccurred()
780- L7:
781- r12 = PyList_AsTuple(r0)
782810 a = r12
783811 return 1
784812
0 commit comments