Skip to content

Commit

Permalink
pythongh-124871: fix 'visited' tracking in compiler's reachability an…
Browse files Browse the repository at this point in the history
…alysis (pythonGH-124952)

(cherry picked from commit f474391)

Co-authored-by: Irit Katriel <[email protected]>
  • Loading branch information
iritkatriel authored and miss-islington committed Oct 4, 2024
1 parent ff0ab0e commit 119dbe9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
13 changes: 13 additions & 0 deletions Lib/test/test_compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,19 @@ def test_dead_code_with_except_handler_compiles(self):
x = 2
"""), '<eval>', 'exec')

def test_try_except_in_while_with_chained_condition_compiles(self):
# see gh-124871
compile(textwrap.dedent("""
name_1, name_2, name_3 = 1, 2, 3
while name_3 <= name_2 > name_1:
try:
raise
except:
pass
finally:
pass
"""), '<eval>', 'exec')

def test_compile_invalid_namedexpr(self):
# gh-109351
m = ast.Module(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix compiler bug (in some versions of 3.13) where an assertion fails during reachability
analysis.
5 changes: 3 additions & 2 deletions Python/flowgraph.c
Original file line number Diff line number Diff line change
Expand Up @@ -960,13 +960,14 @@ remove_unreachable(basicblock *entryblock) {
basicblock **sp = stack;
entryblock->b_predecessors = 1;
*sp++ = entryblock;
entryblock->b_visited = 1;
while (sp > stack) {
basicblock *b = *(--sp);
b->b_visited = 1;
if (b->b_next && BB_HAS_FALLTHROUGH(b)) {
if (!b->b_next->b_visited) {
assert(b->b_next->b_predecessors == 0);
*sp++ = b->b_next;
b->b_next->b_visited = 1;
}
b->b_next->b_predecessors++;
}
Expand All @@ -976,8 +977,8 @@ remove_unreachable(basicblock *entryblock) {
if (is_jump(instr) || is_block_push(instr)) {
target = instr->i_target;
if (!target->b_visited) {
assert(target->b_predecessors == 0 || target == b->b_next);
*sp++ = target;
target->b_visited = 1;
}
target->b_predecessors++;
}
Expand Down

0 comments on commit 119dbe9

Please sign in to comment.