clangir icon indicating copy to clipboard operation
clangir copied to clipboard

[CIR][ABI] Apply CC lowering pass by default

Open sitio-couto opened this issue 5 months ago • 4 comments

Before this patch, the CC lowering pass was applied only when explicitly requested by the user. This update changes the default behavior to always apply the CC lowering pass, with an option to disable it using the -fno-clangir-call-conv-lowering flag if necessary.

The primary objective is to make this pass a mandatory step in the compilation pipeline. This ensures that future contributions correctly implement the CC lowering for both existing and new targets, resulting in more consistent and accurate code generation.

From an implementation perspective, several llvm_unreachable statements have been substituted with a new assert_or_abort macro. This macro can be configured to either trigger a non-blocking assertion or a blocking unreachable statement. This facilitates a test-by-testa incremental development as it does not required you to know which code path a test will trigger an just cause a crash if it does.

A few notable changes:

  • Support multi-block function in CC lowering
  • Ignore pointer-related CC lowering
  • Ignore no-proto functions CC lowering
  • Handle missing type evaluation kinds
  • Fix CC lowering for function declarations
  • Unblock indirect function calls
  • Disable CC lowering pass on several tests

sitio-couto avatar Sep 14 '24 17:09 sitio-couto