<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/57251>57251</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
AArch64 infinite recursion at llvm::DAGTypeLegalizer::RemapId(unsigned int&)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DataCorrupted
</td>
</tr>
</table>
<pre>
When compiling the following piece of code, AARch64 will fall into an infinite loop. While x64_64 is fine with it.
```
llc -mtriple=aarch64 <filename>
llc -mtriple=x86_64 <filename>
```
```
; ModuleID = 'aarch64-dag-crashes/id:000001,sig:11,src:016155+013757,time:72939681,execs:21049155,op:libAFLCustomIRMutator.so,pos:0'
source_filename = "M"
define void @f() {
BB:
%A3 = alloca i16, align 2
%A2 = alloca i16, align 2
%A = alloca <4 x i16>, align 8
%L = load <4 x i16>, <4 x i16>* %A, align 8
%B = sub <4 x i16> %L, %L
%B1 = srem <4 x i16> %B, %B
%E = extractelement <4 x i16> %B, i8 0
%I = insertelement <4 x i16> %B1, i16 %E, i16 0
store <4 x i16> %I, <4 x i16>* %A, align 8
%E1 = extractelement <4 x i16> %I, i16 %E
store i16 %E1, i16* %A2, align 2
%E2 = extractelement <4 x i16> %B, i16 %E1
%E3 = extractelement <4 x i16> %I, i16 %E2
store i16 %E3, i16* %A3, align 2
ret void
}
```
The error message is:
```
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: .../llvm-project/build-debug/bin/llc -mtriple=aarch64 id:000001,sig:11,src:016155+013757,time:72939681,execs:21049155,op:libAFLCustomIRMutator.so,pos:0.ll
1. Running pass 'Function Pass Manager' on module 'id:000001,sig:11,src:016155+013757,time:72939681,execs:21049155,op:libAFLCustomIRMutator.so,pos:0.ll'.
2. Running pass 'AArch64 Instruction Selection' on function '@f'
#0 0x00000000030fa65a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) .../llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
#1 0x00000000030fa80b PrintStackTraceSignalHandler(void*) .../llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
#2 0x00000000030f8e56 llvm::sys::RunSignalHandlers() .../llvm-project/llvm/lib/Support/Signals.cpp:103:5
#3 0x00000000030faf35 SignalHandler(int) .../llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007f6a59964980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#5 0x0000000002f1f5f8 llvm::SmallDenseMap<unsigned int, unsigned int, 8u, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>::getBuckets() const .../llvm-project/llvm/include/llvm/ADT/DenseMap.h:1160:0
#6 0x0000000002f1f595 llvm::DenseMapBase<llvm::SmallDenseMap<unsigned int, unsigned int, 8u, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>, unsigned int, unsigned int, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>::getBuckets() const .../llvm-project/llvm/include/llvm/ADT/DenseMap.h:517:5
#7 0x0000000002f1f391 bool llvm::DenseMapBase<llvm::SmallDenseMap<unsigned int, unsigned int, 8u, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>, unsigned int, unsigned int, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>::LookupBucketFor<unsigned int>(unsigned int const&, llvm::detail::DenseMapPair<unsigned int, unsigned int> const*&) const .../llvm-project/llvm/include/llvm/ADT/DenseMap.h:610:33
#8 0x0000000002f1f2d5 bool llvm::DenseMapBase<llvm::SmallDenseMap<unsigned int, unsigned int, 8u, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>, unsigned int, unsigned int, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>::LookupBucketFor<unsigned int>(unsigned int const&, llvm::detail::DenseMapPair<unsigned int, unsigned int>*&) .../llvm-project/llvm/include/llvm/ADT/DenseMap.h:661:10
#9 0x0000000002f1ad9d llvm::DenseMapBase<llvm::SmallDenseMap<unsigned int, unsigned int, 8u, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>, unsigned int, unsigned int, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, unsigned int>>::find(unsigned int const&) .../llvm-project/llvm/include/llvm/ADT/DenseMap.h:152:9
#10 0x0000000002f1756c llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:585:27
#11 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
#12 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
#13 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
......
#253 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
#254 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
#255 0x0000000002f17617 llvm::DAGTypeLegalizer::RemapId(unsigned int&) .../llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:591:10
Segmentation fault
```
This has been observed on LLVM-14 and latest commit `cfd2c5c`. I'll keep working on it to provide more info.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWVtvozgU_jXkxQoCE24PeSBJuxuplappd-excsAk3hqMjGkz--v32EBCaNqdaip1ujtRQrA5l-9cfHxhI7Jv8687WqJUFBXjrNwitaMoF5yLJ92qGE0pEjkQZNTCS5QkX9JdMENPjHOUE7iwUglESvjPWckURVyIykZfd4xTtA9m90DNagQPKXCpHWLKtpyV5STdNXC6r2lynqJpoSSrOLW8FSHS6LO8ZQ4CS1JA78VZ0n0U3L9AOdJxvtNboGuRNZyuVyAEfjjstE8zsp2mktQ7Wlv4kmWWlzj644JLaraFpmtuZaqfuIHr-xZeOK4X-iH0K6axJCGOvTiINCXd07SGLuw6s9hQL0UFbc42yeXVsqmVKNZfrhtFlJB2LeB5JTSDA6havLVoZErve1s7yPgafkMrM2o8_yhYhqyZk1s4snCMrHDRPl8sQGp7i4DfTzwjCSIrUoKYG-ioE862JcJDMvx9ZEMqiMwM7Q0xBOZAHw3orww9FyR7Tj3qSIz882IWRkzdbE6ZjAYjSv8PyN2WXtLiOcOiY1gMGC4MPd0rSVJFOS1oqV7gZBFyBpxrw8nKmspXGF3D6QZGV39_EAPJIelzrvUbnXThfpcV6xMsJxD63h5urw-fT4YL_Aa3HUQP-L23A8bnEXsjxN4ZxJIqM2y60RSuXqsl5noHtZNKKSQqaF2TLeirD6NrxHdzdZHcXugcLZhCBG2aLWishFQI6ulOqcqw4kv4wrPa5vyxsIXcQhvKbQY5lPImo6Zgm9qENiR90K6hXX29VdCBsqaoDiAcG5nPjRRbSQpE5LbRXtS6kG3bIFzrmVZS_EVTZXQznk0zChh0i5WG5GyN_tC6CP5pTXQ7E780ZWmmMFLXupZfNmWqmCjRje64JiXER0I_gq7C1H1N9eE24LCLHn7BjiRpvb0uayWb1qRbGAzmrrMn723Vs4Up-uFxHHkOcvZO__GcnAQ-QTrsOk28pP5Wtzc3EuZ2k0R3Oqtg5jgSSfJ0LwAAJYWFTfEHWj2xnE0iwwd_bAPX26bSaQ53f5Rsrztg2BFe25DRINkP4tbnR8DuGHDkbNAIXSvkdxgZXIc1MiMXJ-8CKfACDWmACI8QRdQPzrkQgncCrO6m37dA6rGklc4i1_G0kwZYvLF3cs9HY3e8V3RmTjhyxaxTH-YB8eM4mMWRg-7vJTUV9x7qmbG5E98u0qaw1Gz2023ZtA8qtYNMymAw2I4eXHsXgxQAPNDjD83EuZv7eTRw-W0Bq4wVhYn1moCflk0Jg7ekWZuXSzRuR42-Hvl71nWZizPsJp3adciRJ6OKMH7Kf0OY_Df1IEd_NduWqkWTPlDVZ0YqYFy_Gqeu8B87ktUdXHsA9s4MH5hn9Grx6L_gmf9i_4z9C1JDPVt-ZseeATVu_1fj7rvhqDqE47B7sYs2QvBfsf-o2F8J8dBUbfgvxTNOrTEa9rS50U2z74GkF5gYme-Ve4GrS47nDZIvGicfzvxfyff_Tr5j2v1wwgWuWRANEi4eJRzJ4uxXrn1UruWszF5Opx9PANfHcO0XiXqj4IziH_pBOvRD8tvdt4pe0S3s9f-GhXG7SKcFuGaM9Dswtkvapcjob1Tviw_bMNADzV6NVtkv3_3I11vDcIDZHWMO3PDnwhyfjDONGX9CzN7nwmybT3d2BDtO_5PhN5hnnxDzeKP5k2O-pVt9gkfMeU9OGq5eOae827Ea7UiNNpSWSGxqKh8BKnBeXf15PXVn5miREwW7d_1SSJ9Ngog0z3Dqp3Bno7WFQ87RA6UVehLyQZ9NAT8z55Zg3iPLKCrMYSvMNl0CT-jcDQIn9pxZ7E-yuZfFXkwmiilO5_2J1uENkqRpI2ttD1E_5PlJI_n89Cx1y9Su2dhg2yAGp5Fhdd2YFz1-iH13spuHAXE9GtFok-Isxxsnp25Is03mxzTzs3TCyYbyem7ps2tc0idkROg3Mf5qwubYwdiJ3NgNvZnv23CXp75PPJpC9Xd8a-aADYwfjngncm4g6XNfeMhZrY7nvxNSGzOpUQfySaN2Qs5XRJGlkLKpFM0mBsDcGPAPD5VccQ">