Expand description
A pass that promotes borrows of constant rvalues.
The rvalues considered constant are trees of temps, each with exactly one
initialization, and holding a constant value with no interior mutability.
They are placed into a new MIR constant body in promoted
and the borrow
rvalue is replaced with a Literal::Promoted
using the index into
promoted
of that constant MIR.
This pass assumes that every use is dominated by an initialization and can otherwise silence errors, if move analysis runs after promotion on broken MIR.
Structs§
- Candidate πA βroot candidateβ for promotion, which will become the returned value in a promoted MIR, unless itβs a subset of a larger candidate.
- Collector π
- Promote
Temps πAMirPass
for promotion. - Promoter π
- Unpromotable π
- Validator πChecks whether locals that appear in a promotion context (
Candidate
) are actually promotable.
Enums§
- Temp
State πState of a temporary during collection and promotion.
Functions§
- promote_
candidates π - validate_
candidates π