<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106345>106345</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[llvm] `Converting bits to bytes lost precision` assertion in `TargetLowering::getVectorSubVecPointer()`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alexrp
</td>
</tr>
</table>
<pre>
```llvm
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "arm-unknown-linux-gnueabi"
define fastcc i16 @testing.expectEqualInner__anon_27636(i32 %0) {
Entry:
%1 = extractelement <2 x i9> zeroinitializer, i32 %0
%2 = call fastcc i1 null(i9 %1)
ret i16 0
}
```
```console
❯ llc --version | head -n2
LLVM (http://llvm.org/):
LLVM version 18.1.8
❯ llc reduced.ll
llc: /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:9834: llvm::SDValue llvm::TargetLowering::getVectorSubVecPointer(llvm::SelectionDAG&, llvm::SDValue, llvm::EVT, llvm::EVT, llvm::SDValue) const: Assertion `EltSize * 8 == EltVT.getFixedSizeInBits() && "Converting bits to bytes lost precision"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'ARM Instruction Selection' on function '@testing.expectEqualInner__anon_27636'
#0 0x000079126b32bb22 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project-18/llvm/lib/Support/Unix/Signals.inc:727:3
#1 0x000079126b32948f llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project-18/llvm/lib/Support/Signals.cpp:105:20
#2 0x000079126b329826 SignalHandler(int) /home/alexrp/Source/llvm-project-18/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x0000791269e42990 (/lib/x86_64-linux-gnu/libc.so.6+0x42990)
#4 0x0000791269e99a1b __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000791269e99a1b __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x0000791269e99a1b pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x0000791269e428e6 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x0000791269e268b7 abort ./stdlib/abort.c:81:7
#9 0x0000791269e267db _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000791269e39206 (/lib/x86_64-linux-gnu/libc.so.6+0x39206)
#11 0x000079126bf01eba llvm::TargetLowering::getVectorSubVecPointer(llvm::SelectionDAG&, llvm::SDValue, llvm::EVT, llvm::EVT, llvm::SDValue) const /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:9834:3
#12 0x000079126bf02802 llvm::TargetLowering::getVectorElementPointer(llvm::SelectionDAG&, llvm::SDValue, llvm::EVT, llvm::SDValue) const /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:9820:1
#13 0x000079126bd8f445 llvm::DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT(llvm::SDNode*) /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:3400:12
#14 0x000079126bd95c74 llvm::DAGTypeLegalizer::SplitVectorOperand(llvm::SDNode*, unsigned int) /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:2977:67
#15 0x000079126bd5e6a9 llvm::DAGTypeLegalizer::run() /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:346:17
#16 0x000079126bd5f4f4 llvm::SelectionDAG::LegalizeTypes() /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:1058:10
#17 0x000079126bec0f15 llvm::TimeRegion::~TimeRegion() /home/alexrp/Source/llvm-project-18/llvm/include/llvm/Support/Timer.h:155:9
#18 0x000079126bec0f15 llvm::NamedRegionTimer::~NamedRegionTimer() /home/alexrp/Source/llvm-project-18/llvm/include/llvm/Support/Timer.h:163:8
#19 0x000079126bec0f15 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:845:3
#20 0x000079126bec5c58 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1756:33
#21 0x000079126bec7ae2 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:517:22
#22 0x000079126e55a438 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/alexrp/Source/llvm-project-18/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:74:3
#23 0x000079126b853047 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) /home/alexrp/Source/llvm-project-18/llvm/lib/CodeGen/MachineFunctionPass.cpp:93:33
#24 0x000079126b4e727d llvm::FPPassManager::runOnFunction(llvm::Function&) /home/alexrp/Source/llvm-project-18/llvm/lib/IR/LegacyPassManager.cpp:1453:7
#25 0x000079126b4e74a1 llvm::ilist_node_base<true>::getNext() const /home/alexrp/Source/llvm-project-18/llvm/include/llvm/ADT/ilist_node_base.h:43:45
#26 0x000079126b4e74a1 llvm::ilist_node_impl<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false>>::getNext() /home/alexrp/Source/llvm-project-18/llvm/include/llvm/ADT/ilist_node.h:94:66
#27 0x000079126b4e74a1 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false>, false, false>::operator++() /home/alexrp/Source/llvm-project-18/llvm/include/llvm/ADT/ilist_iterator.h:157:25
#28 0x000079126b4e74a1 llvm::FPPassManager::runOnModule(llvm::Module&) /home/alexrp/Source/llvm-project-18/llvm/lib/IR/LegacyPassManager.cpp:1488:22
#29 0x000079126b4e7d1e runOnModule /home/alexrp/Source/llvm-project-18/llvm/lib/IR/LegacyPassManager.cpp:1565:7
#30 0x000079126b4e7d1e llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/alexrp/Source/llvm-project-18/llvm/lib/IR/LegacyPassManager.cpp:541:55
#31 0x00006260a35809a7 compileModule(char**, llvm::LLVMContext&) /home/alexrp/Source/llvm-project-18/llvm/tools/llc/llc.cpp:745:34
#32 0x00006260a3574ee7 main /home/alexrp/Source/llvm-project-18/llvm/tools/llc/llc.cpp:412:35
#33 0x0000791269e28150 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#34 0x0000791269e28209 call_init ./csu/../csu/libc-start.c:128:20
#35 0x0000791269e28209 __libc_start_main ./csu/../csu/libc-start.c:347:5
#36 0x00006260a3575c35 _start (/opt/llvm/bin/llc+0x12c35)
```
Note that we have seen this on multiple targets, not just Arm: https://github.com/ziglang/zig/issues/16177
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWVtv2zwS_TXMC2FDou4PeVB8-bZA0gZJNtg3g5LGNr_SpJakUqcP-9sXpGRLctI0TZsstghceWQenjMzHN6o1mwjAM5RdIGi-RltzFaqc8phr-qzQlaP5yj22j_OH3bImyMvN1RtwOCKGsrpo2wMRsEcI0JgskNBDpMaBXlA3MdkydIJi0MU5HE4efBJ6p5QkPsknVAU5F77OxGQyW0cIkJGnRjFag6HDqjaTRrxVchvYsKZaPaTjWiAFuzYrP2sYM0E4DXVpiwx82OMQs-ANkxsprCvoTSLfzeUfxIC1GpFhRQrksRBjEjKAoIRiTxEMoySixZwIYx6REEHj-0PfEcK9kbR0gCHHQjriBnBe8wyFCzwd1CSCWYY5ew7KERm-Aje4xCHU1LOe75YNJxbLpnrCZHs0ECBcXo6BJTMu4dDmIZuOBpLKbTk0FkXBGVzlC8x5yWeTB5AaSYFRskMb4FWeCI6Z15e3l9hRNKtMTakiCwRWdo8mEq1cd-ygU_crw9gfjr1p-lzHSqomhKqKeftW85LFOQYkeVW7gCRZZt9iCxvZaNK6Lqc1Er-DaWZ-Glnsf-xApHlTFbwFwjbAjiUhkkxz_9CZHnncuhSfgNlA1_WVkWWBjb9sIMIchTkt_N7yhsYWMYNW9sGzD2URqrbpriH8loyYWxQ0wHQqPvYBvxJL2Pj4v7uJ4ZjswzbKBpLPdcalHExi70FN7fsO2BEcpzaXLLptODm_m66AbNke6js-0_ighmNSOry2pKL7YiaSfFgscQGF8xobCQuHg1ozKU2uFZQMhtPO75IgteUcaimbeCuLxf57QLrptgxgykumg1WUEtlLIrNGX1Mmg0z26aYlnI3CN4gqogsmdYNaESWmIoKM1HypgJstoBLRfUWF7T8ascadN3fGlp-xVWzq4856E2x-3et5EbRHaZq09hhqdt4P809v2tw0whhXVBTrTEiybIRLo742hquqKAbG-oES4F3smpsRSLJAI0kHSvyA8T85gp_EtqopgU-pkqHuj70iEjy6lqVdEMPkcDD3t7zPC_JfBIXASkKQgZZpB91-3CtmDDOdXfWl6P0VfTbSmqjgO667GXCtOny5rF529Q2IxBZ_lOwvTWwjaBcT5mwwz4hiS3_vQ7_REcWpuvndNw0okX6BxUVB9Vn9h-geuDYFgzfi1CQE68nSU5JpiTGIzq2dr-370I_sOx6WsGQVgYhyTIPO790gPs0XsVhP3O2L8qpltMYkQtv75r0sw0iQTjGzDLqF3i1qs1WAa1WXxnnK7ar2-mPugyeIrIUteGILIc_mzrOtvQmcY8fvQbfFlpB-YvISepC1SPHzyEPm70Il2YncMmpc1OI8Ua7iDik9hGR5dR9e9QV1Lac1VK74CnKNDhsl_MDH6RjaBKnRYJpYQupgzJVGz5natn5VnGPkJ0iJFWBV4KvuKTVqpI7ytq4MOHkWvNOb0rawvl-Yil1Ybej0BsDBhnx4l9LJdfkmEoWczy0154PBf3_mHM_fHES9F4jJ14jqUde67VFOyzfyW3_Sy8Rry991kuj0ldU6ToMowHVef7X3WMNl7DpluKtgJoz66kv9Wrxr7ubfHa3ul_M7r7crBaXd2NvzT_LChDJf7Oi_1DmgVkbN8v1MPsEoee0kl5sOBabRWUSvlqskepLDYqK6kcKZ7gRbltY_YH5_w2KSeaqUZz0iqOx4ghimv1UsWrE7y8Kfsp_HKvYhmpAPD4hvg7Xw1CNMJ1lBPvB9H0vGk6ilv9o1iug9Nb-cFzdsR3cwMYuY933_wwMv8G9W_z3hn4lZDtQ062lGUXjOSt9metnuoOq5eZAOsZPzO_OO7bLtrTnnb3Mexi4T7fAW2sX2FxUix0zLqbvliunDLp0ScNoNFUR70RIVEbpT4W01pzzC6pZecFl-VWPKtNxL9Zuf-1c9aEy_SSyozoYCPVPhCYUyE-FqkZ8EVe03DIBB00joU_edUrTaU2VmXofrDvybRUm_bxDRksRiCIaBqnlZ7ekjzvZaCzoDnTt9pVZKyq_ubLVWf4ZV7xZfLuMQGSZ31y1n5bNgVmnOBkvvch4UZFGgRcm-Ickr6nWA3nP6nr_2D5D6rBoCk6yeLyMCCEhSTWQt7y2jQ9nH78q7M1SPt10s1P5OOj_MBbDKOh3PlZEdCoipP5ABONMm5WQFawKqgEFM6MaQMHiuFL-DHvT1c7fWMU-qfz5_M6ax927-h9aBWHUS4hfLcFutFEwO31XgaGsG1rud7K2sdCjn_YRmmHnAzLDa8q1e3iQrOoN1jvPOuh9XOO8krkbgrj3SvIarzADihqpPsYpw5e9pyyOrDse5ML9vZO3DnK79Y-rz4NESl922Y8G9JU70BzX3870zoM5TU9mmOxUQeUDHpB8Py5RHI0Ky8mBakel9xB3QN2Zag_3yY3QfvfxwS6NQt9-9jlxPE-NSezRIEq9jCa4lLuacTgGvtxS5bZ--XiHf3l5fzWTwrgK8HbiRkqu3dey_TzOt24BGfZsyZhtEgIk2B1e_dGOQ99dTg7cdHJ0SlI_8vBqxVlRrrShyqxKyvnqeI5W6ubpSV93lvhcIzdiT9YXp2erJCVe5i4CV0wwc9pP-2jBJw68Pblz96mk37GdHqi2oCMlz4l4FjwIbYUZeCk-CU9UBhFuUbvDQVmb3v0FEwfnX3h7n5RB1B8IPndf-VkawGZLDf4GeEsfAGsAgc2WaXfz0nDjboPbu2Ftk1VIg_9utMG5skn70rXTd7bhVGzap-GFkx_7SXJWnQdVFmT0DM79hIRp4KeEnG3Po3UKfuBn8TqBCIowAJ8WZZSViQ9JUKzP2DnxSOilJPWSKPHItKziiAQVDSHxAqA-Cj3YUcanh6vTM9f1ue_FQRidcVoA1-4KnhAB37B7iwhB0fxMnbvsLpqNRqFnZwHdwxhmuLu7dw6P5hjF3msv9GIP0-M1InM3ib90AmsjGXtnjeLnb7_q6zzwcE7-GwAA__8GWOFA">