Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[mir-opt] Improve SimplifyLocals pass so it can remove unused consts #65624

Merged
merged 2 commits into from Oct 21, 2019

Conversation

@wesleywiser
Copy link
Member

wesleywiser commented Oct 20, 2019

The ConstProp can cause many locals to be initialized to a constant
value and then never read from. ConstProp can also evaluate ZSTs into
constant values. Previously, many of these would be removed by other
parts of the MIR optimization pipeline. However, evaluating ZSTs
(especially ()) into constant values defeated those parts of the
optimizer and so in a2e3ed5, I added a
hack to ConstProp that skips evaluating ZSTs to avoid that regression.

This commit changes SimplifyLocals so that it doesn't consider writes
of const values to a local to be a use of that local. In doing so,
SimplifyLocals is able to remove otherwise unused locals left behind
by other optimization passes (ConstProp in particular).

r? @oli-obk

@bors

This comment was marked as resolved.

Copy link
Contributor

bors commented Oct 21, 2019

☔️ The latest upstream changes (presumably #65644) made this pull request unmergeable. Please resolve the merge conflicts.

wesleywiser added 2 commits Oct 12, 2019
The `ConstProp` can cause many locals to be initialized to a constant
value and then never read from. `ConstProp` can also evaluate ZSTs into
constant values. Previously, many of these would be removed by other
parts of the MIR optimization pipeline. However, evaluating ZSTs
(especially `()`) into constant values defeated those parts of the
optimizer and so in a2e3ed5, I added a
hack to `ConstProp` that skips evaluating ZSTs to avoid that regression.

This commit changes `SimplifyLocals` so that it doesn't consider writes
of const values to a local to be a use of that local. In doing so,
`SimplifyLocals` is able to remove otherwise unused locals left behind
by other optimization passes (`ConstProp` in particular).
@wesleywiser wesleywiser force-pushed the wesleywiser:improve_simplify_locals branch from e67bfa2 to 2ec7339 Oct 21, 2019
@oli-obk

This comment has been minimized.

Copy link
Contributor

oli-obk commented Oct 21, 2019

@bors r+

@bors

This comment has been minimized.

Copy link
Contributor

bors commented Oct 21, 2019

📌 Commit 2ec7339 has been approved by oli-obk

JohnTitor added a commit to JohnTitor/rust that referenced this pull request Oct 21, 2019
…, r=oli-obk

[mir-opt] Improve SimplifyLocals pass so it can remove unused consts

The `ConstProp` can cause many locals to be initialized to a constant
value and then never read from. `ConstProp` can also evaluate ZSTs into
constant values. Previously, many of these would be removed by other
parts of the MIR optimization pipeline. However, evaluating ZSTs
(especially `()`) into constant values defeated those parts of the
optimizer and so in a2e3ed5, I added a
hack to `ConstProp` that skips evaluating ZSTs to avoid that regression.

This commit changes `SimplifyLocals` so that it doesn't consider writes
of const values to a local to be a use of that local. In doing so,
`SimplifyLocals` is able to remove otherwise unused locals left behind
by other optimization passes (`ConstProp` in particular).

r? @oli-obk
bors added a commit that referenced this pull request Oct 21, 2019
Rollup of 5 pull requests

Successful merges:

 - #65544 (Added doc on keyword break)
 - #65620 (Correctly note code as Ok not error for E0573)
 - #65624 ([mir-opt] Improve SimplifyLocals pass so it can remove unused consts)
 - #65650 (use unwrap_or in lint code)
 - #65652 (Fix `canonicalize_const_var` leaking inference variables)

Failed merges:

r? @ghost
bors added a commit that referenced this pull request Oct 21, 2019
Rollup of 5 pull requests

Successful merges:

 - #65544 (Added doc on keyword break)
 - #65620 (Correctly note code as Ok not error for E0573)
 - #65624 ([mir-opt] Improve SimplifyLocals pass so it can remove unused consts)
 - #65650 (use unwrap_or in lint code)
 - #65652 (Fix `canonicalize_const_var` leaking inference variables)

Failed merges:

r? @ghost
@bors bors merged commit 2ec7339 into rust-lang:master Oct 21, 2019
4 checks passed
4 checks passed
pr Build #20191021.9 succeeded
Details
pr (Linux mingw-check) Linux mingw-check succeeded
Details
pr (Linux x86_64-gnu-llvm-6.0) Linux x86_64-gnu-llvm-6.0 succeeded
Details
pr (LinuxTools) LinuxTools succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.