<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/54776>54776</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AVR] llvm-objdump crashed when disassemble STD instruction
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AVR
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            benshi001
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          benshi001
      </td>
    </tr>
</table>

<pre>
    With the follow assembly code `a.S`

```
  .text
  .globl  add
add:
  add r24, r22
  adc r25, r23
  std Y+36, r20
  ret
```

Build and disassemble
```
clang a.S --target=avr -mmcu=atmega328 -c
llvm-objdump -d a.o --mcpu=atmega328
```

Then the following error message rised
```

a.o:    file format elf32-avr

Disassembly of section .text:

00000000 <add>:
       0: 86 0f         add     r24, r22
       2: 97 1f         adc     r25, r23
       4: 4c a3         std     llvm-objdump: /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:176: void llvm::AVRInstPrinter::printMemri(const llvm::MCInst*, unsigned int, llvm::raw_ostream&): Assertion `MI->getOperand(OpNo).isReg() && "Expected a register for the first operand"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./bin/llvm-objdump -d a.o --mcpu=atmega328
 #0 0x00005635b129a3a0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:0
 #1 0x00005635b129a457 PrintStackTraceSignalHandler(void*) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:0
 #2 0x00005635b129801a llvm::sys::RunSignalHandlers() /home/shiben/work/llvm-project/llvm/lib/Support/Signals.cpp:103:0
 #3 0x00005635b1299d21 SignalHandler(int) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:0
 #4 0x00007fddad806980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fddac6bae87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fddac6bc7f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007fddac6ac3fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
 #8 0x00007fddac6ac472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x00005635b0de7187 llvm::AVRInstPrinter::printMemri(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:175:0
