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

    <tr>
        <th>Summary</th>
        <td>
            HexagonExpandCondsets does not preserve LiveIntervals
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:Hexagon
      </td>
    </tr>

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

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

<pre>
    See https://reviews.llvm.org/D127731 WIP: [MachineVerifier] Try harder to verify analyses

If I apply just the MachineVerifier part of this patch then I get see a couple of Hexagon CodeGen tests failing with `Bad machine code: Multiple connected components in live interval`:
```
FAIL: LLVM :: CodeGen/Hexagon/expand-condsets-same-inputs.mir (1247 of 1248)
******************** TEST 'LLVM :: CodeGen/Hexagon/expand-condsets-same-inputs.mir' FAILED ********************
Script:
--
: 'RUN: at line 1';   /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -expand-condsets-coa-limit=0 -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir -verify-machineinstrs | /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir
--
Exit Code: 2

Command Output (stderr):
--
+ : 'RUN: at line 1'
+ /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -expand-condsets-coa-limit=0 -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir -verify-machineinstrs
+ /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir

# After Hexagon Expand Condsets
********** INTERVALS **********
R0 [0B,0d:0)[96r,96d:1) 0@0B-phi 1@96r
R1 [0B,48r:0) 0@0B-phi
R2 [0B,0d:0) 0@0B-phi
P0~P3_0 [0B,0d:0) 0@0B-phi
%0 [16r,16d:1)[32r,32d:0) 0@32r 1@16r  weight:0.000000e+00
%1 [48r,64r:0) 0@48r  weight:0.000000e+00
%2 [64r,80r:0) 0@64r  weight:0.000000e+00
%3 [80r,96r:0) 0@80r  weight:0.000000e+00
RegMasks:
********** MACHINEINSTRS **********
# Machine code for function fred: NoPHIs, TracksLiveness

0B      bb.0:
          liveins: $r0, $r1, $r2, $p0
16B       dead %0:predregs = COPY $p0
32B       dead %0:predregs = COPY $p0
48B       %1:intregs = COPY $r1
64B       %2:intregs = A2_addi %1:intregs, 1
80B       %3:intregs = COPY killed %2:intregs
96B       $r0 = COPY killed %3:intregs

# End machine code for function fred.

*** Bad machine code: Multiple connected components in live interval ***
- function:    fred
- interval:    %0 [16r,16d:1)[32r,32d:0) 0@32r 1@16r  weight:0.000000e+00
0: valnos 0
1: valnos 1
LLVM ERROR: Found 1 machine code errors.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -expand-condsets-coa-limit=0 -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir -verify-machineinstrs
1.      Running pass 'Function Pass Manager' on module '/home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir'.
2.      Running pass 'Verify generated machine code' on function '@fred'
 #0 0x0000000005682ed3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jayfoad2/llvm-release/bin/llc+0x5682ed3)
 #1 0x0000000005680bfe llvm::sys::RunSignalHandlers() (/home/jayfoad2/llvm-release/bin/llc+0x5680bfe)
 #2 0x000000000568325f SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fa744fd9420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fa744a6c00b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007fa744a4b859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00000000055e9b63 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/jayfoad2/llvm-release/bin/llc+0x55e9b63)
 #7 0x0000000004a1fdef (/home/jayfoad2/llvm-release/bin/llc+0x4a1fdef)
 #8 0x0000000004959c5e llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-release/bin/llc+0x4959c5e)
 #9 0x0000000004dd5b38 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-release/bin/llc+0x4dd5b38)
#10 0x0000000004ddc378 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/jayfoad2/llvm-release/bin/llc+0x4ddc378)
#11 0x0000000004dd61e7 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/jayfoad2/llvm-release/bin/llc+0x4dd61e7)
#12 0x000000000311d3de main (/home/jayfoad2/llvm-release/bin/llc+0x311d3de)
#13 0x00007fa744a4d083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#14 0x000000000311a96e _start (/home/jayfoad2/llvm-release/bin/llc+0x311a96e)
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-same-inputs.mir

--

********************
FAIL: LLVM :: CodeGen/Hexagon/expand-condsets-def-undef.mir (1248 of 1248)
******************** TEST 'LLVM :: CodeGen/Hexagon/expand-condsets-def-undef.mir' FAILED ********************
Script:
--
: 'RUN: at line 1';   /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir -verify-machineinstrs | /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir
--
Exit Code: 2

Command Output (stderr):
--
+ : 'RUN: at line 1'
+ /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir -verify-machineinstrs
+ /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir

# After Hexagon Expand Condsets
********** INTERVALS **********
R0 [0B,48r:0) 0@0B-phi
R1 [0B,48r:0) 0@0B-phi
P0~P3_0 [0B,0d:0) 0@0B-phi
%0 [16r,88r:0) 0@16r  weight:0.000000e+00
%1 [32r,76r:0) 0@32r  weight:0.000000e+00
%2 [48r,64r:1)[76r,84r:0)[84r,88r:3)[88r,88d:2) 0@76r 1@48r 2@88r 3@84r  L0000000000000002 [48r,48d:1)[76r,76d:0) 0@76r 1@48r  L0000000000000001 [48r,64r:2)[84r,88r:1)[88r,88d:0) 0@88r 1@84r 2@48r  weight:0.000000e+00
%3 [64r,84r:0) 0@64r  weight:0.000000e+00
RegMasks:
********** MACHINEINSTRS **********
# Machine code for function fred: NoPHIs, TracksLiveness
Function Live Ins: $p0 in %0, $r0 in %1, $d0 in %2

0B      bb.0:
          liveins: $r0, $d0, $p0
16B       %0:predregs = COPY $p0
32B       %1:intregs = COPY $r0
48B       %2:doubleregs = COPY $d0
64B       %3:intregs = A2_addi %2.isub_hi:doubleregs, 1
76B       dead undef %2.isub_lo:doubleregs = A2_tfrf %0:predregs, killed %1:intregs
84B       %2.isub_hi:doubleregs = A2_tfrt %0:predregs, killed %3:intregs
88B       dead %2.isub_hi:doubleregs = C2_cmoveif killed %0:predregs, 0, implicit %2.isub_hi:doubleregs(tied-def 0)

# End machine code for function fred.

*** Bad machine code: Multiple connected components in live interval ***
- function:    fred
- interval:    %2 [48r,64r:1)[76r,84r:0)[84r,88r:3)[88r,88d:2) 0@76r 1@48r 2@88r 3@84r  L0000000000000002 [48r,48d:1)[76r,76d:0) 0@76r 1@48r  L0000000000000001 [48r,64r:2)[84r,88r:1)[88r,88d:0) 0@88r 1@84r 2@48r  weight:0.000000e+00
0: valnos 0 2 3
1: valnos 1
LLVM ERROR: Found 1 machine code errors.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/jayfoad2/llvm-release/bin/llc -march=hexagon -run-pass expand-condsets -o - /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir -verify-machineinstrs
1.      Running pass 'Function Pass Manager' on module '/home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir'.
2.      Running pass 'Verify generated machine code' on function '@fred'
 #0 0x0000000005682ed3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jayfoad2/llvm-release/bin/llc+0x5682ed3)
 #1 0x0000000005680bfe llvm::sys::RunSignalHandlers() (/home/jayfoad2/llvm-release/bin/llc+0x5680bfe)
 #2 0x000000000568325f SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f0e95827420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f0e952ba00b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f0e95299859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00000000055e9b63 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/jayfoad2/llvm-release/bin/llc+0x55e9b63)
 #7 0x0000000004a1fdef (/home/jayfoad2/llvm-release/bin/llc+0x4a1fdef)
 #8 0x0000000004959c5e llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-release/bin/llc+0x4959c5e)
 #9 0x0000000004dd5b38 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-release/bin/llc+0x4dd5b38)
#10 0x0000000004ddc378 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/jayfoad2/llvm-release/bin/llc+0x4ddc378)
#11 0x0000000004dd61e7 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/jayfoad2/llvm-release/bin/llc+0x4dd61e7)
#12 0x000000000311d3de main (/home/jayfoad2/llvm-release/bin/llc+0x311d3de)
#13 0x00007f0e9529b083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#14 0x000000000311a96e _start (/home/jayfoad2/llvm-release/bin/llc+0x311a96e)
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/jayfoad2/llvm-release/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/Hexagon/expand-condsets-def-undef.mir

--

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWt9zm7oS_mucF409QmB-POQhcZxbzyRtJsntnfPkESBstRgYBGly_vqzKzBGOCdNnNOetDceN2Ch3f1WWi2rTw3z-OH4RgiyrqpCjeyTETuHbynupPimJml6t5nk5QqazizmebZF_re4gm5kND295NFaZuKzKGUiRTmanpHb8oGseRmLklQ5ucMnD4RnPH1QQo3o2YieNH8XCVkQXhTpA_lSq4pUa0EG-kjBy4rkCTyTCn5U0Rq7ZSC4EhVRAJqTKK-LVGCvD-Ker_KMzPJY_Ad6VUJViiRcpjJbkW-yWpORS095TDaNHZCNBbpyWaeVRC1RnmUiqkQMd5siz0QGGmRGUnkn4FqJ8o6noASHqfEF7puv_nl-srhAhRcXny8JdoL7Fg4MYAsQ7sR9wbN4DOZiJSo1VnwjxjIr6kpNNrIkI-ZbzPHQK7j6Ixa05tjhX3I7v7kFzd4rwYEGgn7Oz8hr4DQO3USlLKpuOMfj1k-ML-Zd__cj3vEKJgCmy4KmkX1KCDw7X-cbAZcv_CHJeczgFkN1XIpUcIVPQpnpxoiMN7yM1iP7bN1GyLiss3HBlSIDX8l46HyU83EqNxIwnlEyzsn4ceMr6NFCKMr8CwRR-xMuGIhwOSQQxs0KGrcRKzNVlYqMvNkLhuBcpmK2FtHXn4ncnM_5vax0rOF0sn4amOWbDeghn-oKRDHwVQXJo8SQ34sKdkqeiIxdn__r6DhkHP7FENnCtclJAvm1y-JzLQxB0wg_J_-Rxcfb-fXnk4ub72Umreya4juMno7YjMYQTRRjbnoauBB8s8DFJoirgNCRQ-npuFhLiDOH4vNG3urkHb9sFfR6t73YvpW9Tld05M2v7OUjiPb6jthUd7M0TqvDCU02wyabGbLQqHFDf0K-CblaY76lE6o_MNOnlHaatUvoDZu5juETNH5fXPuKgmzmU0McGr8vbqM4CuL4G-LQ-B3xa7G65Oqr2r2an46Vy5PZh8XH-eLjze318-IFY_SyVzmQJC9JUmdRJSFek1LgsJOP-dWHhQIPoBTi0Vd1AaVDJpRR-8AM0yAMJ706ggZEVxmwhpsU55QUleCNtb1h7U3R-my5p1owFlDUYFyAaAE4SrGCl4R9Rmafrv7oC9jshQKO3whgaEBfKIH2ugI83dV1uq5s0PWELXkcy4EWdKaV9Wknaz9m5qtMUxEPVDeigbsVhRF7TMIeSuxmc56ZteD-jE5MkW3wvL6IJIPgGnd2URd8dDy1j7rKs3n04zIAxgMBQ1muyDbGek3tbOkCcn59_ekan53nNQyjZQ4kvMHzUrWjd3UxP7mZE1WH8KaEkj2sV6QURQ7FPewRzH0HPDM2HQRfAjKL0hq04h4hKrlakxCWVgXrS7QmbipoIHG9KbolReFRcFXmq5JvCC9X9QYnollc7_WBhaNzXWcZ7o20M1BCnW9D_wobLmHbthK63oemTR7XENxYaP3EEoF57QSzx_B-braXK0iwJccFZ6zJBne3nBG5Q_Wy2haL0GZTQu_p9jN1fSZim2jgeoekHlRzc1XCKtRhhnkdtPu7TiX_tsxhbAUHd13Ma9AXVx_0elGw4VK8b0F0mz5EaQ1Q0jARj6GEEbqRK9huf4BhTQXMNiI4HAjaMYCwARCbTRNimARTrfdNs5pERaHTEf7rFNmtIi_hnuMkceAwSpbLEmIlL8WyrFrMqQzh773vLl0H1lJW349XWd08KKo1jHk8UTm8ShGx5YAWA69jmOFuRGlISi4VhjJkG5nGGL2gLBrf_Ln40zvtfrKJDVn1XGkv4GYywV8PKhaQrxisFXnfNNxpNIAMeRNUPYnAV_2qs3ZIpiYSJ_SnAeFhrj19HpIqbkZDS2kjPhrpRbNrTM9UBKHbj-Ym6y4TXvF0qXO0Ece335rFk-F61XEc5nl6ePw09o358PoAHW4lsUgO094KG9p9Q3swDaJpf5m01ds2zWGWa8elzj5l22ZjSHaN7sHj0AIxkAYG0jiehgC-Z_YKwW0z8M_A2EDoMU22RQcYI9t7DsZL_aYwEG6bXoUPzRv4rAE-1xJeD18qVjx6aLP3DuliU6Qd2n8eJYIwUBoZE0DHNlQyGy6zw0y0GgwT9iC1xNS3IZdi7liqisOKb-09K81Eqt5mu-ZWP9R6dM6xHSzC7Z15Z-AhD1xBGsMH-4g6Oh939ESTsxoOaGTPICOCoD3Hd72EemxTVA-ToUzUUkzIFOkK-hfiRTrq69X07-sIaki0YyjzRdKjp_23QU8b0H5vcvpH7x_MWf51uGczBH5L5vkNTP3bJZYfmf83QSs_RQs_izw-nBf2TaXPJ38bBskz6VdkkJ5H_va545aT8hpAHZ2MHK-zw2i3TX7ThP6xrV0Q1cwVks8MaWC42nhFNvmCmp-efcePh_Y91xi5vuY9TXssONuHbe3D3rHVfqMcYbLncud2jzt3Xsid_xrkd0cvYTNZdEx3QYmuTqcd471t2DLf8bbByOAvo9Fj-jfs-UuI86d48H3KHOvkOK_DVOz1jukeaz5kvnusOZtIVYdLWOp9hT0C3eufBOhU2BNL830coLxKymToPKrcUed9sr7h6Xsc_6OQerqrp3Xv0fK-b55NPGFgxpbRJodZTnoKh6b0dEvY7MlIVk8Nol9JEeM7hOyoo9_hjOA9Hx-ej42DEMKI_X4Y8uuWrG_0rGO4cX0_6fjdTzqoCKY-8370SQeaYSF_AycdGkkQvJ90vJ90tEjfTzqege_9pOP7Jx1NagnfTzp-pZOOvyXq_ulzju7_5R_Fx3Yc2AE_qmSViuMWW0MDbllAEudCkSyvCGwgFWyjhKYoFu2WSh3VZXpsluYwIOs6nMCI7wZiMDxSqVrg-3Pq0ik9Wh9z3xFRHHketTzHmtoOlBRCJAkPnSRx_Ogo5aFI1TFsY0aMYVUvMtzHdOPJRtOzI3nMKGPUtaYWYw5zJ45ju-HUC5LQY6HvcKj9BKyCtNs5HJXHGhpuJ-BhKlW121YcQb6A974Q2izo53W1zsvjdvKPtBfH2oW_AP1Km2M">