Skip to content

Commit ae23b30

Browse files
committed
fix: ir
1 parent 0cb6567 commit ae23b30

File tree

1 file changed

+49
-18
lines changed

1 file changed

+49
-18
lines changed

mypyc/test-data/irbuild-str.test

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -519,16 +519,26 @@ def do_count(s: str) -> int:
519519
def do_count(s):
520520
s, r0 :: str
521521
r1 :: native_int
522-
r2 :: bit
523-
r3 :: object
524-
r4 :: int
522+
r2, r3, r4 :: bit
523+
r5, r6, r7 :: int
525524
L0:
526525
r0 = 'x'
527526
r1 = CPyStr_Count(s, r0, 0)
528527
r2 = r1 >= 0 :: signed
529-
r3 = box(native_int, r1)
530-
r4 = unbox(int, r3)
531-
return r4
528+
r3 = r1 <= 4611686018427387903 :: signed
529+
if r3 goto L1 else goto L2 :: bool
530+
L1:
531+
r4 = r1 >= -4611686018427387904 :: signed
532+
if r4 goto L3 else goto L2 :: bool
533+
L2:
534+
r5 = CPyTagged_FromInt64(r1)
535+
r6 = r5
536+
goto L4
537+
L3:
538+
r7 = r1 << 1
539+
r6 = r7
540+
L4:
541+
return r6
532542

533543
[case testCountStart]
534544
from typing import NewType, Union
@@ -542,16 +552,26 @@ def do_count(s, start):
542552
start :: int
543553
r0 :: str
544554
r1 :: native_int
545-
r2 :: bit
546-
r3 :: object
547-
r4 :: int
555+
r2, r3, r4 :: bit
556+
r5, r6, r7 :: int
548557
L0:
549558
r0 = 'x'
550559
r1 = CPyStr_Count(s, r0, start)
551560
r2 = r1 >= 0 :: signed
552-
r3 = box(native_int, r1)
553-
r4 = unbox(int, r3)
554-
return r4
561+
r3 = r1 <= 4611686018427387903 :: signed
562+
if r3 goto L1 else goto L2 :: bool
563+
L1:
564+
r4 = r1 >= -4611686018427387904 :: signed
565+
if r4 goto L3 else goto L2 :: bool
566+
L2:
567+
r5 = CPyTagged_FromInt64(r1)
568+
r6 = r5
569+
goto L4
570+
L3:
571+
r7 = r1 << 1
572+
r6 = r7
573+
L4:
574+
return r6
555575

556576
[case testCountStartEnd]
557577
from typing import NewType, Union
@@ -565,13 +585,24 @@ def do_count(s, start, end):
565585
start, end :: int
566586
r0 :: str
567587
r1 :: native_int
568-
r2 :: bit
569-
r3 :: object
570-
r4 :: int
588+
r2, r3, r4 :: bit
589+
r5, r6, r7 :: int
571590
L0:
572591
r0 = 'x'
573592
r1 = CPyStr_CountFull(s, r0, start, end)
574593
r2 = r1 >= 0 :: signed
575-
r3 = box(native_int, r1)
576-
r4 = unbox(int, r3)
577-
return r4
594+
r3 = r1 <= 4611686018427387903 :: signed
595+
if r3 goto L1 else goto L2 :: bool
596+
L1:
597+
r4 = r1 >= -4611686018427387904 :: signed
598+
if r4 goto L3 else goto L2 :: bool
599+
L2:
600+
r5 = CPyTagged_FromInt64(r1)
601+
r6 = r5
602+
goto L4
603+
L3:
604+
r7 = r1 << 1
605+
r6 = r7
606+
L4:
607+
return r6
608+

0 commit comments

Comments
 (0)