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

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

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    It affects all versions 10.* and after. 
It is likely related to https://github.com/llvm/llvm-project/issues/56123 and https://github.com/llvm/llvm-project/issues/53168. 

Compiler Explorer: https://godbolt.org/z/9fKoababY

```
[617] % clangtk -v
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 0ed2bd9311fd54f0b414549b96a2cd4036ef0945)
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
[618] %
[618] % clangtk -O1 small.c
clang-16: /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-16 -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/20220730-clangtk-m64-O3-build-235102/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/16.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/16.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/20220730-clangtk-m64-O3-build-235102/delta -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-7c26ec.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 0x000055958b132281 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055958b12f8f4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fa5363ab980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007fa534fd8e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007fa534fda7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007fa534fca3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007fa534fca472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055958a4a456d isMoveInstr(llvm::TargetRegisterInfo const&, llvm::MachineInstr const*, llvm::Register&, llvm::Register&, unsigned int&, unsigned int&) (.constprop.0) RegisterCoalescer.cpp:0:0
 #8 0x000055958a4ab57f llvm::CoalescerPair::setRegisters(llvm::MachineInstr const*) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x30d857f)
 #9 0x000055958a4b6420 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&) (.constprop.0) RegisterCoalescer.cpp:0:0
#10 0x000055958a4b8c4f (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#11 0x000055958a4bb9fe (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#12 0x000055958a304025 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#13 0x000055958a856573 llvm::FPPassManager::runOnFunction(llvm::Function&) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x3483573)
#14 0x000055958a8567a1 llvm::FPPassManager::runOnModule(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x34837a1)
#15 0x000055958a857095 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x3484095)
#16 0x000055958b4e645f 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-16+0x411345f)
#17 0x000055958c3a6752 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x4fd3752)
#18 0x000055958d097f69 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x5cc4f69)
#19 0x000055958bc5f991 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x488c991)
#20 0x000055958bbe85ae clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x48155ae)
#21 0x000055958bd23638 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x4950638)
#22 0x000055958869877d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x12c577d)
#23 0x0000559588691f43 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#24 0x0000559588694db6 clang_main(int, char**) (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x12c1db6)
#25 0x00007fa534fbbc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#26 0x000055958869149a _start (/local/suz-local/software/local/clang-trunk/bin/clang-16+0x12be49a)
clang-16: error: unable to execute command: Aborted
clang-16: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 0ed2bd9311fd54f0b414549b96a2cd4036ef0945)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clang-16: note: diagnostic msg:
********************

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

********************
[619] %
[619] % cat small.c
int printf(const char *, ...);
int a, c, d;
static int b;
int main() {
  short e = 1;
  for (; a; a++) {
    short f;
    int g = b;
    f = e;
    e = 0;
    if (c)
      break;
  L:
    if (g)
      f = ~(~e << b);
    e = f;
    for (; b < 10; ++b)
      ;
  }
  int i = e;
  if (d && e)
    printf("%d", b);
  if (a)
    goto L;
  return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWklz47oR_jXyBUUW9-Xgg6xlxokndo393qvkogJBUOKYIhkuXubX5wNASqQsj-2xnRzioiUSBLq_XtDdABQV8ePpeUNoknDW1IRmGbnjVZ0WeU1MQ59YU0LzGO8bXulkYswnxhT905pk6S3PHknFM9rwmDQF2TRNWU_s6cRa4lqnzaaNdFZs8ZBld_2XVlbFDzDDY1rXLa9x43qmZUtG76Bhm17QQ1Sfs2JbphmvyOKhzIqKVyB8yKGIoyJr9KJa4-kn_sPk7wWNaPTPIaWJZ3SXenTPPNOfuHMysVzCMpqvm1ui3am38rlXIzE93dANdAzeJpuODsTgsRXFoW2aSew6iRE5puM6YRR61GKxY9geT4zQcSdWqHjf0GrNGyHnQ-CtPEdr89u8uM-1LM3bB22dt12_TcVpTLZFzDPRuyzq9KEzb1438AMez1OpMIGrYDTDd93-1Pr7okzan0JhUZqrgcuihQUZzJjG8AnyZTYjqSJGG6iiI9bWlSCZRkIJjAkbeoE3AGgtg3cS7GQfkjSNT6BpfjxN7xNI6q7-CdL7n0Dyc5B27nTNM8wrxKqPsPlsh2zbZk0qRoGKPrHPJo6x9ZwDlr_qJKNJ0EWTI037AHNpknoL1DobRBrN9H4xTesiae5pxXEre0dtmsVPw2gXgNKcZW3M9w0zBIgvPMfdN8o2ac4vS15BdH0DnjbiITjLrghr9vQ7X6c1MsWgaTxMtSFCoSciIsIWYUg1MmBN65pXwhwEcTat9z0mlocLX9bNBokHV14gZSH1dNyKjrhlos_E8klCEfZjXSnp6mIxvV6Quo22qRgWtWsMLYuqeV_SkvmqUxhpNpywitYbElF221SUQYkzUoJRVTAO0WJSF22lmmVKreuCpTJ3Vm1OalalZdNBvm5AhMTtthTIZJOhE_l3VRXrim4J4ny75XlTv872fZPymAYcb7vQ3beZHtEYMwlepmXGn80fROPQo1ZEP4imbUX6f9DwCfqNrBq0OK1plHEtqTgHyYzTSqN1o0U8QQ7WhH445Ne2NM21BIbScrrlvWMTSbOjpsn8RMoUzfjQMn6HR0s9pDW-wGGbQB9cK4s0b0SKn-dFjuZkS5uNxqsqL_CQlBocTdgFvjaHj2lJXmiVCDIphBd9QUn6YtWypgDkLKU1hzxJm9-neaw1Qiqoew7-jUyzGitboSfNc9DU5lw2rHnOK4F4KzxH6JPTRquhf6WW9IHHApfgUWuwTw4EUBuHY655JQihAXzWcQTurEAlQdegLasZpZdYpOb5y2YXpuJ1I-jB2u1a-K1lWJbh24bWhRUNgUi7tDUZGTTLdk0Dk2gJxTeUwLTKbQXL3_YzFVNlmwihqiLSzgdBtxu2jz-sBvRN1-mVTPvJqElPyGkGH3lEhNh-KPCXGB2V6JddX8w41lLXn34c6fuUG38QN-wp172qD-n8evTbWci8pSXSwf9HXpyo-ZalIgWYIRogJ9O6Gh0gHN3STTnbsFAAMLrOC3BkYv7TOEY3TNH5aoXSYfV1-udiNf9r-n1prWbL89X0-hsoYHQhRG8QtIFeRDPNZ5bHmY4A9EDYOHWbXTyf2DNeJBN7QUpaIQES2hARHouEiNioOltdZ5GNVXxRdYt8aXcvv7e5jCQlMguA-Ms2ZzKdXomGbzRHEKlEdkQT4mqLGI-nHpTld7nHeYbcdboVaWGX4mcFRThk0iiSZtLzw7Mob6hILl2RiDbbIMaDgT_XDd0gMm3LCkykM7iRTHc3Imdep2t41Ffkx0xgDe6KFGl9KqoA9arWWSmSoiH_d7TNMW0rCRKHHBIDpxcJWR0hP6Gu7dk0CgODrFaIgsgJfIWaQRYl3Zw9MgPxomzk4kqvCxEszowH0wKV3RJNsLGHbJwkDnjgk4qmtbDJsq_R1iDGtNmff7v_V7R7tHQoFQ4mpehDAWZezEsxL5A8HlTDnUQDZPiWpGFle-qaY4GdAyTUT0xCo0JK-jokTay0IUdJJsEBE3fMhFE7odAqlRXfSlRrq4i-XnY1bnejWIZjlt4hS8e3XmE7JqzmSavZBoaMrOYPvYw61HE9VID1N2RosWgWPrYvfNVKvJ8u53lSdKWuqGZnTytkSaHvMh136ak8GXvwos2FW3BRljbPNYl6OtAlH5SmpXDRcDeru0nNq-OzIzhQQOT6yQDNbvQVlVsHuOq9CuqRep6ROuxt9P5ytjNiHADkyIzhWIrIcyy5P0NROD5uixbrCxSUdSlr-HCs6J2IqvkHis5ZUT4-K1pnyqgosndpX8Q44wB3wJzkN3EzYO6b_iqq24tU6H8oQyvL3WlV0cfvHPlp9rx89uINQpgHQkRhwn9TCFj9Mu_A9MnumCH277w3ALVGQBEMDKzEn6UtcuwA1VE4BziEIyDnN8oHjtA7jsse4Qpcz_XtAa7llRjaZ_s3I_rIqecENrDtpp4A7xyC96n5CvDfZLkytm3X9EnAgWsE3D0A7hvh0BsyvqbsUd0PRDhHybQT478I3wG6EXxvVB853HPcRG0rKTgL1MVnamF-2TZlK4LB4PV8Xw8v8jXctEsugy5fUfHw6hqLfba5LNVWwDDfDbp2e0ov9FL584VOF7g71mWv6OsGFeZahLBx0u30Pz0g2Clh2k2LGUF1o96gsPp3y1clYt4wGFb0flXeV1igrGqx0t-OBsU8oW3WrLAM4Q1_YSDiqAqlH-sPjmnaMPfIH0aVDLOp57vWETXMoNJ2209FVUmjTs9rtYD7I08PHGV6fYMxDVaEn-LaqE9tIB2JMqpJYiP0Ey8cinIlllXANQZ6zbe08xWVm_vvj4bsMmRpLxxBHhUgEXOTMDSHkJeV0OHOC9UMfeCsbfhuS_RD1RoEDBCGGK3xai3igUv5eBKrszV5WpQjWQ9R9tMneF6oT3GPwHQBcyTHeGUYY2GAKnYY-RTivTh33d7jGP0TcT-jWHVC1wC8Ef5RGRJ4YeD7MWHMXKn19SClDGo1tqGDoloEFQS5URsaBmvrjxXDtJgLlCMx7AMxzMSxSa_7mXkj595AmGuxLfEnFzuxKokekUl6UFyld8-UcJZzwNSJI0_ZvteeXBQp3UhVfI42TPAdaeNgPRxFDMv_1UqsP5EMUBNKfK9dDrO67fcB1K18KenIpbHtOGO9eIfGcEIsx-WADxc-4iC-E354YCW35MRNm4ulhjiM4cohYObtVp0WkanYVODxL4ar4_akCy_92O4MiMStpKy2S4R0bc2JdifbOMeqeD_fhxj_D4_vh8rNC1GtTMl-I5RsaxkKOyd6xzX4WUV3NDe9uZnOvpKbrwuyvLy4uPzr_B9fyPL8YnFNbi5l89kfX8j3xdXl95sdhqtjR2tBLSbws8druw4VJ_KMCW9psyP5Kg082ePlSWT5x05k30qi3rzdEB9lDnHeHD49gg53R9C0Ge9fI3KSUmzeJiJRirCsMkyXXHQRjkJx0L3rTWWkFR_xrh2uKkQSr6NR5y4-y3Dsd-2E1BuxL8nJxJ4Tc9efkKSoZOCyz8BFflhn8hqN7scng5FE8l5LitGoPZFtfNSmOBvj8XIPhu13mORfhPl5O-h3sTPZfsz6YIziOPEXQhR_IZjNcAHXQJN7GGMxBiqIxEBiCphEKSI64DQYOfHn_a3QRPpEaoU17k_h-YjUzgPkwbsby68niBUJOhq5LhCBLwadKt60VT5Q7g7Z7sdXJ_zU9NzQ9kLDD07iUxuhNaQnTdpk_FSFbXkGz2txiiJOnRDAn5xuycT66-OMyWf8HOGkrbLT9_xGLnCDk80pSsSEx0HgejyMLW6FDnUMyl2ecD9xTeskoxHP6lPMX7DP-T2RJAQUd36SnsqDs8AwUSqbpq9jaehT13C56-MNYqhjYGmUZrrAIX4Wd1KdSkjy3M0xMshY718izIrtZS7ZgT5tG8yx058bpOIiX9ftieR-KtH_B7ddV1k">