Skip to content

gh-113603: Compiler no longer tries to maintain the no-empty-block invariant#113636

Merged
iritkatriel merged 8 commits into
python:mainfrom
iritkatriel:gh-113603
Jan 3, 2024
Merged

gh-113603: Compiler no longer tries to maintain the no-empty-block invariant#113636
iritkatriel merged 8 commits into
python:mainfrom
iritkatriel:gh-113603

Conversation

@iritkatriel

@iritkatriel iritkatriel commented Jan 1, 2024

Copy link
Copy Markdown
Member

In 3.12 I added some assertions that the invariants we try to maintain in the compiler are true: no empty blocks, no redundant NOPs, no redundant jumps.

The fuzzer has been managing to trip these assertions with code that (after optimization) ends up with many empty blocks (#113054 is a recent example). The problems arise when there are things like a redundant NOP, which (once removed) leaves us with an empty block, which (once removed) exposes a redundant jump.

The no-empty-blocks assertion is not actually important - an empty block doesn't spawn any code so it doesn't matter. It simplifies the compiler if we don't bother to maintain this invariant, and just handle empty blocks as we go along.

@iritkatriel iritkatriel changed the title gh-113054: Compiler no longer tries to maintain the no-empty-block invariant gh-113603: Compiler no longer tries to maintain the no-empty-block invariant Jan 1, 2024

@markshannon markshannon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I like bug fixes that delete code.

@iritkatriel
iritkatriel merged commit 7d01fb4 into python:main Jan 3, 2024
kulikjak pushed a commit to kulikjak/cpython that referenced this pull request Jan 22, 2024
aisk pushed a commit to aisk/cpython that referenced this pull request Feb 11, 2024
Glyphack pushed a commit to Glyphack/cpython that referenced this pull request Sep 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants