[all-commits] [llvm/llvm-project] 83729e: [SelectionDAG] Disable FastISel for swiftasync fun...

Felipe de Azevedo Piovezan via All-commits all-commits at lists.llvm.org
Mon Nov 13 08:27:42 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 83729e6716591421e4452bc31741a485861fb229
      https://github.com/llvm/llvm-project/commit/83729e6716591421e4452bc31741a485861fb229
  Author: Felipe de Azevedo Piovezan <fpiovezan at apple.com>
  Date:   2023-11-13 (Mon, 13 Nov 2023)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
    A llvm/test/CodeGen/X86/swift-async-no-fastisel.ll

  Log Message:
  -----------
  [SelectionDAG] Disable FastISel for swiftasync functions (#70741)

Most (x86) swiftasync functions tend to use both SelectionDAGISel and
FastISel lowering:
* FastISel argument lowering can only handle C calling convention.
* FastISel fails mid-BB in a number of ways, including in simple `ret
void` instructions under certain circumstances.

This dance of SelectionDAG (argument) -> FastISel (some instructions) ->
SelectionDAG(remaining instructions) is lossy; in particular, Argument
information lowering is cleared after that first SelectionDAG run.

Since swiftasync functions rely heavily on proper Argument lowering for
debug information, this patch disables the use of FastISel in such
functions.




More information about the All-commits mailing list