<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">