# 2021-03-02 Triage Log

Quiet week, a couple regressions and several nice improvements.

Triage done by **@simulacrum**.
Revision range: [301ad8a4fa3ea56fb980443b7997c8f9d72dd717..edeee915b1c52f97411e57ef6b1a8bd46548a37a](https://perf.rust-lang.org/?start=301ad8a4fa3ea56fb980443b7997c8f9d72dd717&end=edeee915b1c52f97411e57ef6b1a8bd46548a37a&absolute=false&stat=instructions%3Au)

2 Regressions, 3 Improvements, 0 Mixed

0 of them in rollups

#### Regressions

Use correct param_env in conservative_is_privately_uninhabited [#82159](https://github.com/rust-lang/rust/issues/82159)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a8486b64b0c87dabd045453b6c81500015d122d6&end=1fdadbf13aecd190b277ea2aa1b125d2ed986d55&stat=instructions:u) (up to 1.2% on `incr-unchanged` builds of `regression-31157-opt`)
- Seems like a necessary bugfix.

Detect match statement intended to be tail expression [#81458](https://github.com/rust-lang/rust/issues/81458)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=d95d30486180387a875b14633aea4e4dd8f960da&end=cecdb181ade91c0a5ffab9a148dba68fc7d00ee3&stat=instructions:u) (up to 5.6% on `incr-patched: println` builds of `unicode_normalization-check`)
- Unexpected regresssion, left [nag](https://github.com/rust-lang/rust/pull/81458#issuecomment-789003548).

#### Improvements

Prevent to compute Item attributes twice [#82265](https://github.com/rust-lang/rust/issues/82265)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=89d32eb1ea44b3d739feb3c2a77adbba1e39b8e6&end=b36f77012dcbfbcf7d04e29fb9a10c8ead9b3ab1&stat=instructions:u) (up to -1.2% on `incr-patched: println` builds of `coercions-debug`)
- Only a rustdoc improvement.

Miscellaneous inlining improvements [#82559](https://github.com/rust-lang/rust/issues/82559)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=9c09c1f7cfcf9de0522bcd1cfda32b552195c464&end=3da2dd3eae7b7cbf16960ab993de666470e43991&stat=instructions:u) (up to -2.9% on `full` builds of `tuple-stress-check`)
- Seems to be an across the board improvement.

Remove storage markers if they won't be used during code generation [#78360](https://github.com/rust-lang/rust/issues/78360)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=d2731d8e9338d8fe844e19d3fbb39617753e65f4&end=09db05762b283bed62d4f92729cfee4646519833&stat=instructions:u) (up to -3.3% on `incr-unchanged` builds of `unicode_normalization-debug`)
- Expected improvement, primarily to debug builds.

#### Nags requiring follow up

Detect match statement intended to be tail expression [#81458](https://github.com/rust-lang/rust/issues/81458)
- https://github.com/rust-lang/rust/pull/81458#issuecomment-789003548
