Skip to content

Ensure we can optimize out does-nothing drops like array::IntoIter<NotNeedsDrop, N> #139422

Open
@scottmcm

Description

@scottmcm

Noticed this looking at #139415.

We already do this for !needs_drop types, but std::array::IntoIter<&mut usize, 1> does have a Drop, and thus needs_drop is true because it's not trivially obvious that the Drop::drop won't actually do anything.

But if you look at https://rust.godbolt.org/z/raWrq6rsY you can see that we're emitting the call to the drop.

This probably is about inlining drop shims in MIR? Might be another way, though, if somehow we could notice in cg_ssa.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-mir-optArea: MIR optimizationsC-optimizationCategory: An issue highlighting optimization opportunities or PRs implementing suchT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions