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

    <tr>
        <th>Summary</th>
        <td>
            clang crashes at -O1 on x86_64-linux-gnu in 'Simple Register Coalescing' pass: Assertion `isReg() && "This is not a register operand!"' failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    It appears to be a regression from 12.*. 

```
[531] % clangtk -v
clang version 15.0.0 (https://github.com/llvm/llvm-project.git aa88161b378ecb49388eefc28abe2926a229bcfc)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[532] % 
[532] % clangtk -O1 small.c
clang-15: /local/suz-local/software/clangbuild/llvm-project/llvm/include/llvm/CodeGen/MachineOperand.h:360: llvm::Register llvm::MachineOperand::getReg() const: Assertion `isReg() && "This is not a register operand!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /local/suz-local/software/local/clang-trunk/bin/clang-15 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/DUP/20220619-clangtk-m64-O3-g-mllvm-enable-constraint-elimination-mllvm-opaque-pointers-mllvm-enable-newgvn-build-183657/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0 -I /usr/local/include/csmith -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O1 -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/DUP/20220619-clangtk-m64-O3-g-mllvm-enable-constraint-elimination-mllvm-opaque-pointers-mllvm-enable-newgvn-build-183657/delta -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-6d9f9d.o -x c small.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'small.c'.
4.      Running pass 'Simple Register Coalescing' on function '@main'
 #0 0x00005600df296931 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00005600df293fa4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fa3763ce980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007fa374ffbe87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007fa374ffd7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007fa374fed3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007fa374fed472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x00005600de54999d isMoveInstr(llvm::TargetRegisterInfo const&, llvm::MachineInstr const*, llvm::Register&, llvm::Register&, unsigned int&, unsigned int&) (.constprop.0) RegisterCoalescer.cpp:0:0
 #8 0x00005600de55095f llvm::CoalescerPair::setRegisters(llvm::MachineInstr const*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x304895f)
 #9 0x00005600de55b800 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&) (.constprop.0) RegisterCoalescer.cpp:0:0
#10 0x00005600de55e01f (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#11 0x00005600de560c8f (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#12 0x00005600de3acc58 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x2ea4c58)
#13 0x00005600de8fb1b3 llvm::FPPassManager::runOnFunction(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x33f31b3)
#14 0x00005600de8fb3e1 llvm::FPPassManager::runOnModule(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x33f33e1)
#15 0x00005600de8fbcd5 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x33f3cd5)
#16 0x00005600df6482af clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x41402af)
#17 0x00005600e04f2d22 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4fead22)
#18 0x00005600e1113b89 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x5c0bb89)
#19 0x00005600dfdb4231 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x48ac231)
#20 0x00005600dfd3e816 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4836816)
#21 0x00005600dfe778a8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x496f8a8)
#22 0x00005600dc78906b cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x128106b)
#23 0x00005600dc782863 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#24 0x00005600dc7856c6 clang_main(int, char**) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x127d6c6)
#25 0x00007fa374fdec87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#26 0x00005600dc781dba _start (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x1279dba)
clang-15: error: unable to execute command: Aborted
clang-15: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git aa88161b378ecb49388eefc28abe2926a229bcfc)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clang-15: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-15: note: diagnostic msg: /tmp/small-7079c7.c
clang-15: note: diagnostic msg: /tmp/small-7079c7.sh
clang-15: note: diagnostic msg: 

********************
[533] % 
[533] % cat small.c
int printf(const char *, ...);
int a, b, c, d, e, g;
volatile int f;
int main() {
  if (a) {
    int j = 1, i;
    for (; i; i++) {
      int k, l;
      k = c;
      l = j;
      if (g) {
      L1:
        j = j / ~0;
      }
      if (c) {
        if (d)
          printf("0");
        a = k / j;
        break;
      }
      j = l;
    }
    for (i = 0; i < 2; i++) {
      int n;
      f;
    }
    if (b)
      goto L3;
  L2:;
    int q = e, r;
    r = e = 0;
    if (!q && !r)
      goto L1;
    while (d++)
      ;
    goto L2;
  L3:
    while (1)
      ;
  }
  return 0;
}
```

Compiler Explorer: https://godbolt.org/z/bbqEn7ceb
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWu1T2zwS_2vCF40zfotjf-BDCNByQw-m0OeZuS8ZWZYTF9tyJRto__rblWzHNqHQFu5m7piQOHrZ_e2LdldSYpF8P76oCa0qTqUitSAxJ5RIvpVcqUyUJJWiII47n7mrOZnZpzN71b4HdvsyXxcnC8-ZLU7JzF0QltNyW98R69706u_knktN01nM7bkNA8NdXVdq5q1m7jm8tlm9a-I5EwV8yfP77sOqpPjKWT2HAYTSMHQCJ_aWIWexH3lhyHnK3JDG3I3cgLpuFLOUzdzI8L6lcstrYEIew2AT-FZT3pXiobTyrGwerW3ZtON2ktOEFCLhOY6uhMoeTddFqWqa5zw5zSR2IS7BaA6fqvlhdc-iSpsfP-Ahzkoz8Vw0ZUIYLZMsoTUnH9ZrkhlitAZVtMQaJZFkFqMSGEA_z4IwGAB0z8M_JNjKPiTp2O9A03l7msE7kJyDC7492eU7kHwfpK073fAc1hVP3sTm6x5Z0eR1hrOAynzmncx8uwj8CcufDdLRxO2iyaG2PsJcOUQVAHvOBqHGchY_WadKpPUDlRwe9ei4yfJkEmv2ESgrWd4kfN-whgjxgZfw9ImyXVbyq4pLkH2-A54eBETgrIdCXPNWn_k2UzWXg6bxNNMGIQpGQkiEuEWYAFMgmZVSXKI9CATaTO1HzNwAXvDh3u4yReBVitpEbsNNtMRdB8bM3CVJaQYBbG6UdH15tro5I6qJCwypJG62MLUSssYc8GtRGVWkVMMVPBBgSVqFkXrHCZNU7UhM2V0tKQMlrkkFjKRgkF_ACZRopGnGmVQpwTKK3iGbkigms6puId_UQIQkTVEhMt1kQ1d0LcVW0oJAlG8KXtbqdYbvmoy71MDurg3cXZuzIBZjDoHOrMr5s9mDWByUaIn4K7GsQvKcPlrwDvTRcIpYSaZonHMrlZwDyRxSrUVVbcU8FZJbqBwOwlsFzUorBStZJS1459VE02ypWTo7kSqDZnizcn4PX13zJVPwARyKFPTBrUpkJXjCzDstRQnNaUHrncWlLAV8SSsLvAyNAo52Cg5mpaWwJIaYDITHsUBJO6JsWC0Acp5RxUGetCkfsjKxapQK1H0K_GudZC1WNagnK_ChqSm5btjykktEXKDboD45rS0F-jdqyR55griQh7LAPiUgALVx8Motl0gIGoDPNomBOxNQR9At0BZFlZlwBTpGQV82O5qKqxrpgbWbLTrt6ZdreHdt17UDJ7LayGJBMLKuPGtrYFu81GiNRsBStcXzrMjK1i56jKjot6bXvBrPLPnD9r60dLCxnNALFktgC-asKQGHMSsBBflt7zVxWrdhWDZVlnUxCOTttH1IYwoUsmsHvZJpt74tLWVJc_C87xB0ijcF_hKjgxL9dOiLWcw9n8-fvh0Y-5Qbf8QH9pTrXtVTOj-f_essdCq0Ur1s_qfWRmpiA1KsiRNBA2iPWe1uAkTz5-7c0ZEhh3FJRrelADkYxiqaJDAMwsnpZgNFzubj6q-zzenfq8_n7mZ9frFZ3XwCCjBboEJryC6gE4y8VpBEaZTMIVg-EjauMRxMPDNvzUU6885IBXsnSLm0JhjHRUowiJuRLo7EgsFEQVNb6R4Pez43pQ52FWQ-4L88b0qm0_01NnyiJcQ5idkbmiD0N5CG4FuHxV22udE_ROsmKzBt9fXHWlAI10ybVxNMO2bwHYsvismvLWGhzbOJ_WjD3yKw7SR1oyDyHHItwX46F99iQr_JtuCbHyF55wg0vBcZ1BwrLFFMl5qzCjO2rf972s6EtpdSn0yJAacXCbktoWVKvWXgMR6FNtlsIJ5CzuIbKGh0xdSu_gNrGTqqWm_95kpg2DmxHx0XqPQbSGTjDdn4aRrzcEnA1RUa5LwrILdAjFnrv_7x8K-4_-rOXXRmpaXoggqs4YRXuMIguT2ahnuNBpDBpyYNJvZWC2cssD9BkixTh9BYaElfh6ROjDb0LM0knDBZjJnwBOwDWqW6HN1gKbmJ6etlN_P6B8MyGrMMpiz9pfsK2zG0WqCt5tkwZWS15dDL-MKPogjKU_UJKgjc0qOP7atyc07QLZeLMhVtHY6l9vpp-a4pdENW4yEdlSdzJx1NiW7BsWaun2vCYj-caz5QN1foolG_qttFzeXh1RGOFbCwo0U6QNPPvqb6YANeaq8CNVLPM1JHnY3-vNzujBgCyJEZo4kUcWjr0yMKhe33QjSw-YGCV1V6gxGNFd2LaJq_QvpZi-r7s6K1poyFyP9I-xjj7Alubjvpb-JmgLlr-lvIu8sM9T-UodHl-EpK-v0zh7S0fl4-7-wXhHDGQgQ2C39XCLD6VdmC6TLdIUPs-4JfAOqOgHqUsUX4dNV2tDHBDlAdhDPB8baO7nLqA8Le0VEEbyRCmMZO7A1EOL9G1F1V8N8E73mpB9hG4P0peI87rwD_SZc1Yzdom94JOOAaAV9MgbNkMQCe8y1l383zQIQLqK56Mf6T8AHdCH4wKqUCP3Rpao7HDJwzKJtPzBnDVVNXDcaNQffpvlw-K7ewQto8NBjyEYojLm84lWx3VZlTjWFqHAxtz8ZeGGVS7QuDLuHp0JC9om9qKEa3GO3G-bnV_2pCsFXCql0WawKFkOmBGgz2JpsKwuMwbkr6sKkeJOyKNgoPLYrRpISntMnrDexSeM1fmAgh10Tdt_UH3_FtMPfIH4ZFD7f91E1c94Aa1qDSpuiWoim6oaQvldk1fimziaOsbm5hTg3b0HdxbSj5aOK6I1GG5Qt3HMeLw2goyjVuvADXGOgNL2jrKyaNd59vDXnB7BgQjSCPapU0iX3c6wzAnUvUYe-FZoU-ctbUvD_afVO1hpQBhCFGd7yxSzweQhAZLWI8PMAaWNW0hLw-RNktn_B5od7FPUIvAJgjOcabSL5chjQcRT6DeC_OfXuMOkb_RNz3qGv9KEgB3gj_qGJhyzCyg5gw5mzMVnyQUgZlHdvRQf2NQQWC3KgNGgbb8LcVw3FDB1COxPAmYrhh4JFO92vnVq-9gTA3eHzxF8dDZZNED8ikPSiR2f0z1Z7rT5guAtb6cKc9vX8yutGqeBdtLBPgO9LGZOuccBYuYeuMW1VIBhS2z4jvtTtnppruyMA86k5NR--iPd8f6yWY6MVJYti56wlvL3wExHvhhxdv-sQOHxp9voeXStw4BJi5KMytF1nh-QNPfjLd_G4gbcNLN7e9yyJJoymbkxWUrlGcWPe6jXPYQO_X-xDj_-HvEIbKLQVWKyuyPyclhdpqcq0X_cFr8AOR9o5xdXu7Wn8ktx_PyPnV5eXV3xf__EDOLy7PbsjtlW4--fKBfD67vvp8O-tu9q4P3RGGClfws_eE_QDJib4vg15a9yRfqYLxGfDSXkZseehq-VdJqN1vWOKt7IE3596B2_S-DbQ1PuGG4EkqPOpNMVdiZDZJps0vc4xIEV7a96OprrN0xMW3BN_0xe62H3YvsLbMcWXWJB3NbmO2DtHLtp2QzJw0TFqJnv-VzLxT4iCHrCeFnamQOtJ5J7oD3twT_ZoQMWTu9N5hRICQO02bTVpz3fp10mowbg-Qv3R65yPtnwH9FX0ERp_ZE1qz5elT0uwA6a4v2Z-T9X-92Waua89MRe1NZlON407jmApESAwB6O7n0IwgY72NhrRWyPQ4W9sBHtfEfdkk5YR1-jwXo4V4ooWtgAxw6Q2mXbq69Ji40DcNTjupHHVK09FjnzKcuc63_U8wHHmQvzOa-LDL9OUNmqyVfaTe4Vgz3x3i90au1BNznicz0JPkdSPLgSR93_RHfOZ3PG09DDVclQupt4jT34SIJBZ5PRcS7wp1qom_nZVLxuOj5NhLIi-iR3VW5_zYpFz9OxCu8I4Mrykh-T65DtVF0Qu3VpU5tXv738UcNTI__v3fvSwCx_WOdsfLxSJNvQD23Y5rszj0k3QZuMzjMeOpv-RHOVQHuTqG6Auh9yg77m5WXceOnHDuMCcNU7b0_UVMY9i2-TZsZrN8joxR20fyWGPQ17O-nYNQat8J2sG7A97Rp029E_L4xw6KJ1FuVXOkER9ruP8GhnXAeA">