Conditional `char` counter not recognized as never-overflowing
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
When conditionally incrementing a usize counter by 1, the optimizer doesn't detect that overflow is impossible, when using the Chars iterator. As an example, I wrote a lines-of-codecontent counter that iterates over chars: Playground
Can repro on 1.90.0-nightly (2025-07-14 a001497644bc229f1abc)
@rustbot label: +I-slow
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked Playground using the reported nightly version and reproduce the conditional usize increment over the Chars iterator. Trace the optimizer behavior responsible for overflow analysis; done means the compiler recognizes this counter as unable to overflow in the demonstrated case, with regression coverage added in the appropriate Rust compiler test area.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100