Skip to content

Commit 0190825

Browse files
Fix bugs from upstream
1 parent 52fa072 commit 0190825

File tree

4 files changed

+28
-18
lines changed

4 files changed

+28
-18
lines changed

Lib/test/test_generated_cases.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ def test_suppress_dispatch(self):
672672
goto somewhere;
673673
}
674674
675-
somewhere:
675+
LABEL(somewhere)
676676
{
677677
678678
}
@@ -1837,14 +1837,14 @@ def test_spilled_label(self):
18371837
"""
18381838

18391839
output = """
1840-
one:
1840+
LABEL(one)
18411841
{
18421842
/* STACK SPILLED */
18431843
stack_pointer = _PyFrame_GetStackPointer(frame);
18441844
goto two;
18451845
}
18461846
1847-
two:
1847+
LABEL(two)
18481848
{
18491849
_PyFrame_SetStackPointer(frame, stack_pointer);
18501850
goto one;
@@ -1896,14 +1896,18 @@ def test_multiple_labels(self):
18961896
LABEL(my_label_1)
18971897
{
18981898
// Comment
1899+
_PyFrame_SetStackPointer(frame, stack_pointer);
18991900
do_thing1();
1901+
stack_pointer = _PyFrame_GetStackPointer(frame);
19001902
goto my_label_2;
19011903
}
19021904
19031905
LABEL(my_label_2)
19041906
{
19051907
// Comment
1908+
_PyFrame_SetStackPointer(frame, stack_pointer);
19061909
do_thing2();
1910+
stack_pointer = _PyFrame_GetStackPointer(frame);
19071911
goto my_label_1;
19081912
}
19091913
"""

Python/bytecodes.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5309,8 +5309,7 @@ dummy_func(
53095309
RELOAD_STACK();
53105310
#ifdef Py_TAIL_CALL_INTERP
53115311
int opcode;
5312-
(void)(opcode);
5313-
#endif
5312+
#endif
53145313
DISPATCH();
53155314
}
53165315

@@ -5360,8 +5359,7 @@ dummy_func(
53605359
RELOAD_STACK();
53615360
#ifdef Py_TAIL_CALL_INTERP
53625361
int opcode;
5363-
(void)(opcode);
5364-
#endif
5362+
#endif
53655363
DISPATCH();
53665364
}
53675365

Python/generated_cases.c.h

Lines changed: 7 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Tools/cases_generator/generators_common.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ def stack_pointer(
404404
self.emit(tkn)
405405
return True
406406

407-
def goto_label(self, goto: Token, label: Token, storage: Storage) -> None:
407+
def goto_label(self, goto: Token, label: Token, storage: Storage, wrap_paren: bool = False) -> None:
408408
if label.text not in self.labels:
409409
print(self.labels.keys())
410410
raise analysis_error(f"Label '{label.text}' does not exist", label)
@@ -415,7 +415,11 @@ def goto_label(self, goto: Token, label: Token, storage: Storage) -> None:
415415
elif storage.spilled:
416416
raise analysis_error("Cannot jump from spilled label without reloading the stack pointer", goto)
417417
self.out.emit(goto)
418+
if wrap_paren:
419+
self.out.emit("(")
418420
self.out.emit(label)
421+
if wrap_paren:
422+
self.out.emit(")")
419423

420424
def emit_save(self, storage: Storage) -> None:
421425
storage.save(self.out)
@@ -607,7 +611,7 @@ def _emit_block(
607611
elif tkn.kind == "GOTO":
608612
label_tkn = next(tkn_iter)
609613
self.goto_label(tkn, label_tkn, storage)
610-
reachable = False;
614+
reachable = False
611615
elif tkn.kind == "IDENTIFIER":
612616
if tkn.text in self._replacers:
613617
if not self._replacers[tkn.text](tkn, tkn_iter, uop, storage, inst):
@@ -623,8 +627,13 @@ def _emit_block(
623627
self._print_storage(storage)
624628
reachable = False
625629
if tkn.text.startswith("JUMP_TO_LABEL"):
630+
next(tkn_iter)
631+
label_tkn = next(tkn_iter)
632+
next(tkn_iter)
633+
self.goto_label(tkn, label_tkn, storage, wrap_paren=True)
626634
reachable = False
627-
self.out.emit(tkn)
635+
else:
636+
self.out.emit(tkn)
628637
elif tkn.kind == "IF":
629638
self.out.emit(tkn)
630639
if_reachable, rbrace, storage = self._emit_if(tkn_iter, uop, storage, inst)

0 commit comments

Comments
 (0)