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

    <tr>
        <th>Summary</th>
        <td>
            [llvm][CodeGen] Assertion `!hasInterval(Reg) && "Interval already exists!"' failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:codegen,
            crash-on-valid
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          kawashima-fj
      </td>
    </tr>
</table>

<pre>
    After the commit b09b9ac1081d19c8021df8e55e96cd1325f0eed0, (PR #129204), the following assertion failure started to appear.

```console
$ llc -aarch64-enable-pipeliner test.ll
llc: llvm/include/llvm/CodeGen/LiveIntervals.h:150: llvm::LiveInterval& llvm::LiveIntervals::createEmptyInterval(llvm::Register): Assertion `!hasInterval(Reg) && "Interval already exists!"' 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 -aarch64-enable-pipeliner test.ll
1.      Running pass 'Function Pass Manager' on module 'test.ll'.
2.      Running pass 'Modulo Software Pipelining' on function '@foo_'
 #0 0x0000ffff87bbe738 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (lib/libLLVMSupport.so.21.0git+0x24e738)
 #1 0x0000ffff87bbbe20 llvm::sys::RunSignalHandlers() (lib/libLLVMSupport.so.21.0git+0x24be20)
 #2 0x0000ffff87bbbf88 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000ffff8c4107a0 (linux-vdso.so.1+0x7a0)
 #4 0x0000ffff87597608 (/lib/aarch64-linux-gnu/libc.so.6+0x87608)
 #5 0x0000ffff8754cb3c raise (/lib/aarch64-linux-gnu/libc.so.6+0x3cb3c)
 #6 0x0000ffff87537e00 abort (/lib/aarch64-linux-gnu/libc.so.6+0x27e00)
 #7 0x0000ffff87545cc0 (/lib/aarch64-linux-gnu/libc.so.6+0x35cc0)
 #8 0x0000ffff87545d30 __assert_perror_fail (/lib/aarch64-linux-gnu/libc.so.6+0x35d30)
 #9 0x0000ffff89f21cf8 llvm::ModuloScheduleExpander::calculateIntervals() (lib/libLLVMCodeGen.so.21.0git+0x771cf8)
#10 0x0000ffff89f3684c llvm::ModuloScheduleExpander::generatePipelinedLoop() (lib/libLLVMCodeGen.so.21.0git+0x78684c)
#11 0x0000ffff89e67390 llvm::SwingSchedulerDAG::schedule() (lib/libLLVMCodeGen.so.21.0git+0x6b7390)
#12 0x0000ffff89e67c64 llvm::MachinePipeliner::swingModuloScheduler(llvm::MachineLoop&) (lib/libLLVMCodeGen.so.21.0git+0x6b7c64)
#13 0x0000ffff89e68168 llvm::MachinePipeliner::scheduleLoop(llvm::MachineLoop&) (lib/libLLVMCodeGen.so.21.0git+0x6b8168)
#14 0x0000ffff89e6848c llvm::MachinePipeliner::runOnMachineFunction(llvm::MachineFunction&) (lib/libLLVMCodeGen.so.21.0git+0x6b848c)
#15 0x0000ffff89dc8f30 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#16 0x0000ffff88174378 llvm::FPPassManager::runOnFunction(llvm::Function&) (lib/libLLVMCore.so.21.0git+0x494378)
#17 0x0000ffff8817457c llvm::FPPassManager::runOnModule(llvm::Module&) (lib/libLLVMCore.so.21.0git+0x49457c)
#18 0x0000ffff881751e0 llvm::legacy::PassManagerImpl::run(llvm::Module&) (lib/libLLVMCore.so.21.0git+0x4951e0)
#19 0x0000aaaaddc5e474 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#20 0x0000aaaaddc5ef10 main (bin/llc+0x2ef10)
#21 0x0000ffff875384c4 (/lib/aarch64-linux-gnu/libc.so.6+0x284c4)
#22 0x0000ffff87538598 __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28598)
#23 0x0000aaaaddc53130 _start (bin/llc+0x23130)
```

