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

    <tr>
        <th>Summary</th>
        <td>
            clang assertion failure with -sink-insts-to-avoid-spills and -g
        </td>
    </tr>

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

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

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

<pre>
    clang crashes on the following code :

```
// clang -c -O2 -mllvm -sink-insts-to-avoid-spills=true -g bcm.c
int c(void);
int a(void) {
  int b = c();
  for (;;) ;
}
```

this code can be reduced to:

```
; RUN: llc -O2 -sink-insts-to-avoid-spills < %s | FileCheck %s

target triple = "aarch64-unknown-linux-gnu"

; CHECK-LABEL: a:
define i32 @a() {
entry:
  %call = tail call i32 @c()
  call void @llvm.dbg.value(metadata i32 %call, metadata !3, metadata !DIExpression()), !dbg !8
  br label %for.cond

for.cond: ; preds = %for.cond, %entry
  br label %for.cond
}

declare i32 @c()
declare void @llvm.dbg.value(metadata, metadata, metadata)

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!2}

!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1)
!1 = !DIFile(filename: "bcm.c", directory: "/")
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = !DILocalVariable(name: "b", scope: !4, file: !1, line: 8, type: !7)
!4 = distinct !DISubprogram(name: "a", scope: !1, unit: !0)
!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!8 = !DILocation(line: 0, scope: !4)
```

here is the crash log :

```
llc: /home/user/llvmws/llvm-project/llvm/lib/CodeGen/MachineCycleAnalysis.cpp:149: bool llvm::isCycleInvariant(const MachineCycle*, llvm::MachineInstr&): Assertion `MRI->getVRegDef(Reg) && "Machine instr not mapped for this vreg?!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llc -O2 -sink-insts-to-avoid-spills reduced.ll
1.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
2.      Running pass 'Machine code sinking' on function '@a'
 #0 0x0000aaaad23126b4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/user/llvmws/build-main/bin/llc+0x213f6b4)
 #1 0x0000aaaad2310600 llvm::sys::RunSignalHandlers() (/home/user/llvmws/build-main/bin/llc+0x213d600)
 #2 0x0000aaaad2310780 SignalHandler(int) Signals.cpp:0:0
 #3 0x0000ffffba19d5c0 (linux-vdso.so.1+0x5c0)
 #4 0x0000ffffb9caf200 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x0000ffffb9c6a67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #6 0x0000ffffb9c57130 abort ./stdlib/abort.c:81:7
 #7 0x0000ffffb9c63fd0 __assert_fail_base ./assert/assert.c:89:7
 #8 0x0000ffffb9c64040 __assert_perror_fail ./assert/assert-perr.c:31:1
 #9 0x0000aaaad1649228 llvm::isCycleInvariant(llvm::GenericCycle<llvm::GenericSSAContext<llvm::MachineFunction>> const*, llvm::MachineInstr&) (/home/user/llvmws/build-main/bin/llc+0x1476228)
