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

    <tr>
        <th>Summary</th>
        <td>
            [RegisterCoalescer] Assertion `ReadI->valno == Seg.valno && "Cannot overlap different values"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:codegen
      </td>
    </tr>

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

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

<pre>
    When RegisterCoalescer try to merge the following VReg

- `%12 [32r,80r:0)[96r,240r:2) 0@32r 1@80r 2@96r`
- `%17 [240e,288r:1) 0@48r 1@240e`

will trigger assertion inside LiveInterval.cpp. 

```
llc: /llvm/lib/CodeGen/LiveInterval.cpp:1218: void llvm::LiveRangeUpdater::add(llvm::LiveRange::Segment): Assertion `ReadI->valno == Seg.valno && "Cannot overlap different values"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /build/bin/llc reduced_ec.mir -run-pass=register-coalescer -debug
1.      Running pass 'Function Pass Manager' on module 'reduced_ec.mir'.
2.      Running pass 'Register Coalescer' on function '@main'
 #0 0x00000000030c5de8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/build/bin/llc+0x30c5de8)
 #1 0x00000000030c350c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f7513bbfcf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #3 0x00007f75126b5aff raise (/lib64/libc.so.6+0x4eaff)
 #4 0x00007f7512688ea5 abort (/lib64/libc.so.6+0x21ea5)
 #5 0x00007f7512688d79 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d79)
 #6 0x00007f75126ae456 (/lib64/libc.so.6+0x47456)
 #7 0x000000000239a466 llvm::LiveRangeUpdater::add(llvm::LiveRange::Segment) (/build/bin/llc+0x239a466)
 #8 0x000000000239a949 llvm::LiveRange::join(llvm::LiveRange&, int const*, int const*, llvm::SmallVectorImpl<llvm::VNInfo*>&) (/build/bin/llc+0x239a949)
 #9 0x000000000264148f (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&) (.constprop.660) RegisterCoalescer.cpp:0:0
#10 0x000000000264212f (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#11 0x000000000264221d (anonymous namespace)::RegisterCoalescer::coalesceLocals() RegisterCoalescer.cpp:0:0
#12 0x00000000026450dc (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#13 0x000000000245c50a llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.77) MachineFunctionPass.cpp:0:0
#14 0x00000000029718ae llvm::FPPassManager::runOnFunction(llvm::Function&) (/build/bin/llc+0x29718ae)
#15 0x0000000002971ad9 llvm::FPPassManager::runOnModule(llvm::Module&) (/build/bin/llc+0x2971ad9)
#16 0x0000000002972675 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/build/bin/llc+0x2972675)
#17 0x0000000000491ce1 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#18 0x00000000004929c3 main (/build/bin/llc+0x4929c3)
#19 0x00007f75126a1d85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#20 0x00000000004870ae _start (/build/bin/llc+0x4870ae)

```


