Skip to content

Tracking issue for FastISel #26600

Closed
Closed
@pcwalton

Description

@pcwalton

We are currently falling off FastISel to the optimized SelectionDAG instruction selector in pretty much every function, hurting our codegen time in debug builds. You can verify this by running llc -O0 -fast-isel -fast-isel-abort. We have the following issues:

  • FastISel does not support the invoke instruction. Proposed solution: Add this support to LLVM.
  • FastISel does not support the switch instruction. Proposed solution: Add this support to LLVM.
  • FastISel does not support comparisons on i1. Proposed solution: Add this support to LLVM.
  • FastISel does not support the llvm.assume intrinsic. Proposed solution: Ignore that intrinsic in LLVM.
  • FastISel does not allow first-class aggregates to be used, but we use first-class aggregates when loading and storing slices (e.g. store { i8*, i32 } %1, %2). Proposed solution: Stop doing this in trans.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-codegenArea: Code generationI-compiletimeIssue: Problems and improvements with respect to compile times.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions