Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bdc5afb

Browse files
authored
[mypyc] Fix to_lines to show same type registers on the same line (#9300)
This PR fixes Environment.to_lines so that continuous registers with the same type are shown on the same line.
1 parent 049a879 commit bdc5afb

15 files changed

Lines changed: 80 additions & 172 deletions

mypyc/ir/ops.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -243,18 +243,13 @@ def to_lines(self, const_regs: Optional[Dict[str, int]] = None) -> List[str]:
243243
regs = list(self.regs())
244244
if const_regs is None:
245245
const_regs = {}
246+
regs = [reg for reg in regs if reg.name not in const_regs]
246247
while i < len(regs):
247248
i0 = i
248-
if regs[i0].name not in const_regs:
249-
group = [regs[i0].name]
250-
else:
251-
group = []
252-
i += 1
253-
continue
249+
group = [regs[i0].name]
254250
while i + 1 < len(regs) and regs[i + 1].type == regs[i0].type:
255251
i += 1
256-
if regs[i].name not in const_regs:
257-
group.append(regs[i].name)
252+
group.append(regs[i].name)
258253
i += 1
259254
result.append('%s :: %s' % (', '.join(group), regs[i0].type))
260255
return result

mypyc/test-data/analysis.test

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ def f(a: int) -> None:
99
z = 1
1010
[out]
1111
def f(a):
12-
a :: int
13-
x :: int
12+
a, x :: int
1413
r0 :: bool
1514
r1 :: native_int
1615
r2, r3, r4 :: bool
17-
y :: int
18-
z :: int
16+
y, z :: int
1917
L0:
2018
x = 2
2119
r1 = x & 1
@@ -69,8 +67,7 @@ def f(a: int) -> int:
6967
return x
7068
[out]
7169
def f(a):
72-
a :: int
73-
x :: int
70+
a, x :: int
7471
r0 :: bool
7572
r1 :: native_int
7673
r2, r3, r4 :: bool
@@ -121,8 +118,7 @@ def f() -> int:
121118
return x
122119
[out]
123120
def f():
124-
x :: int
125-
y :: int
121+
x, y :: int
126122
L0:
127123
x = 2
128124
y = 2
@@ -171,8 +167,7 @@ def f(a):
171167
r0 :: bool
172168
r1 :: native_int
173169
r2, r3, r4 :: bool
174-
y :: int
175-
x :: int
170+
y, x :: int
176171
L0:
177172
r1 = a & 1
178173
r2 = r1 == 0
@@ -304,15 +299,12 @@ def f(n: int) -> None:
304299
n = x
305300
[out]
306301
def f(n):
307-
n :: int
308-
x :: int
309-
y :: int
302+
n, x, y :: int
310303
r0 :: bool
311304
r1 :: native_int
312305
r2 :: bool
313306
r3 :: native_int
314-
r4, r5, r6, r7 :: bool
315-
r8 :: bool
307+
r4, r5, r6, r7, r8 :: bool
316308
r9 :: native_int
317309
r10 :: bool
318310
r11 :: native_int
@@ -419,8 +411,7 @@ def f(x: int) -> int:
419411
return f(a) + a
420412
[out]
421413
def f(x):
422-
x :: int
423-
r0, a, r1, r2, r3 :: int
414+
x, r0, a, r1, r2, r3 :: int
424415
L0:
425416
r0 = f(2)
426417
if is_error(r0) goto L3 (error at f:2) else goto L1
@@ -644,16 +635,13 @@ def f(a: int) -> int:
644635
return sum
645636
[out]
646637
def f(a):
647-
a :: int
648-
sum :: int
649-
i :: int
638+
a, sum, i :: int
650639
r0 :: bool
651640
r1 :: native_int
652641
r2 :: bool
653642
r3 :: native_int
654643
r4, r5, r6, r7, r8 :: bool
655-
r9 :: int
656-
r10 :: int
644+
r9, r10 :: int
657645
L0:
658646
sum = 0
659647
i = 0

mypyc/test-data/exceptions.test

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,14 @@ def sum(a: List[int], l: int) -> int:
111111
[out]
112112
def sum(a, l):
113113
a :: list
114-
l :: int
115-
sum :: int
116-
i :: int
114+
l, sum, i :: int
117115
r0 :: bool
118116
r1 :: native_int
119117
r2 :: bool
120118
r3 :: native_int
121119
r4, r5, r6, r7 :: bool
122120
r8 :: object
123-
r9, r10 :: int
124-
r11, r12 :: int
121+
r9, r10, r11, r12 :: int
125122
L0:
126123
sum = 0
127124
i = 0

mypyc/test-data/irbuild-basic.test

Lines changed: 20 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ def f(x: int) -> None:
5151
return
5252
[out]
5353
def f(x):
54-
x :: int
55-
y :: int
54+
x, y :: int
5655
L0:
5756
y = 2
5857
y = x
@@ -63,8 +62,7 @@ def f(x: int, y: int) -> int:
6362
return x * (y + 1)
6463
[out]
6564
def f(x, y):
66-
x, y :: int
67-
r0, r1 :: int
65+
x, y, r0, r1 :: int
6866
L0:
6967
r0 = CPyTagged_Add(y, 2)
7068
r1 = CPyTagged_Multiply(x, r0)
@@ -541,8 +539,7 @@ def f(n):
541539
r2 :: bool
542540
r3 :: native_int
543541
r4, r5, r6, r7, r8 :: bool
544-
r9, r10 :: int
545-
r11, r12, r13 :: int
542+
r9, r10, r11, r12, r13 :: int
546543
L0:
547544
r1 = n & 1
548545
r2 = r1 == 0
@@ -651,8 +648,7 @@ def f(n: int) -> int:
651648
return -1
652649
[out]
653650
def f(n):
654-
n :: int
655-
r0 :: int
651+
n, r0 :: int
656652
L0:
657653
r0 = CPyTagged_Negate(2)
658654
return r0
@@ -695,8 +691,7 @@ def f() -> int:
695691
return x
696692
[out]
697693
def f():
698-
x :: int
699-
r0 :: int
694+
x, r0 :: int
700695
L0:
701696
x = 0
702697
r0 = CPyTagged_Add(x, 2)
@@ -796,8 +791,7 @@ def f(x):
796791
x :: int
797792
r0 :: object
798793
r1 :: str
799-
r2 :: object
800-
r3, r4 :: object
794+
r2, r3, r4 :: object
801795
L0:
802796
r0 = builtins :: module
803797
r1 = unicode_1 :: static ('print')
@@ -906,14 +900,12 @@ def g(y: object) -> object:
906900
return 3
907901
[out]
908902
def g(y):
909-
y :: object
910-
r0, r1 :: object
903+
y, r0, r1 :: object
911904
r2, a :: list
912905
r3 :: tuple[int, int]
913906
r4 :: object
914907
r5 :: bool
915-
r6 :: object
916-
r7 :: object
908+
r6, r7 :: object
917909
L0:
918910
r0 = box(short_int, 2)
919911
r1 = g(r0)
@@ -937,8 +929,7 @@ def f(a: A, o: object) -> None:
937929
[out]
938930
def f(a, o):
939931
a :: __main__.A
940-
o :: object
941-
r0 :: object
932+
o, r0 :: object
942933
r1 :: bool
943934
r2 :: int
944935
r3 :: object
@@ -1122,8 +1113,7 @@ def big_int() -> None:
11221113
max_31_bit = 1073741823
11231114
[out]
11241115
def big_int():
1125-
r0, a_62_bit, r1, max_62_bit, r2, b_63_bit, r3, c_63_bit, r4, max_63_bit, r5, d_64_bit, r6, max_32_bit :: int
1126-
max_31_bit :: int
1116+
r0, a_62_bit, r1, max_62_bit, r2, b_63_bit, r3, c_63_bit, r4, max_63_bit, r5, d_64_bit, r6, max_32_bit, max_31_bit :: int
11271117
L0:
11281118
r0 = int_1 :: static (4611686018427387902)
11291119
a_62_bit = r0
@@ -1580,8 +1570,7 @@ def f(x: str) -> int: ...
15801570
def f():
15811571
r0 :: object
15821572
r1 :: str
1583-
r2 :: object
1584-
r3, r4 :: object
1573+
r2, r3, r4 :: object
15851574
r5 :: str
15861575
L0:
15871576
r0 = m :: module
@@ -1805,9 +1794,7 @@ L0:
18051794
r0 = (a, b, c)
18061795
return r0
18071796
def g():
1808-
r0 :: str
1809-
r1 :: str
1810-
r2 :: str
1797+
r0, r1, r2 :: str
18111798
r3, r4, r5 :: object
18121799
r6, r7 :: dict
18131800
r8 :: str
@@ -1835,13 +1822,11 @@ L0:
18351822
r14 = unbox(tuple[int, int, int], r13)
18361823
return r14
18371824
def h():
1838-
r0 :: str
1839-
r1 :: str
1825+
r0, r1 :: str
18401826
r2, r3 :: object
18411827
r4, r5 :: dict
18421828
r6 :: str
1843-
r7 :: object
1844-
r8 :: object
1829+
r7, r8 :: object
18451830
r9 :: tuple
18461831
r10 :: dict
18471832
r11 :: int32
@@ -1874,8 +1859,7 @@ def g() -> None:
18741859
[out]
18751860
def f(x, y, z):
18761861
x, y :: int
1877-
z :: str
1878-
r0 :: str
1862+
z, r0 :: str
18791863
L0:
18801864
if is_error(y) goto L1 else goto L2
18811865
L1:
@@ -1914,8 +1898,7 @@ def g() -> None:
19141898
def A.f(self, x, y, z):
19151899
self :: __main__.A
19161900
x, y :: int
1917-
z :: str
1918-
r0 :: str
1901+
z, r0 :: str
19191902
L0:
19201903
if is_error(y) goto L1 else goto L2
19211904
L1:
@@ -1963,8 +1946,7 @@ def f():
19631946
x, r11 :: int
19641947
r12 :: bool
19651948
r13 :: native_int
1966-
r14, r15, r16, r17 :: bool
1967-
r18 :: bool
1949+
r14, r15, r16, r17, r18 :: bool
19681950
r19 :: native_int
19691951
r20, r21, r22, r23 :: bool
19701952
r24 :: int
@@ -2048,8 +2030,7 @@ def f():
20482030
x, r11 :: int
20492031
r12 :: bool
20502032
r13 :: native_int
2051-
r14, r15, r16, r17 :: bool
2052-
r18 :: bool
2033+
r14, r15, r16, r17, r18 :: bool
20532034
r19 :: native_int
20542035
r20, r21, r22, r23 :: bool
20552036
r24 :: int
@@ -2310,8 +2291,7 @@ L0:
23102291
return r1
23112292
def BaseProperty.next(self):
23122293
self :: __main__.BaseProperty
2313-
r0 :: int
2314-
r1 :: int
2294+
r0, r1 :: int
23152295
r2 :: __main__.BaseProperty
23162296
L0:
23172297
r0 = self._incrementer
@@ -3354,8 +3334,7 @@ def f(a: bool) -> int:
33543334
[out]
33553335
def C.__mypyc_defaults_setup(__mypyc_self__):
33563336
__mypyc_self__ :: __main__.C
3357-
r0 :: bool
3358-
r1 :: bool
3337+
r0, r1 :: bool
33593338
L0:
33603339
__mypyc_self__.x = 2; r0 = is_error
33613340
__mypyc_self__.y = 4; r1 = is_error

0 commit comments

Comments
 (0)