Inline with-suppress return blocks and extend return duplication by youknowone · Pull Request #7622 · RustPython/RustPython
- Add inline_with_suppress_return_blocks pass to inline return epilogues after with-suppress cleanup sequences - Extend duplicate_end_returns to handle conditional jumps to the final return block, not just unconditional ones - Process jump targets in reverse order to preserve indices - Add extra deoptimize_store_fast_store_fast pass after superinstructions - Add tests for listcomp cleanup tail and with-suppress tail
- Remove unnecessary NOP between FOR_ITER and unpack/store by compiling loop target directly on target range - Fix t-string compilation to match stack order: build strings tuple first, then evaluate interpolations - Split compile_tstring_into into collect_tstring_strings and compile_tstring_interpolations - Handle debug text literals and default repr conversion for debug specifier in t-strings - Always set bit 1 in BUILD_INTERPOLATION oparg encoding
Constant folding: - Add string/bytes multiply and bytes concat folding in IR - Add constant subscript folding (str, bytes, tuple indexing) - Delegate list/set constant folding to IR passes - Stream big non-const list/set via BUILD+LIST_APPEND Class/generic compilation: - Reorder class body prologue: __type_params__ before __classdict__ - Build class function before .generic_base in generic classes - Register .type_params/.generic_base symbols in proper scopes - Use load_name/store_name helpers for synthetic variables Return block handling: - Only duplicate return-None epilogues, not arbitrary returns - Add inline_pop_except_return_blocks pass - Add duplicate_named_except_cleanup_returns pass Other fixes: - Fix eliminate_dead_stores to only collapse adjacent duplicates - Skip STORE_FAST_LOAD_FAST superinstruction in generators after FOR_ITER - Thread jumps through NOP-only blocks - Transfer NOP line info to following unconditional jumps - Extract scope_needs_conditional_annotations_cell helper - Register __conditional_annotations__ for module future annotations
This was referenced
This was referenced
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters