Account for things that optimize out in inlining costs This updates the MIR inlining `CostChecker` to have both bonuses and penalties, rather than just penalties. That lets us add bonuses for some things where we want to encourage inlining without risking wrapping into a gigantic cost. For example, `switchInt(const …)` we give an inlining bonus because codegen will actually eliminate the branch (and associated dead blocks) once it's monomorphized, so measuring both sides of the branch gives an unrealistically-high cost to it. Similarly, an `unreachable` terminator gets a small bonus, because whatever branch leads there doesn't actually exist post-codegen. |
||
|---|---|---|
| .. | ||
| iter | ||
| sort | ||
| ascii.rs | ||
| cmp.rs | ||
| index.rs | ||
| iter.rs | ||
| memchr.rs | ||
| mod.rs | ||
| raw.rs | ||
| rotate.rs | ||
| specialize.rs | ||