]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-125515: Mark code after "return" as unreachable in the cases generator (#133178)
authorBrandt Bucher <brandtbucher@microsoft.com>
Wed, 30 Apr 2025 00:21:14 +0000 (17:21 -0700)
committerGitHub <noreply@github.com>
Wed, 30 Apr 2025 00:21:14 +0000 (00:21 +0000)
Mark code after "return" as unreachable

Python/generated_cases.c.h
Tools/cases_generator/generators_common.py

index 7d3e6c7cbc9eabd42eb0d770d7edb1d28966cbe3..88ab86a774f0ff16cabb1c090e0a9fc68df74323 100644 (file)
             PyObject *result = PyStackRef_AsPyObjectSteal(retval);
             LLTRACE_RESUME_FRAME();
             return result;
-            stack_pointer += -1;
-            assert(WITHIN_STACK_BOUNDS());
-            DISPATCH();
         }
 
         TARGET(IS_OP) {
index 9ba0767cba35a0c006aceed2778ad306ecc8ff61..9d87dc33f269fd9b7cbedab6610bdedb9257033f 100644 (file)
@@ -492,6 +492,11 @@ class Emitter:
                     label_tkn = next(tkn_iter)
                     self.goto_label(tkn, label_tkn, storage)
                     reachable = False
+                elif tkn.kind == "RETURN":
+                    self.emit(tkn)
+                    semicolon = emit_to(self.out, tkn_iter, "SEMI")
+                    self.emit(semicolon)
+                    reachable = False
                 elif tkn.kind == "IDENTIFIER":
                     if tkn.text in self._replacers:
                         if not self._replacers[tkn.text](tkn, tkn_iter, uop, storage, inst):