-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-codegenArea: Code generationArea: Code generationI-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.
Description
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
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-codegenArea: Code generationArea: Code generationI-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.