<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58145>58145</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            __attribute__((preserve_all)) crashes with "Unsupported calling convention" on ARMv8
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mkeeter
      </td>
    </tr>
</table>

<pre>
    Compiling this trivial program using `Homebrew clang version 15.0.0`, I see a crash:
```c
__attribute__((preserve_all)) float bar(float a);

float run(float foo) {
    return bar(foo);
}
```

with the error
```
fatal error: error in backend: Unsupported calling convention.
```

[Godbolt crashes as well](https://godbolt.org/z/53PKfvaoT), so it's hopefully easy to reproduce!

## Full backtrace
<details>

```
Stack dump:
0.      Program arguments: /opt/homebrew/Cellar/llvm/15.0.0/bin/clang -c lol.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'lol.c'.
4.      Running pass 'IRTranslator' on function '@run'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  libLLVM.dylib      0x0000000115b7c6fc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  libLLVM.dylib      0x0000000115b7ba58 llvm::sys::CleanupOnSignal(unsigned long) + 252
2  libLLVM.dylib      0x0000000118f08ff0 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) + 96
3  libLLVM.dylib      0x0000000118f09050 llvm::CrashRecoveryContext::HandleExit(int) + 20
4  libLLVM.dylib      0x0000000118f1c2f0 llvm::sys::Process::Exit(int, bool) + 48
5  clang-15           0x0000000104e6e0d8 LLVMErrorHandler(void*, char const*, bool) + 200
6  libLLVM.dylib      0x0000000115ab1acc llvm::report_fatal_error(llvm::Twine const&, bool) + 268
7  libLLVM.dylib      0x0000000118f0b968 llvm::report_fatal_error(llvm::StringRef, bool) + 0
8  libLLVM.dylib      0x000000011779be48 llvm::AArch64CallLowering::lowerCall(llvm::MachineIRBuilder&, llvm::CallLowering::CallLoweringInfo&) const + 3056
9  libLLVM.dylib      0x000000011656a598 llvm::CallLowering::lowerCall(llvm::MachineIRBuilder&, llvm::CallBase const&, llvm::ArrayRef<llvm::Register>, llvm::ArrayRef<llvm::ArrayRef<llvm::Register>>, llvm::Register, std::__1::function<unsigned int ()>) const + 1716
10 libLLVM.dylib      0x0000000116596628 llvm::IRTranslator::translateCallBase(llvm::CallBase const&, llvm::MachineIRBuilder&) + 1096
11 libLLVM.dylib      0x000000011658aa3c llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&) + 3188
12 libLLVM.dylib      0x0000000115fa19ec llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 556
13 libLLVM.dylib      0x0000000115d09588 llvm::FPPassManager::runOnModule(llvm::Module&) + 2796
14 libLLVM.dylib      0x0000000115d30a7c llvm::legacy::PassManagerImpl::run(llvm::Module&) + 1028
15 libclang-cpp.dylib 0x000000010ab1d3a8 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>) + 3332
16 libclang-cpp.dylib 0x000000010ae579dc clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 1600
17 libclang-cpp.dylib 0x00000001099e7058 clang::ParseAST(clang::Sema&, bool, bool) + 768
18 libclang-cpp.dylib 0x000000010b4b6744 clang::FrontendAction::Execute() + 96
19 libclang-cpp.dylib 0x000000010b43f8ac clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 592
20 libclang-cpp.dylib 0x000000010b4fde18 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 512
21 clang-15           0x0000000104e6d648 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1776
22 clang-15           0x0000000104e6c024 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 788
23 libclang-cpp.dylib 0x000000010b0f26ac void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1>(long) + 28
```

</details>

## Preprocessed source
<details>

```c
# 1 "<built-in>"
# 1 "lol.c"
__attribute__((preserve_all)) float bar(float a);

float run(float foo) {
    return bar(foo);
}
```

</details>

## Run script
<details>

```
# Crash reproducer for Homebrew clang version 15.0.0
# Driver args: "-c" "lol.c"
# Original command:  "/opt/homebrew/Cellar/llvm/15.0.0/bin/clang-15" "-cc1" "-triple" "arm64-apple-macosx12.0.0" "-Wundef-prefix=TARGET_OS_" "-Werror=undef-prefix" "-Wdeprecated-objc-isa-usage" "-Werror=deprecated-objc-isa-usage" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "lol.c" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=non-leaf" "-ffp-contract=on" "-fno-rounding-math" "-funwind-tables=2" "-fcompatibility-qualified-id-block-type-checking" "-fvisibility-inlines-hidden-static-local-var" "-target-cpu" "apple-m1" "-target-feature" "+v8.5a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes" "-target-abi" "darwinpcs" "-fallow-half-arguments-and-returns" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=lldb" "-target-linker-version" "819.6" "-fcoverage-compilation-dir=/Users/mkeeter" "-resource-dir" "/opt/homebrew/Cellar/llvm/15.0.0/lib/clang/15.0.0" "-isysroot" "/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk" "-internal-isystem" "/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/usr/local/include" "-internal-isystem" "/opt/homebrew/Cellar/llvm/15.0.0/lib/clang/15.0.0/include" "-internal-externc-isystem" "/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/usr/include" "-fdebug-compilation-dir=/Users/mkeeter" "-ferror-limit" "19" "-stack-protector" "1" "-fblocks" "-fencode-extended-block-signature" "-fregister-global-dtors-with-atexit" "-fgnuc-version=4.2.1" "-fmax-type-align=16" "-fcolor-diagnostics" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "lol.o" "-x" "c" "lol.c"
 "/opt/homebrew/Cellar/llvm/15.0.0/bin/clang-15" "-cc1" "-triple" "arm64-apple-macosx12.0.0" "-Wundef-prefix=TARGET_OS_" "-Werror=undef-prefix" "-Wdeprecated-objc-isa-usage" "-Werror=deprecated-objc-isa-usage" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "lol.c" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=non-leaf" "-ffp-contract=on" "-fno-rounding-math" "-funwind-tables=2" "-fcompatibility-qualified-id-block-type-checking" "-fvisibility-inlines-hidden-static-local-var" "-target-cpu" "apple-m1" "-target-feature" "+v8.5a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes" "-target-abi" "darwinpcs" "-fallow-half-arguments-and-returns" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=lldb" "-target-linker-version" "819.6" "-fcoverage-compilation-dir=/Users/mkeeter" "-fdebug-compilation-dir=/Users/mkeeter" "-ferror-limit" "19" "-stack-protector" "1" "-fblocks" "-fencode-extended-block-signature" "-fregister-global-dtors-with-atexit" "-fgnuc-version=4.2.1" "-fmax-type-align=16" "-fcolor-diagnostics" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c" "lol-de1abc.c"
```

</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltT4zgW_jXhReWUL3FiP_AQEtJNDRQU0DO7-5KSZTnRtGx5JDmQ_vV7JF_ihDRmdmardqug6MbROTp3nfNZkIh0f7kQeck4KzZIb5lCWrIdwxyVUmwkzlGlDGk0db-KnCaSviDCMazsqFRMFMgLx-7YBfrIX6AbpChFGBGJ1XYUzEfucuTODdF-k_rzeo01qEkqTdfrkR_BdymponJH15jzkR_DN8q4wBolWAK5fsaGElw1Qu3_NUFWRceUCWF2j2YNH4IvSXUli1aWZTjImS1PrOzLf2F6C3GhiEop5FnGDGsIV00P5vUDYkYb-U6L1Kx9K1RVlkJqmiICHpqIElHsaKEhhON39I_Cqy8iTQTXdUypQlihFwpRCpfgzFbrUplA-yv43tSsYyE38OkH_AuDh1-yHRbPNqgLpARieuTPFNqKkmYV53tEsdojLSBKkPO0InTke0c2-AF8oxUwW6e0xMBTk4JFSjVmHGy4Ptpz7MyThn0orfKyKwoX3I4fmiLDclPlEA3jCgKzRQlGrrZNxcHjAjw22VtxvsvhR1N1_iphkPpVXZIOQVzwcVNlnlEABlKRgXGoxBIqDEGFQFKQyFDGeOOFbzgXIqVoQwsqsUlKTQkM5bEqCpOxEisFxs1WVUEMC3owC3e4wBsKps0QLOUQQE4NV22JP2uyOzkn6ebxWeJCcaxFKyBrhcPn0cS1lT07DSIyZSkqjdQ-h4SjAufUCIwoFJqkaC8qtMU7iky0nJqJ_aC2LIEm0cP8-SuCMlVU19Vd7JgUhUkB2mFpjvvt7a9366d_3l3d39786_pxbbbAsimUUjDg03UpxYeMIsRZYvaN0z08Ifvlvrr1l-eFyYxMM2KtMruCudqr-uFBgkjr4LOtLj86MEn8shZKS4oh81NTxcBrz7h_hcJpk-0PKE9wGJ1TvuAUF1V5XzyxTYGh_0RVoeARTisXxaZV5Yd-Uy9DuqLMjbLMNRnBhSj2uahUnaTSOhc3es2JfqREQC_dL0Sh6au-yUteU7_iIuXU8oAc6_ICnTUsbmIQfMCu2A3dXgzOmdBXf_1qchz1Au43R3oyrMwjfuaez7YgVDUf-ioWKBGCt6omUa0qRPXMcbwQHb4OqtwJnVI3jZCx5tr039p40-13gqUjf25Eky1UNrRdpZuFvi7fbfyaDhYSTjxM-lUMjRN6-9oOgnU9CPr1-_zCCtoqnr5RPG28nH0ge0k8jT6u-AmGbLF5pNmpzsbVaEjjbBYndNLXOJ9Lsp1OFjDEbsULNfJrAjefFnZ69yy4w2QLzt88XlWMpyYh1v9e_b0R1F-5KTJht8R1-Kzxgdue-XjI_mk4xWEcvavvLxh-hdVxXntxkhLvTeSDxWHxkW6Y0iAMZuUw96CIUykdzcx5ndaL67VXP7SDBcR1TcS0cYu_YiusH2Vv5rWd1R2Mcjyd-v0oH801u6Kbz7SN21G0B4J5Nhl1JXtu2_w8b9DMCOOAvGsmjNv7olHXjvlzdXGgdZYEXtQcZM8f6iAZ9mJK3nrYijXAomfQWUvOmBB2wzAYsiB14zDqp2z1YJS2YKYXDAtojmPQLHV6_VmXhMmg4sDFs77rnG4w2Tdz4WDCYQ7W4P4d9Z7rt5EPjfp6VpCybGzoDQpo3WmAo3qcNOMnZ_qqhur3lS4rM4t65CXDmwLQByPquthAjprq7LF8pRiK8oliaI33pcmJOirkHqsBmV9oMcD1DHCY6gGmW3g6x_KT9v82fvMTgU0Q5k1VneshVcH-qOi61PKoKRmAVr5IBq9zLUw7tzulGa64XqeUU00HJDT9rTlbQdBAL286lGEazuKUnHEM0I2ClwzZhzft-QePvxXsJPXzp-cWEfWKbdoCBW82YEoc05kbHhXbg3kJAbnHip5ojo-QwfG0nrUIwYsGNCaTZDqbTPoaV9K40KW1QVyUwLt33fmPEKQXD2oIsgiT45o29wdwYqEGcQHwtq-jrabo5yb1-lfcAmx30Iwspd7xOa4VHqzZCYLfKn9jrTkHjXqvVe8N4810CriIEG-dY3bcn3pz-xhx1vP6DQrtEGpTYLNZkwzfHzaDuP4Eta4vvGdbNn0ImMNo_ZUSmHB1Rz1jUxf_WTvB_GAo_m7mT6EMjO291tJijLW07lvqAV9YFnP9YS4R1plBIr3EpJLt2sMJnkCeclykpwU7AI_qhoj50eKhD3ag6W1zSrBixDQfCwxtlM4zGsoa4AwzlxU1389kgqumBg246BgNb-_lY96hrnrLyJ-Y3dfG1f6rZ_TeHVGwGPmrn9zD1Hc3D_Zux7xzAepTopIfv8AhnSDkgS0-7EgAhmkHyt7Y6Z_Qm3sP___uqu8DYXysCqSIZKX-c9dfZq990z7csUmwXqL371S7vUt7NswtWXNB5jsmxG_DbZjvJQOcgjmUVXuEkE3cf3itBu2n0eVAv2sfIamlQRH2E5b5dOLgElacHBOhXj2_FlQz_1YVMPwdyHzGXkfB8nn--OX6eX3_tO44mvvT5RFnS0whahROEk0dkfxOHKawUymAiW-2D3JSgHuG1H7OJeX41bG1WK-0S_B_M0FUS0pBXAI-ZpJ2AgkH4OdgpZ2EQkqp0977nuyxV3GQRZYx8wbTEQmWqbPDvKKOvSHqDIO54pg7Srt8ku3O9MZCJwdg2XpQso4FHh1Odx3J7_ZmEqQ69ibPdN1lAULAk6xlyLLSgb5k7nqhNS3NGG0IhXCkgDRBowQj9bYjVMULK1JHG3ehTpedsgwqsQQ7E8aZ3jt_VJibKKQOS50EXPju6H1JHbKl5Ltpv-22HVPtHlZwwN7K2bI0pYUDs1sb18B9DsHr4qktcoaZVbWVWdekd8KQUQxtoo0qdNhdNA7xEBORZIiFKzrEItN8WNG-1GKIKxXaNJMhNkgknM9dNMRX0EOSfy7Lm2Y5H3QRq0EWUg4G8wcZjNQP8mPQ5opzY_cQn8ongyxbHHyAxx_iwfQ0PjhhzUqKJRyjknQcmYERL84W88zpfk_iQGN36ll36Bh1E2_7Myh1oLvwumOxVzhvtktCr3JesCx6Jy2lSbWBl25HV3Y5WHKeJicmwgH8DizNjGqIkRePu8hm9hoZmq1DLMquW1PKTH-BafINxj4Yu8q_U6oPPRDggAUklrEN0Z8YVQBN21HVW65lM7VXUgh9kHvLEonlHp6Wpi-K0hiyatDmLfQYA6GNlU_LX8yPO0zun_4B40yl3zuppmfChLXiNc3_LumrSlkHTVeDn6wgvErpsNa_GqufaoJXX3gg_yU_T7Rmtgr_VOlkdUFzlrM2xV7cEpX5bRIgCaHt609L7_bayXM4ZbQgMEOtywBB2sFkLkr7h9eM_vqW1dlwkUCMUpANB4rprQOw47UzxMk2RUW64xIsJ2N_fNCeA8KwUw9m4caQvf4x4uBVerh5ainL9frLYrH-Ov_1er38bf648teL1c16_nRnBLRc7eAwYKEbIi2YOo8bP_Fhy_mJDz_x4Sc-_MSHn_jwfwUffuKCvwkXnIEAkFkPJ6R_g_SRq7ELeulNp5PYdV3fvUgvgzQOYnyhmeb08mNXfu1fs9k_sAPt7_-JnLFYFGj-eLeLLirJL0_-7g2EVMkYSuQAVew8hSz_Dlk2YFOpypyqVRh5k_BiexlQnwY4jFIaR3Timgc3cgM3Cac0JC65gINBubochVegvaAvyIowgQqXF-zSd6FoXHfiTb1g4o79OCA-JpEfEzJNZu5o4lIY0Xxs7DB_kHchL61JUMsKiByKRR2IWNlfyVOrDuTjSm-FvGzq-sKqvrSm_xtu54xw">