Skip to content

Commit 94ccbaf

Browse files
committed
update ir
1 parent 62fb000 commit 94ccbaf

File tree

1 file changed

+78
-50
lines changed

1 file changed

+78
-50
lines changed

mypyc/test-data/irbuild-tuple.test

Lines changed: 78 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -691,36 +691,50 @@ L0:
691691
return r1
692692
def 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
702708
L0:
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
708723
L1:
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
711726
L2:
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)
718733
L3:
734+
r18 = r12 + 1
735+
r12 = r18
719736
goto L1
720737
L4:
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
745759
def 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
760779
L1:
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
763782
L2:
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
766795
L3:
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
769798
L4:
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)
776805
L5:
806+
r19 = r13 + 1
807+
r13 = r19
777808
goto L3
778809
L6:
779-
r11 = CPy_NoErrOccurred()
780-
L7:
781-
r12 = PyList_AsTuple(r0)
782810
a = r12
783811
return 1
784812

0 commit comments

Comments
 (0)