Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add CFG block splitting, jump threading, backward jump normalization,…
… genexpr StopIteration wrapper

- split_blocks_at_jumps: split blocks at branch points so each has one exit
- jump_threading: thread jumps through single-jump blocks (flowgraph.c jump_thread)
- Backward conditional jump normalization: invert and create NOT_TAKEN+JUMP block
- Follow empty blocks in jump-to-return optimization (next_nonempty_block)
- Add PEP 479 StopIteration handler to compile_comprehension for generators
  • Loading branch information
youknowone committed Mar 30, 2026
commit 0d334a1f6b4be83759fb3b6b93d433d72e0c6688
3 changes: 2 additions & 1 deletion crates/codegen/src/ir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2302,7 +2302,8 @@ fn normalize_jumps(blocks: &mut Vec<Block>) {

visited.fill(false);

for &block_idx in &visit_order {
for vi in 0..visit_order.len() {
let block_idx = visit_order[vi];
let idx = block_idx.idx();
visited[idx] = true;

Expand Down