#10 0x0000aaaad1729ba8 (anonymous namespace)::MachineSinking::FindCycleSinkCandidates(llvm::GenericCycle<llvm::GenericSSAContext<llvm::MachineFunction>>*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl<llvm::MachineInstr*>&) (.constprop.0) MachineSink.cpp:0:0
#11 0x0000aaaad1737ddc (anonymous namespace)::MachineSinking::runOnMachineFunction(llvm::MachineFunction&) (.part.0) MachineSink.cpp:0:0
#12 0x0000aaaad1678388 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#13 0x0000aaaad1bcacbc llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/user/llvmws/build-main/bin/llc+0x19f7cbc)
#14 0x0000aaaad1bcaf10 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/user/llvmws/build-main/bin/llc+0x19f7f10)
#15 0x0000aaaad1bcb868 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/user/llvmws/build-main/bin/llc+0x19f8868)
#16 0x0000aaaad07ab838 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#17 0x0000aaaad0749a2c main (/home/user/llvmws/build-main/bin/llc+0x576a2c)
#18 0x0000ffffb9c573fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#19 0x0000ffffb9c574cc call_init ./csu/../csu/libc-start.c:128:20
#20 0x0000ffffb9c574cc __libc_start_main ./csu/../csu/libc-start.c:379:5
#21 0x0000aaaad07a3930 _start (/home/user/llvmws/build-main/bin/llc+0x5d0930)
```

I will try to propose a patch for this.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0WFtz46jW_TXkhbJLAluXhzw4TjyT-tIzXclMf48uBEjmBIMKUC7n15_aSLYlx305OTVdbkfislh7sS9g5r1qjJTXaHmDlrdXrAs7666ZCXv7dlVZ8X7NNTMN5o75nfTYGhx2EtdWa_uqoMMKiRFdoeQWJYfvLBk-_SvZILLBPdCM49mfBM_2Wr_s8cwr8zxTxgc_C3bGXqwSM98qrT2it8F1Es8aXPH9nPdYygTMESlgICIlojendnZqxygfOjCGrgojehsnjidhXFuHoZHewAfmHfpQfnvZmPgddsr3pnNmcCWxk6LjUuBgf6IFvcGPf_-B6AprPUjxfQ0womuMyNJjlK_xRmm53kn-HJsmdJhrZMDBqVbLaCoihDHHd9li1plnY1_NTCvTvc0a0yFCJgzpDV7_frf-v9nD6ubuAaixoxFC1spIrCjBaJGwXsCTutIE934cjIEYZ1pHCoEpjePbMPsg_zA2doGx0AfeMBdVM39hupOIFHsZmGCB9ZN7WETW-NiOSErPG27v795aJ71X1gyLwQc0TEXVwJ_isHzlsGaV1ABeWzfn1oixLMc2ugKvwK2Twg_aniZE7GUvw8-Bjz41aMs1c_KiPIe-n-ozlmD6XE42maRHCN4NZqSwjyRNTryGUXsrOi3ntWaNn44lZzbA9DhCKB-U4aHfhrXdt0rLv40KiBQQ-B1rJEh5-__bh9Ufv23XaQp0a6VjMyLwXh5B08Oyt_fg9ogUMNKw_TCa9DmBEAARykkebPREHNs28fsER0ZWgNxkcApEyK2sugbfm9rib9L1nhO7YRwdS0NPnB4sZ_obc4pVkdyY2DDdc9seTFt8NHWNtTLxvYCX8H4cnI-JLy6I-9RVrbONY_vpyuzCynGlDrahf0_G4PnJoBvmFf8LSEwglQkHUPXv2EjjmzTcCmWaYUdXf91tYyERY_hiqlfog_JgdnJBpPIHKXcnIVR8LD-xGmFtm59UHq15D77Z2b1EZNN56RDZgJO_-uFh1jr7L8nD8Ap_VIXIZm2F_E0aRDZfGN8pI9fvXMuVYfrdKz_nbYvoKl2UsEJlrcZxNl0hulI-jr03L-AioGHBrfEBj5EQWUU3OM4aOu-NDw6RLFaqFV55Lx1oh1GWfHm8nyF618jw7VE2t7JGpHiUTczJMCODTRtwMJQUh40NeM_aVopY7WLlenGyQXTTBwAiOa6Z0lLMe9W-Ptytnu6w76q9CphhiA8nW-sCDhbvQmg9EI5VvVFh11Vzbvcj-aaiKu87CWJjZgRWhutOyNE2Vow_B8e4HJZ_Cow_Y9Ht2-PmJnMc_33t3R4z13R7aYL_1To6lOe51j1gOgA-dsbAKaZl3mNE8k1neNT6KzR8YYY14DA5nHv6pAijRmgkH1iT7yAeNiMeFoAhRE0PWB8WQyTvi2s-1BBEaIKTtyRJEsYYE4SmJKsWI1_x775_-OqUCVGyv0BDCLDjIMdet9YHJyFTZDGngS-W8cjz3ZioOqXFbM8UuH4VvyGOyE3yRlJaZ9UpUIFoekY0yZLkEtHHzjypxjD9OzNCS-cPZ4nPcxFZkky4kHMueZHgyaqIFIMGffMhjpP4_whEB6C6ruuKpaVY8gT3yat7m70Ib-feztNIZMmnJBbjuSVnNUkSvN22YeckE9tnpfVW7VstwYNjVsRzRDamDRqRzXjYHLLXYoHoKs9O-MspfsaynOPGR3MiUv-IyGYe3969kC2I2Vqv3hDZOKa8jNgkR3Q1gs6m0Ms8pQlmFUR-hAqiT42xKSIUKbA7IeRn5GgtwHgWk9gW0sy2Yl5GuL7x-NDjlVO84gxvkSxGeK10zroIewlxBv0RlgLN9ARbjh0lzRYlIcWP8_ep8zdppFO8z-F0_aHj6Wm1tibItzDpHRLBIcMgeofoHY5l4RcqwafDJF3kGRkdLCFiJ7klzUlZsQIWYMaa973tPIYjgG9jPiknlJ6GDBbbNsqIKAO0rpkRSrAAqf4fUut7OsXDy422_PnDiKc90_pbPB3e71t9aY1B5VVc4KD1PG5M62w7h-jGI_M_ZgzQNJ1qSnMh-Gc0dZ3505xbPxb0Q9-Rcstc-EW2ZOr_eUGL4qOuhzWgGI7YXaT1K3zGeJd50QmvijNe8RGvzVeYeijL_zWjzwVQWee84pMAWpzTrNPkF2h-iSeI6W4OTf8zxXpytKfp8oxiVWTjHdayYfx9OEKcyPYxMhD-R4gWRTZNRtmYaJKzqqAF5v398SgY37EYoufh_fDw7cshffTUtOaXXSufrrMoGeEYWH7ammWeMTJ1jOK8gNKa4-1Wq4pvfWAubDnTehuXhYLFffexTg8ngUuT5jsoj3AioKdFy_NFF5zHX1e2yqhwvk7_COCzCB7rY0oKOA6c5CLJJdCJJZeMuAhOc8h3yxN2erbltKQJ7lE_vxkiKWny4yvkPX5VWuPg3uEiA8ndeokZblngu-PtaD6eciWuqShpya7kdZoVSZJmWZZf7a5JTRZCiDyvS0ZlxUVBizRJiprUZZ6zxZW6JgmhCSVFukzzRT4ni6UsmZAFlywTVKBFIvdM6Xn8ycW65irelK6zNM-yq_gTkj_8Luuu46Wq6hqPFolWPvjTtKCClsPvtOx4W4RDUeckflVh98O7EdzKZs1V5_T15-92kfR_AgAA__8Tq5lf">