#10 0x00005635b0de6212 llvm::AVRInstPrinter::printInstruction(llvm::MCInst const*, unsigned long, llvm::raw_ostream&) /home/shiben/work/llvm-project/build-avr-0/lib/Target/AVR/AVRGenAsmWriter.inc:1083:0
#11 0x00005635b0de6d31 llvm::AVRInstPrinter::printInst(llvm::MCInst const*, unsigned long, llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:84:0
#12 0x00005635b0cb6431 (anonymous namespace)::PrettyPrinter::printInst(llvm::MCInstPrinter&, llvm::MCInst const*, llvm::ArrayRef<unsigned char>, llvm::object::SectionedAddress, llvm::formatted_raw_ostream&, llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::objdump::SourcePrinter*, llvm::StringRef, std::vector<llvm::object::RelocationRef, std::allocator<llvm::object::RelocationRef> >*, llvm::objdump::LiveVariablePrinter&) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:499:0
#13 0x00005635b0cbc2d0 disassembleObject(llvm::Target const*, llvm::object::ObjectFile const*, llvm::MCContext&, llvm::MCDisassembler*, llvm::MCDisassembler*, llvm::MCInstrAnalysis const*, llvm::MCInstPrinter*, llvm::MCSubtargetInfo const*, llvm::MCSubtargetInfo const*, (anonymous namespace)::PrettyPrinter&, llvm::objdump::SourcePrinter&, bool) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1480:0
#14 0x00005635b0cbdd8d disassembleObject(llvm::object::ObjectFile const*, bool) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1725:0
#15 0x00005635b0cc324d dumpObject(llvm::object::ObjectFile*, llvm::object::Archive const*, llvm::object::Archive::Child const*) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2415:0
#16 0x00005635b0cc3ab5 dumpInput(llvm::StringRef) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2495:0
#17 0x00005635b0ceb8f4 void (*std::for_each<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, void (*)(llvm::StringRef)>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, void (*)(llvm::StringRef)))(llvm::StringRef) /usr/include/c++/7/bits/stl_algo.h:3883:0
#18 0x00005635b0cdf94e void (*llvm::for_each<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, void (*)(llvm::StringRef)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, void (*)(llvm::StringRef)))(llvm::StringRef) /home/shiben/work/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1586:0
#19 0x00005635b0cc5ffe main /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2782:0
#20 0x00007fddac69dc87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#21 0x00005635b0cb4b6a _start (./bin/llvm-objdump+0x1fcb6a)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWV1zo7gS_TXOi8oUCAz4wQ8eJ9k7VZM7U0l2tu59oYQk2-xi5JIgcf79dkvYBuJknJ3N1G7VUDagz-4-p6WWRK7E0-y3ol6Tei3JUpWleiTMGLnJyyfClZBkFPvMu4P7yL8c-fP2Dkn3s0lCvFru6kNiVaq8JIQJ4bLwJZzviyFFNI1GdAEPeszlkJy43HCfa2pB_jeiH8LYFRwEalmfVMXdPzRFKQirBBGFae2RJ-vzklUrAhaS8bhmegXdhpfsQZPxZsMbfK83csVCmpIxd03K8mEzVvnvotlsyRjEeAoab_i2V_0V7e7XsuoAXoACUmulyUYaw1aS6MJI8UoHIBHwJHAtixK70RtWE1kuQzoG3btVLw_2PxG1JEbyulBVy9eeE3f324uMwoVl7KpDmr18lJrGxF-S_YVk4vWcUHtRbDFNSNBtwdsWQ7LtFWGLiBMWHlqgE-DVBR5rjej1Wm0kPMy6yGUFL49K_wEPW3Or1e9gbpvER5HD_d6xTK_nX2_hfrNwGZfScJf5sTL1F11UtdQe36KkIIlR3oMqhFUCcQnn_aoub4uJG7nRxYimXEFxp8HNAuuP6BztbipTrCopCDTA9LGaZo-ZMrWWDJQGv5-i7DmQqC114As3H8fADij9eSs1eDnI-rz9r4KqXmFu5QrS8E5s6xge9Gq3BSRAGIOBsyoM6Ite45yw0KCl2vdERzQhSwZ-JTxHzJdPV_O7K2KafFPU0EPerKCXrdI1qRVZ1_XWoOL0Gn4rmEua3ONq04G9T0ZhTCMNvNjxWVS8bGCaQU24ZmZNcsb_qDXjshV_V0MGaTlvPdVzjvFFq5VmGwIENhtZ1agH8aDrvKj2gs8cqIBS6BN_hwNgEoeTPKBTFjK_w4t5Mu7FMm7Vukc9Ae2XyVs4fqd_0Vnvmi0CDW-_VsUOM8BpWGk8wA2kTeIJ3P2jCcHQhGiSkIG-rov_APoluC1N0a2tU76TknFI-0rSgZKpH7BTON82VU9Xc_Dr79Nyr147uP2wr144UG8qaECGoL0nq5Gf9DWKWo2SpRBMpH4MkJEs09LUSssMBqJFpu19l8ZZHI3Lomp241XVuIJtvQanFJ5Rng8B1d9Z4HF2OYiZdMXwOGcyTYhmEIzQzhxjKg5x6IyPm_834ePdIUk9miAI1g548XAUApFCbnGoN85MyHiw2oBm8LRde9aPg77B8UATniwDwnJlLT1Pk1o4NGwrKyQdCEn6QhgPlwxQZXamzXAKzHJ2vu2u3eHFiZz2RaZDkVFCz-COI2uxZS30oUmPtWnXXX0hkwBYe0OUGsYnYsPW26PUjwzHnVkPJz1_AEFMA3oOBJirG7siOhuIUlWrvw0J61e4ZBv7LwEC919kNTeb33SBELgpIvDTsI9BMMRAQDA4E4PvMP6uhk5Wt3LZz75Z3DW5W09_rJZq31v8j_GhNOrD14tJPs_jCOADXFilqqeNagypGCzPtzbeT_frAFnXT2dDuq84ROEE4B3etGZPCG-4OLDA10zj6rxXEdY5iIwjxa3ypZgLAUHC9Gu67QKsBrPni5W_idjjIh17Uo3m8mD9_BU5MGu73AewQIGRi9MG3spScYY2Dhuy0pac3Ta8IhbK-SsGfCoe5FemCwabyC6Jb3fXWqnSDFamg2Trn9G0EzrQQcOBg3Iq_O7u9rMzset2bhS84FhdSFzba9xLnq58s1ioym4ZnzvvcYd5gt1vFtspeA6LhidTmBel94bPs9KTHvmGWm8a5m9xdVs1B87f11eCKPX7zhINnEWIVHzDWc7whx9gSUIHoX3St4SHNBJ2M3i2Ca96_lzzNYzuM8ZIW9MlFms8Xzo2ek9MaBQMMImHmLB8YjH5WG2bPiSd2fV9dZwOdEz6Oso8XUbuAMUud-eHCRuiUSYZX8N8nWWw4s34budKsqzCSFVmuO5pp_RDswzrBYFLwDK94JmxtkIlGx-7QQEzshq2G3hCsOiEz5Nhoy3vxIXnYemH6_FCnR-sR_eP9TuE4nT5kufZ2ulPev9t9P5k7N_G2LkDsv29EikaAypet8ez8AY7qQ_2d42HHTlqiqcsZcbKlfJg-p6H6XBPmvaDgFhOI9lVsbcn2UeBn9w-4zV-81z7E8TvA_Hb4-NNK6njMGoz5pf3eOx7_-lqB1YZO36CSRr3x890sNCbLJeSbFhRvedSLklpTwvq9w8tp4KnCYQGPJcExpius71K5xyTctPsz4fdqy20_dgj0zDqn8zQYLCXifKYEScYmTz9ucedcC851D0cls7xJFha-rnS0q6YpTgUH760XohZKKbhlF3URV3K2WjyAc-VJpe9D5DuaxV094hfczt7K3J3f0mK48niRaPL2V__SjaJkiS-WM-WfBpPcpr7ecSjiIcRSyKRJNMwkFREQX5RslyWBrUdUYof0WSFQ8MeiVHQ_qKYUZ9SP_LjgNKYhl5Aw4hCd6EMRMSWk1HkS6Cy9FAXT-nVhZ5ZtfJmZaCwLExtjoVgMJ5Hyb1IWYEv-n7QimNNvVZ6dsi-sCbNrD1_AjiZ6x4">