The input IR is [test.ll](https://github.com/user-attachments/files/19460743/test.ll.txt).
This IR is genereted by compiling the following Fortran program with `flang --target=aarch64-unknown-linux-gnu -S -emit-llvm -O2 -mcpu=neoverse-v1`

```fortran
subroutine foo(a, b, n)
  implicit none
 real, intent(out) :: a(n)
  real, intent(in) :: b(n)
  integer, intent(in) :: n
  integer :: i
  do i = 1, n - 5
    a(i) = b(i+3) + b(i) + b(i+2) + b(i+1) + b(i+4) + b(i+5)
  end do
end subroutine
```

@huaatian Could you take a look?

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WFtv46oW_jX0BSXC4OtDHtJ2ss9IHe2q3TqvEcbYYZeABbiXf3-0bCd23M6ZybmMMjPJgrW-j4_FZcG9V42RcoOSW0TpoeM8KG4QpSi5v-FdOFi3eeFv3B_Uka_qv29KW31stnWQDoeDxMIejyrgkhRlwUVE8qiKCpETGlV1LpNEFqmoIkaTmkhZEUTvMKL54xNGlEW0oCRGtAArBKut1vZNmQZz76ULyhpcc6U7J7EP3AVZ4WAxb1vJ3RqRLXxSMnyENd5qCSYaY60FXnHuxCGNV9LwUstVq1qplQHm0oe11ohstRaIbbHWr0dEd8oI3VUS0d1ouLOV_EMaRHcP6lV-N0G6V679-oDYNkrI2ZVtEdvOuyCa_qTFDybhJA_y27ENH5NPPrk8yUb5IB3Iw7Z4exYERkujA_cztyfZIFpgRFPARZSe2jDXTvLqA8t35YNHNIKppVkvq6xAw8eHb9vnb9h3JUwkx2XXYCdb6wJofQih7RnTHaK7RoVDV66FPU4SwX-r1tm_pQggofed9IjuMDcVHgUdUsVxf8AlFy_BcSEB-zlw8YKr7tgCBNmSNe7_PDrbOH7E3DXdUZrgB6F_b0qjMchTZwzkUsu9x4hmu86IXsFHMPzghjcgb4atwUdbdVpCr1McmgFB-pNYP6C_xc-2Dm_cSfw48FCmGQPWJzBEMxST2to9fCNbSHyCyTshhNR1XedZWcqM5bNs8R9jjjw6ZUKv0V-g2EV-OP62tz44yY_9tN9hZcKQBLlWJUyMKh8e_vnjuWthMtfermm0Jo0KiN6SdxoDKmTXwClacColJV9xeurMs2oM1__gptLSeUTzq2Ah8ARLl7B1nuMLAETzfmR32KtGmdruA6Jb-P1qVdV_LUYPvxYtZBLp_w4AbA4g4ohknAxkTfe-eq28BYpRTy7jM2bxBbOkyFKS436wu2Ggp1QcIjWmG1oExEv7eDn4TBGTy4ixKJnAjisvr4zLwHOKm17GZZkkBPMSVvB1cSl4TnGzBd9ECHItU_CZIubLiBUjeL8fdvt9K52zbg9b09UwFZvBFHOYoqaRqOfra1i8z-IgYdF_e2-5qaQbt2WuRad5mG3XX-f3eDIs8zvLAGygAquKXFJhaR6L36TSSCMdD3LcW2T1YG17JZsc8CY2F4u8kGnGivkif4az90TG3W__GNf-aLkOOy0h-oRNl9gijedKcHFQ5jzYUQMPjC5Fchfb4Og2SJNeR0-k8USPLejlUZr_mt7IaZyZ_wktAJ5oxUtacS5-Sct15k8zNp1Ova_oTW1XUozzWVJdbGtFJfKakc8UT1hw-M5YfknvM691y11YQzbhL-Ittn0gdbEn5lEWs2w-nbtH8DvdAa6ms5DJyaVGcQGAk0bZkk6Sid-g02f-5bl_Ml1DJclm05UvqCSRnE-Xlg0XH-P9YyL1_djqM7H_lhBAToROuzXnnFeVSGScxVBXtErLswDiwF1_1vcn_-xm3YOYIN_DSEFr8TkfKFmC1BHBR67ggpaXyvQXWTGcgtB2pkejxemaxyK-9lwFnykiXUZMihzv9-Cz78uc_YnYVRhJMSUcZYvxsghO2j76FyOG1tH3VE4N1dVfB4mVabuAvz9h5TFKbk8X5OQe0fzflAedl27FQ-DiMFzh6a5Wui8NoiJOSRYzRHdjtHWA-SvWPaTyI1p_Akqo-sqPMSPgEn5ZKu6sC44b3I41w5sKByiSas1Ng1erwF0jA2L3Jw0782Lsm5m0xKtnvJJHFVaQV3j1J8Wro2g7xO6NtK_Sebl6jc6anCWqB2REtr4rne2CMkDMIppzyNIS_jHjtQSrY6uVUAEba6BKxU5C7dbf2yVccHPbDRf4PrExRzQ_O3_qC_N37lrOu0KXvrD5WW8z73Yyqt5YWawwYvc46qnjFU56O-7ZqCHIfY-nEL1lw5K_PRkuftzSpSFaGuKlITkNQpoKVxaRLXyZ1P2coCgmp0cLfGc7XeEP2-HAXyTmWFv7gtgOke1NtWFVwQp-IzdRFtMiTWMS3Rw2Ja15EaU15zVleSI4q_KIsKKQeRUVeXqjNpTQhDCakoQSEq0rRisqqoLFCaOsrFBM5JErvYbkWVvX3PQl8CZijLD0RvNSaj--r4z7lrCVbGT_ykLvEKV9ZbyyZvXKNZQ0_eOL2_SVddk1HsVEQ_k-QQQVdP9o00dM7lFye3qqSO7_T48FN53Tm__8PWDU43VD_xUAAP__SzeJBg">