`region_scope_tree`: Rewrite a `loop` as tail recursion by dianne · Pull Request #150548 · rust-lang/rust

@dianne

@rustbot rustbot added S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

T-compiler

Relevant to the compiler team, which will review and decide on the PR/issue.

labels

Dec 31, 2025

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

labels

Dec 31, 2025

bors added a commit that referenced this pull request

Jan 1, 2026
…uwer

Rollup of 4 pull requests

Successful merges:

 - #149778 (`crate::io::Result` → `io::Result` in most places)
 - #150264 (split up tracking issue for target feature feature gates)
 - #150548 (`region_scope_tree`: Rewrite a `loop` as tail recursion)
 - #150555 (Enable thumb interworking on ARMv7A/R and ARMv8R bare-metal targets)

r? `@ghost`
`@rustbot` modify labels: rollup

rust-timer added a commit that referenced this pull request

Jan 1, 2026
Rollup merge of #150548 - dianne:temp-scope-extension-loop-rewrite, r=BoxyUwU

`region_scope_tree`: Rewrite a `loop` as tail recursion

This addresses #146098 (comment), hopefully making `record_subexpr_extended_temp_scopes` a bit more legible.

I removed a `debug!` in the process, since the function it calls every iteration, [`ScopeTree::record_extended_temp_scope`](https://github.com/rust-lang/rust/blob/2848c2ebe9a8a604cd63455263299d7258bc8252/compiler/rustc_middle/src/middle/region.rs#L264-L271), does the same `debug!`. Keeping the behavior of having an additional `debug!` for the top-level expression would hurt legibility, and having a duplicate `debug!` at each iteration seems excessive. No information is lost from the debug output, so I think it's fine to just have the inner `debug!`s.

r? BoxyUwU or anyone

@dianne dianne deleted the temp-scope-extension-loop-rewrite branch

January 7, 2026 03:38