<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/124092>124092</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash when compiling variadic functions for PTX
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TheNewJavaman
</td>
</tr>
</table>
<pre>
I am performing research involving running simpled embedded arm binaries on cuda.
Here is my current minimal workflow:
- Compile a sample aarch64 binary with statically linked musl libc
- Lift aarch64 to LLVM IR using [remill](https://github.com/lifting-bits/remill)
- Retarget LLVM IR to PTX using llc
The crash occurs in the last step with llc. Interestingly, this crash goes away when I dynamically link glibc instead of musl; maybe something in musl isn't correctly lifted by remill or compiled by llc. Either way, it's unexpected for llc to crash the way it did.
Please let me know how I can improve this report. Reproduce it by downloading `libsample.ll` (may be named `libsample.txt` from the GitHub upload) and running: `llc -march=nvptx64 -mcpu=sm_60 -o libsample.ptx libsample.ll`
<details>
<summary>sample.c</summary>
```c
int sample_div_zero(int num, int denom) {
return num / denom;
}
```
</details>
[libsample.ll](https://github.com/user-attachments/files/18518168/libsample.txt)
<details>
<summary>Crash backtrace</summary>
```
$ llc -march=nvptx64 -mcpu=sm_60 -o workspace/libsample.ptx workspace/libsample.ll
LLVM ERROR: Support for variadic functions (unsized array parameter) introduced in PTX ISA version 6.0 and requires target sm_30.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc -march=nvptx64 -mcpu=sm_60 -o workspace/libsample.ptx workspace/libsample.ll
1. Running pass 'Function Pass Manager' on module 'workspace/libsample.ll'.
2. Running pass 'NVPTX DAG->DAG Pattern Instruction Selection' on function '@deregister_tm_clones_3'
#0 0x000072f9944ad12f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x000072f9944aae39 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:106:18
#2 0x000072f9944ad880 SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x000072f992e45250 (/lib/x86_64-linux-gnu/libc.so.6+0x45250)
#4 0x000072f992ea3f1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000072f992ea3f1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000072f992ea3f1c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000072f992e4519e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000072f992e28902 abort ./stdlib/abort.c:81:7
#9 0x000072f994402fd4 llvm::report_fatal_error(llvm::Twine const&, bool) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/ErrorHandling.cpp:125:5
#10 0x000072f994402e0d (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e0d)
#11 0x000072f996f5c4df LowerCall build-llvm/tools/clang/stage2-bins/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp:0:0
#12 0x000072f994ce8bbe llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:0:15
#13 0x000072f994d052e7 getNode build-llvm/tools/clang/stage2-bins/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:159:36
#14 0x000072f994d052e7 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8691:22
#15 0x000072f994cefd64 getNode build-llvm/tools/clang/stage2-bins/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:159:36
#16 0x000072f994cefd64 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*, llvm::TargetLowering::PtrAuthInfo const*) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:8833:20
#17 0x000072f994cdc951 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:0:5
#18 0x000072f994cd2970 getValueID build-llvm/tools/clang/stage2-bins/llvm/include/llvm/IR/Value.h:533:12
#19 0x000072f994cd2970 getOpcode build-llvm/tools/clang/stage2-bins/llvm/include/llvm/IR/Instruction.h:274:39
#20 0x000072f994cd2970 isTerminator build-llvm/tools/clang/stage2-bins/llvm/include/llvm/IR/Instruction.h:277:51
#21 0x000072f994cd2970 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1348:10
#22 0x000072f994d6e4a9 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true, llvm::BasicBlock>, false, true>, bool&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:12
#23 0x000072f994d6d7f3 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1624:8
#24 0x000072f994d6bf9c llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:3
#25 0x000072f994d6a9d2 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:374:20
#26 0x000072f9948a7dc9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/MachineFunctionPass.cpp:94:13
#27 0x000072f994605e12 llvm::FPPassManager::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1440:27
#28 0x000072f99460ba84 llvm::FPPassManager::runOnModule(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1486:13
#29 0x000072f9946065bf runOnModule build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:0:27
#30 0x000072f9946065bf llvm::legacy::PassManagerImpl::run(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:541:44
#31 0x00005e058a468b82 compileModule build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:0:8
#32 0x00005e058a46667f main build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:409:13
#33 0x000072f992e2a3b8 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#34 0x000072f992e2a47b call_init ./csu/../csu/libc-start.c:128:20
#35 0x000072f992e2a47b __libc_start_main ./csu/../csu/libc-start.c:347:5
#36 0x00005e058a462e45 _start (/usr/lib/llvm-19/bin/llc+0x11e45)
Aborted (core dumped)
```
</details>
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWl1v2ziz_jXMzSCGRH1YusiF8-FuDtrdIM1Z7J1BSSObJxSpQ1J2vL_-BSk5lly3DfK2XWzRWjJFDp9nvjgelRnD1xLxiiTXJLm9YJ3dKH31tMHfcfc_bMsaJi8KVe2v7oE10KKulW64XINGg0yXG-Byq8TWD3VSuqvhTSuwAmwKrCqsgOkGCi6Z5mhASSi7is1IsCDB4jfUCNxAs4ey0xqlhYZL3jABO6Wfa6F2JFr0cy_hRjUtFwgMDHN7AHMQ0riXvocdtxswllleMiH2ILh8xgqazggQvCi9kI-8tq8LrYKPH__8BPeP0BkHniTXGhsuBEluCc021rbGIaBLQpdrbjddMStVQ-hS8Npyub4suDWELodVNPebPKJleo32VbpV8PD017CJEGVP6WmDUGpmNqDKstMGuAS7QRDMWDAW256SEOUM7qVFjcbtKfaE3oDdcDOsXis0wHZsD7sNSriHai9ZM9ICrB1_4NJYZBWo2iuFRNfQsH2BYFSDduOwcdnrixtJ6NxCqbTG0no5tcUKij30XEFpKHuL-FGP8o7bDWrYMQ-RW0LnBjqJLy2WbnWttJvo9NFDd3QdcG6h4tXgFg8CmUEQaKFBeJZqBxu1g3somQTetFptseevsVXazuARW62qrkQnqNhDpXZSKFZ5m6aB4EXvMjMhSBoAoVnD9lAgSNZgNZ1iX6ybU2vVeHgfuP2tK6BrnUBCc2CyOng7iRZ-sSjhsnFORaJbuW3tSxrDZVO2HYluTbNKA7hUcNyitS9wgqlnTqKbCi3jwpDorv9uuqZhek-iu2F6SaIbQpfH8WFpGvR_nXNxaYcgWVV8u_obtSI0c6Oya7xppIUKpXPlHMj8mgQLAACNttPSTQJCl8OMyD0l89vxJj02QpdTuMGCJNcTZt-Lo86gvmTWsnLToPSxVHOB7hpmSZiFaeajbWwdH2Xf09aN96-Clc9WsxK_ozR3T2N4myFdbjKtEzpG5ox6_okQJFj4VHD3-PjHo3Oaz13rPNcHxJZpzipeQt3J0nIljXPQThr-t0-fmu2hZZo1aFE7e3Fpe2-vXLy6xHL_eQFb1IYrCeks6F0U_7_jGg0Mucg0qyhwEfbw8W7x-Q5MVzTcAoOiWw-B5OLyWzlPbA-Xy1ar_8PSErrkxnTeXn5XLkvRVegjp5yawO392bLyGaquafvEHszA_3nQaq1ZA0yvu94PosXPtEY4g8fhwGqZcQqfLwftw4Mb-MQkWzt1z92Z1aiqE-hmfVUmnTt-9Eu5v__pLHS7-HBJorvbxQd4YNailnAvjdVdv-dnFOjvhg0PruAEkDioUOOaG4t6ZZtVKZREs4rcs2ABhEYBBC9BEARzWud5HLMqpDV4c0ULEi3M3vQ3D5pL623w5IOCZsdJmu1WyliNrCE0HZKEc7ei46K6HIxvlRLO2KVgcu0iyrI10suCSzPyEF4Quhx8nNDl_0r-4gb4WjJhZlyWJFrMaUSiRRgNFMITCgyj_ByFx072cn5jshKoDaHZj0F5gFe2zjnDIHWf2QCPnmo4ywKYAPlZeopDr6cBRzTGQTFOaOLPs1dpL1m6SuNLwWX3crmWXf-gnBk1Swm9Dl78kj6HOoHxVCCL6rCE1aq1G42sWj1zIVa-pHNhybxPzghdytYKQpfjaTOPNnamTQfhyVuEu8pGMvFNsfPMm2QQm54TO17zTVlZPpY1P1VomCNoxg16IcbbgtDlzH_bmwpbZ8FWGW8rP9OLpXMSLQ7Es6lUmuUBBVa4HOvl2Kq3lh_qUYWO5rA8n3pbQOsqHgVDn61XNbNMrFBrpSeR_LTjEqFU0tghkgulxI8Jkju3m_d4LteHUKEJiRaJP0OjMDjFjkE1eGhn9KtIf4qEOaHLgsuDfodHvHCnpXPZMJ-F3mvRyxmOfhqFk3SR1kkZVzV8VDvUN0yIdxN98mcloUuftQ_X-88ovOwj58D_67FMc0OJWVHgyFq9zMP6fuwV6ZOamu7MXDftMHIva-Vtmvf2fTfRG1XhB3SKfz16bhcfTr5eO-GoR5TDg5UneSiugoTiHNZof1cVvgPUUDYcB87jc9LNbOOBuCiO0gFOfA7OUa1nSPUPhNPrvdyqZ1YIfJ8pbkYbXTPDy2uhyudD_C3-m7h7h5WyNHeZhNJBM8mJc9ZVGv-DhkrPwXmDob4WMG7o2v1aHKe7kbzbP5no8JgDj9fvGO3mOxH8YPWisxvnBf-YqbPIlQb0kIfmU91WZZ6Eb9HtlhtunSK_0KwrUUea_aXsgtGZkp0wo_k8cE7sjXt_-yP8-P6R0KWX59028aoND1GUfwXAH235g-LI7z_6SeBR0Lkrp6Lh0KPBORTcPKFuuGRWvacGfSsQV90k4QAkPAfkrZ428bLxj6B_yNHCKH6tLh256XFepRiz_CvkXGEwHj1mkglJLrixK25ROyOtdivfNYxuTmf03Yx-RKoKV6r1_YDJ1JHGXJaqmTA4udkqXvkOoe4T37lER6K7yRo_tx_7l8Lu0_rP9x1n8nFBNGQIelIQpdW8jt7oNQt_hA0UzcRzXpsSvyw2RvzClLr0kw0MT2qstKjz8rsMdSf_kJ9YueESD2QmDL949stNGA38khN-LK_oN_h9xDUr9_8KlpE_Rg51Ap3WYBmbV-U4wZ1gfWDGjFiepffDeZ3BMHDJ40PXyFGZljxpkGA4ttnywa089PJ-DQl_fvbOMdr8EFJxHPS9gh5_doK_YFn8BvyffD9y6mHD0M_EnqVj3ecn2NOkqGEE7-egGKvvpO85QDjqRIxCdCTpvmmP2ekXKzGJw75L1hM4FFIJBknG4jQrMnp4rfZuLR4mCVH2nyPVDcn8tZ952DhN5zU0jMsfuF8c5CN_OW1dUhYVGaxWghflylim7apkQqw8iJnb03Rf9t2Gpt65Rb5Q7QvmYcf4dMd4XoCfzyW3p5v0t07ypZfs23IhzUap87Sh2UuccDgH_6zkKJ4ff-G8tjQP9qAYJ9CLfEPzzGv-OngJQ4yTvkm2KJS26DtvpdLo37ngoYH2jdd4F9VVVOVRzi7wKpxH85TGeR5dbK5YUkdFWLMwoEmIdYBphCWmaRJijElGL_gVDWgShDQK8iiNolmBRRjmdUyzisZ1EpI4wIZxMXPwZ0qvL_y7o6uQxkFOLwQrUBj_nxEolbgD_5RQSpLbC33lORfd2pA4cGWnOYqx3Aq86t_4-VfgfQRxuT73cq1WGh6e_rrotLh6_9uuAfT2iv4nAAD__wgWh10">