Skip to content

Optimize const pattern guards for StructuralEq types #138664

Open
@TimNN

Description

@TimNN

With inline_const_pat being removed in #138492, it might be nice to optimize codegen of pat if pat == const { .. }.

Right now

match a {
  1 => 42,
  b if b == 7 => 100,
  _ => 99,
}

Produces a SwitchInt and then a separate equality check.

Changing the second pattern to 7 => 100 produces a single SwitchInt.

I assume that the optimizer can recover this (at least for simpler cases), but it might be nice for the compiler to generate the simplified MIR directly (especially with inline_const_pat gone).

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-patternsRelating to patterns and pattern matchingC-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