<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/136673>136673</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64] Backend error "Unsupported variadic calling convention" with variadic function with SVE argument
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
crash-on-valid,
generated by fuzzer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ostannard
</td>
</tr>
</table>
<pre>
This code causes a fatal error in the AArch64 backend:
```c
#include <arm_sve.h>
void foo(svint32_t a, ...);
void bar(svint32_t a) { foo(a); }
```
```
$ /work/llvm/build/bin/clang --target=aarch64-none-elf -march=armv8-a+sve -c test.c -O1
fatal error: error in backend: Unsupported variadic calling convention
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /work/llvm/build/bin/clang --target=aarch64-none-elf -march=armv8-a+sve -c test.c -O1
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.c'.
4. Running pass 'AArch64 Instruction Selection' on function '@bar'
#0 0x000055c3a5c7d727 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/build/bin/clang+0x86bb727)
#1 0x000055c3a5c7b31e llvm::sys::RunSignalHandlers() (/work/llvm/build/bin/clang+0x86b931e)
#2 0x000055c3a5be3e38 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
#3 0x000055c3a5be3dcf llvm::CrashRecoveryContext::HandleExit(int) (/work/llvm/build/bin/clang+0x8621dcf)
#4 0x000055c3a5c77b67 llvm::sys::Process::Exit(int, bool) (/work/llvm/build/bin/clang+0x86b5b67)
#5 0x000055c3a31961f5 (/work/llvm/build/bin/clang+0x5bd41f5)
#6 0x000055c3a5bebce0 llvm::report_fatal_error(llvm::Twine const&, bool) (/work/llvm/build/bin/clang+0x8629ce0)
#7 0x000055c3a5bebbd6 (/work/llvm/build/bin/clang+0x8629bd6)
#8 0x000055c3a322ff9b (/work/llvm/build/bin/clang+0x5c6df9b)
#9 0x000055c3a3230d65 llvm::AArch64TargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const AArch64ISelLowering.cpp:0:0
#10 0x000055c3a6ff3be6 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/work/llvm/build/bin/clang+0x9a31be6)
#11 0x000055c3a70156c2 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/work/llvm/build/bin/clang+0x9a536c2)
#12 0x000055c3a6ffc195 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*, llvm::TargetLowering::PtrAuthInfo const*) (/work/llvm/build/bin/clang+0x9a3a195)
#13 0x000055c3a6fe51ae llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/work/llvm/build/bin/clang+0x9a231ae)
#14 0x000055c3a6fd7a0c llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/work/llvm/build/bin/clang+0x9a15a0c)
#15 0x000055c3a7099d96 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) (/work/llvm/build/bin/clang+0x9ad7d96)
#16 0x000055c3a70993cb llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/work/llvm/build/bin/clang+0x9ad73cb)
#17 0x000055c3a7096381 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/build/bin/clang+0x9ad4381)
#18 0x000055c3a7093ba9 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/build/bin/clang+0x9ad1ba9)
#19 0x000055c3a50bb2d8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/work/llvm/build/bin/clang+0x7af92d8)
#20 0x000055c3a5639f0b llvm::FPPassManager::runOnFunction(llvm::Function&) (/work/llvm/build/bin/clang+0x8077f0b)
#21 0x000055c3a5641d41 llvm::FPPassManager::runOnModule(llvm::Module&) (/work/llvm/build/bin/clang+0x807fd41)
#22 0x000055c3a563a91f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/work/llvm/build/bin/clang+0x807891f)
#23 0x000055c3a640f6d9 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/work/llvm/build/bin/clang+0x8e4d6d9)
#24 0x000055c3a6424090 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/work/llvm/build/bin/clang+0x8e62090)
#25 0x000055c3a7e8c697 clang::ParseAST(clang::Sema&, bool, bool) (/work/llvm/build/bin/clang+0xa8ca697)
#26 0x000055c3a6a27436 clang::FrontendAction::Execute() (/work/llvm/build/bin/clang+0x9465436)
#27 0x000055c3a699320f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/work/llvm/build/bin/clang+0x93d120f)
#28 0x000055c3a6b23537 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/work/llvm/build/bin/clang+0x9561537)
#29 0x000055c3a3195bf3 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/work/llvm/build/bin/clang+0x5bd3bf3)
#30 0x000055c3a3191f61 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#31 0x000055c3a67dc389 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) Job.cpp:0:0
#32 0x000055c3a5be3d6b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/work/llvm/build/bin/clang+0x8621d6b)
#33 0x000055c3a67db8f0 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/work/llvm/build/bin/clang+0x92198f0)
#34 0x000055c3a67987f3 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/work/llvm/build/bin/clang+0x91d67f3)
#35 0x000055c3a6798af7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/work/llvm/build/bin/clang+0x91d6af7)
#36 0x000055c3a67b80b9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/work/llvm/build/bin/clang+0x91f60b9)
#37 0x000055c3a31913af clang_main(int, char**, llvm::ToolContext const&) (/work/llvm/build/bin/clang+0x5bcf3af)
#38 0x000055c3a31a2027 main (/work/llvm/build/bin/clang+0x5be0027)
#39 0x00007f2b67429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#40 0x00007f2b67429e40 call_init ./csu/../csu/libc-start.c:128:20
#41 0x00007f2b67429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#42 0x000055c3a318f825 _start (/work/llvm/build/bin/clang+0x5bcd825)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 21.0.0git (git@github.com:llvm/llvm-project.git 214fb43cb671d89d0e2da6dde348c6ffc360d7f0)
Target: aarch64-unknown-none-elf
Thread model: posix
InstalledDir: /work/llvm/build/bin
Build config: +assertions
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-53bea6.c
clang: note: diagnostic msg: /tmp/test-53bea6.sh
clang: note: diagnostic msg:
********************
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWt1z4ygS_2uUF8ouBPp8yIPixLOzNXtJJd69RxcCZHMjgw-Qk-xff4U-rI84mdizt1VXN-WJZWiaH91007SaGCM2kvNrL7zxwtsrUtmt0tfKWCIl0ewqV-z1erUVBlDFOKCkMtwAAgpiSQm41koDIYHdcpBlmm6jAOSEfueSeTjzYP2JYPOh7gfCQtKyYhx4eEH0bm0OfL718F1DfFCCgUIpDyXmIKTFaG0B8dACzOdzD6UevumocqKnVCnw4pt2OGmogRffDkFMMNWQAuCh5bPS3z20LMvDzkPLvBIlc99CemhJSyI3YDazRG-49fAtIfVaZ1JJPuNlAWY71-J69O6QzIiHbsyBgxkFlhs7p2B273swG4jNw1kvv15m4Hdpqv1eacsZOBAtCBMUUFKWQm4AVfLApRVKejB7-HaXPd0BU-U7YQEBebUBmruhwCqwtXZvnBLQ0kPLjbDbKp9TtevX6L5me63-xan10FIYU3HjoSUgkoFOS06zVBOzrTFaTSh32thrvteKcmM4A0ZVuml2I4kxigri8OtKAkO12Nu5B7MnS-h3wKrdvtkbcA7qfw9abTTZAaI31Y5L61D_bRrxWxAeXnBVePgO7Ik2XANiAZcMqAIUouQezNAcLJwNbLjkmrQ6wO3wx0pKp6A9MQZ4KF5WkjoS8OAafiOSbLj2UAyUBDvFqpI7qgaJh2InnuAdVp1dfZXG6qrh-sRLXj-1LItuOg_FXgBr04g96MSIIYAvEEIYhhSTkMYsRjGohYozD2fm1TQPD1pIW-to1Wg56Yk0eV4rYzUnOw9FTtNC2treUPIZTXnoBr4kUZ7HKHZ22SDzJ8hy7PNTyB4r-SQ2kpS_EMlKrk0969mTp9jn_eRoNHnOMceJ40ikkq87VRkgyY6bfS2KtAGycIbwyKk6cP26UNLyF_t1ty-b3gZdTeOhpBbQAlSy9rAMlMohScEpHnO6dzYB6_8NPDyFx2gxkM0pLkMUdy_CdiDOFRTyGS16QQUTLcV59M7-qf1B82M4_wLkSpUXKCzMo8FuCYc4sJ9GfhGexTHMWeAXYc8xmsg4pxwOVtb40nXts9eNzx7axOpZSO48srGtTVy2TJRSDntQ8RRUzqKzOeYs6jkmI8EhVBRpfp7gaMSKNO85pmOOGLIoHAiu9Vir2jd_U89cC7lpuupfC1KWY1GeoHREXctXWahWxv2gpx0pyz84tUo3NrgY9N3-QcqKu7DCDUsbNXUhytcnfmQ9MT3nlUYOMyoKnPMIfAz2uKyVumxhHcJz1JIS7Oe8VbQDPvKnMfTDiKKhwLpD4zb7cuN4ct10lA7NV3lQ30le8p_XzA0xgt6Uin7vzCM71yxSEuKIon5taKIU6qfhZ9b2nmZc0w0xYwN-u4GOVt1__2Cdix9slQers8puneB-QjqY-GnYSwePpcNDn_DPSOcgjLBvzNE1uGhjIJtz8SHsE97jC8b4WEwg_TS-EbZhFHQ5PD8kkPbwwrHhpClLo3fgOd8xbO33wAimKIWxa2FdpKj0-nmdCxfXLqYUjFsiWoZSMb5WezfRmHSwZre_rG42ZkFKUz-469Cw49QOrV3hYExN27T9b6JuzPEC3bOYpQOnGU11j2n-Sd1ntQtpoZqR_o_x_-V7lMWY5j3OeIIzwon_Q5y6kvfyN0K3QvIO0gjnm75LgAY48XugyQQozkn6AdBvfEPo698J189J2sMdxTIhzHPEEvDujO46N8B6EuRPoItJkSKWHNGh8eUtwmkBh7tz-eAAddfL_x6uBMZxAfvdiMZXtyjwWeB_Atdv9dV3rNK26RJMBQv6jYfQRFYk9YdXpnKw0Qbo-vubruRfhixJ_aJHNj6eA1hELAUNfT0T3wl706SA7iu7r9yRN-heqN1elC5EM5ZIyttoZUTB-Bcu71s3_CaasS7-eOTFuLlbYDbh1kLJjr576NStrow48EdeLKR9sHrk8w9Fax1LUfKnV2P5rnXXxrKmp5Li3xVf7ycjNXle75-1sHzd5RkGgxgvSFW6g6fklv9gIL5r53y7pIWSptpxfUHMlfCARax3HGgc0wQogCn8aMrB7XyliTRlnUP6XYqJtrOnVXehv2Dr8QjBFPYox6ENT2iUxkOUD0Qbnj2txhie-I6MLrWXXW5JQkmUxj2a0WEbERQHOBqiWWq38uPWa1MJnFaWX5DzSYMoDHB_1qPRGRqlKUawAB8Z2hBAZw7J-3gvOI4w8xEcuIrR6RnlCId4pK8WTI_0oCh5C-ytyzj_khFGfogHyksnCZgwLzCg1F_viBh7zkxr8urcDV7QLdH9Pae1y1HbMRQ8G2GYM5wX-IhwnOrEfuoXkQ86iS38Vb2Fk49SCG_hTlyp49Ga5yi2Y1ocuH6bTRgnOaOYUZyk9YIHTLv07VrXMqt7m_1eOzNHQklZ5oR-XxfSwew13Uzcan3hL9RuRySbms5J3RzdaxO-k0kO5XhoHB3qccB6TV9efL_5kbsY2Dnf-o5bi3BE7BrWVpPmLlF3T9iRsnS7WOlBvyPJeseTHXMkzRAPBWu_Jkq6zOqvKj8h_zd5Xhbln0qkPlbyiRS8fB2J72NVXZJrjfqwapz1jWKWJ8XoTPm_U_Z5Hgv5aVL0h984dR3FaRI7j_WOOGuPSd6cO52MR-51MtARjBJJnyPNJnnjC1bssygeesBwumJSxOeu-FeVm_eX-6vKv4lRbujjpOxR73sinMrbVwKflVC7Of4COZGiP8vGqf8ozhOYp-9huh08j47fE-fue_L9G-V05invFxHM-7B2_P7BnaGYtDFSd853yGrTz94mPd85Ic872WmBSR8WTd5h-ARBFAOH50y2HEI02AZdSBMXKI_iAKUshWC9LkXufBzRdu3O3XrhYO5YmcpDy7l7NK-G8b3x0FLubenmPjFovvVwFiYezvyomTKA0yl5AOv3-2shhZ3O0jw61rOa9Zw6XshxRO0JF_inOI4WcQr_Sc44Th3gljEaCz0pEhSChuW52mQJatPV3YbuqyCad_lFG0oD2m7tgoiSM_As7BbwF2GbCpQYuqkrw8HsAKwChnMgBkHwcQpw4NoIJQHy53AON6LGvBHWC-CgGgJnJ6oh5o4a-UGRB5jmUeyzJGWQI0YixjgOEhoVBcURZHF33KzaQoQMdJUIlfwu1bM8ViQ4oq3mhIGdYnWCDuyVES8erFOlpCw5uxX6h8UPMKtT5M62CrFpyG-IMVw3l_-BiKVyl-UMMEE2UhkrKNiZZgjMOtu96FNX0bQFKNlqlS1-Aatf7sDy_tu3-39-_ccXsPz67e4JrO7r5pvfv4DHu4f7x5VXV348nKoeSYzzEu9WkBwJNAd1AMEZILbh95kFo6Xd7d1fbuwsxDkn0Zz-xFiz_bykf17YXb3SFbvGLMUpueLXfhyE2A8DiK621xEqKAyiKPQxTFIeoZRFMClokuc0TRC9EtcIohAGCME0hBDN_Rz5NAyjgvpxwYrCCyDfEVHO3Z6bK725qiuCrn0cRTG-KknOS1MXiiHU1yu1r1Q9hDy08BCqa4VmSs4OpHSXura5LZrhDOSvoKj-_JNr1xfeXunr2vLyamO8AJbCWNMjsMKWdXFaN014C9q8Sls85SH02YophBpncqQ5Vs3UzU9_3B1LkK4qXV5fXkHViuxwjf4TAAD___Df9is">