```
# RUN: llc  %s -o - -mtriple=riscv64 -mattr=+v -run-pass=register-coalescer \
# RUN: -verify-machineinstrs | FileCheck %s

---
name: main
tracksRegLiveness: true
body:             |
  bb.0:
 successors: %bb.5(0x40000000), %bb.3(0x40000000)
    liveins: $x10, $v8, $v10

    %32:gpr = IMPLICIT_DEF
    %10:vrnov0 = PseudoVMV_V_I_M1 undef %10, 0, -1, 3 /* e8 */, 0 /* tu, mu */, implicit $vl, implicit $vtype
    %11:vrnov0 = IMPLICIT_DEF
    undef %12.sub_vrm1_0:vrn6m1nov0 = COPY undef %10
    %12.sub_vrm1_3:vrn6m1nov0 = COPY %11
    %12.sub_vrm1_4:vrn6m1nov0 = COPY undef %10
    BNE undef %32, $x0, %bb.5
    PseudoBR %bb.3

  bb.3:
    successors: %bb.5(0x40000000), %bb.4(0x40000000)

    BNE killed undef %32, $x0, %bb.5
    PseudoBR %bb.4

  bb.4:
    successors: %bb.5(0x80000000)

  bb.5:
    %1:vr = IMPLICIT_DEF
 early-clobber %1:vr = PseudoVRGATHER_VI_M1 undef %1, killed %10, 0, 0, 3 /* e8 */, 0 /* tu, mu */, implicit $vl, implicit $vtype
    undef %17.sub_vrm1_0:vrn6m1 = COPY killed %1
    %17.sub_vrm1_5:vrn6m1 = COPY killed %11
    PseudoVSSEG6E8_V_M1_MASK killed %17, undef %32, killed undef $v0, 0, 3 /* e8 */, implicit $vl, implicit $vtype :: (store unknown-size, align 1)
    PseudoRET
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF1T4zrS_jXiRhWXLH9fcBECmUO9MIcKczj1Xrlku-PoIEsuSc6Q_fVbsk0Sh8Aw1O5SM0ksqZ9-uvvRl5kxvJYAlyi6QtH1BevsRunLK7ivLwpV7S7_3oDEK6i5saAXigkwJWhs9Q5bhRvQNWC7AbxWQqifXNb4aQU1IteIzIfPGUYxQTTyKUbRVUA1oouUaBTMCaIZiq6y2DXRsG-jiGaYoJAEVGMfhSQlGlMUEjcqJieQiYOkIQEHkKYOwH8FCNMBoO9-tRw-f3IhsNW8rkFjZgxoy5XEXBpeAb7jW7iVFvSWCa9sWw8f2zqo4V__KESJgjlGdCnEtnFfvEB0uVAVfAOJ6PIUzVGkfuqMtopXuDcL5iiYu5ErJmv4q62YBT20sqpCND0zanh8hLoBaV0mgzme72NBMVkBq25nKLjZMiEVRsE1Cq7xI9Te2EBjRGOMKF0wKZXFagtasBZXfL0GDdLiLRMdGEQpogleMy6g8oa4H-5u5o832HRFwy1muOhqrKFV2jpdbKxtjSNIl4gua243XeGVqjlKk9g2s1arf6C0iC65Mb2jJWaywlyWoqsGYZWamQ0uWPlsNSthdP9oWfmMq65x-RyaiIdI9qBVrVmDma47lxczFqfouKjcN5e98xJrqLoSqhxKr-Eaz3QnZy0zBgXXepT7rNzrfVZB0Y2y9p2jVSelU7szwYgmy06WfeIfXMM9k6wG7bKmJG5U1Qlwo6ZOEU3GcOg5yNdZh_fTbsRbv_pCNEEhaZgLKhmQMKIBweSFvP4FpIwqSI90ZnZm-PGgubR9Jn-41E5kptnPXBmrgTW9ThaY9yrDiKbn8onoFXkZfTkx7sn4J2SCiJT4kdeSiT-YrISLKh2xh2YzThPS_98D0REoWSeRHxTFulwTnOcajFUacm1HaoIXcTh8t3ajgVWeUR7pCfq0XJMJveAYlcZFxNZrrBk38BaudEBxDxQCW68nQOEUKE2BRZgV6hyvIyDqA4smQNEpUJVkOJciF4pVeaVcub1Sicojv0CukmyCHE-RGYRR_HGUSRjFE4jkuJo0yFgYx_-5JexDcY3eJnTSUzpZmJ2jMzz-oxzgWSJ7ieNSSWMRnZ97Plg-NkyIJyit0rdNK1CwOPQ9fb-Va-VMgpse-NdxZeG0Utkkrjj0w3TtQJhUcteozmDJGjBtP2uzwe2bTfoQ9EK1u0ng96zccAm30lg9xlYoJQ5svT7sVqvWi91Wm709A7ydpW62kxPm1KdfZV6qdvfa9LfSz3fcFeI4is6yQsBca7ZbwXpShNMIXSk-HYR_GgT1qy8HMTzeqZIJ0-vg0zToCY2IVOUXaehO_inHnLxuVecUceiLf4NoMCEaRmVEGH4X-6HfZfesztI54eEU2TJtvSRxj2cAzxMLJ8SyxE8ZHBFbPjjT1836tym9P6UHT_sp7ahEp1RYlX2Cyn1_dpiWamz6FA1WZRMa8QkNGifREQ0BNSt34_HgQGhY40ZSXybjfE3ITHYTEmZ-CT4uVdNyAfvAyw0b1qiTJfju7ul-oaSFFzu6F6I8L4P0xA_NygC7ffRDxsO4CeHsZAf1qzTCee52zdxYpm1-hHp-Tw1YlU6yQMmUXZoQBniA-5hfP_IAde568lEXDfDqr-_ugOzOwxjRyOCZwjM8a6zmrQB3FOam3MYhnjXMWu2uEPRq-6vDMooWb1zMtqD5ejdrhqnL3bpsMEoWeMkFLDZQPvcMJjfH2Wz44ZY5B9KfdPsWdxd4Niuo3RYuoV9QsNUdDN3u6upajv9QMrLCuCg8sr83YNOVJRij9HhZiIrCixBNyUs41sTlmC7GruBN14iKseBbF9kAE774ZLAKt-nrD39Sl54WjQKKgnndandFw7f3D3e3i9sf-fXNcjLKd5S3Wqot6Qc-GOgq9XT_lD_lt_m9jztZwXocSRe4_5j57jPA_UVsjiHF_Txa9gNeW23nHpvuqI83reAltz1p8abF7lqYkvOn5M5HcWBIPdMV-VY3fj6GFTf-3nrx58P_T8KZuDqyDd6xHRi9ZxX-jser7zeHjoCOhXwhB0FEh8FDTa5We6lMit23BEe1_03lheeVN-X6zIWA6suUwzeUw09STt_j1Y8IppIf5PKeVIBpsZuVQhWFW04mw0fZr77Nf_xxs8qfTqTvYhxTMJ0J5H8wEQ40knP6PijtiOE0LUd20cd2_mkJnx4fb77FN2n-lN_7-f388f-OhyeO-okoTqQSbn-VqE8kAw-bs9u4-ns57uSzVD_lzPB_gbNggtcS-5N1cwhgdfNjaPI872THuqgugyoLMnYBl36cpRmJCKUXm8swjhhUaxKuK1IwWhVpkJQs9OMqpBBl0QW_pMSd6AklMQlC6qUAhPppRtJ15DNIUEigYVx47mThKV1f9O-iLhOf0OBCsAKE6d-OUjqePUpVQQ0SUYqi6wt92b_KKrraoJAIbqw5QFluRf9u9e2xPLr-r76tu-i0uPz6a7g--n8HAAD__xnBSJ8">