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

    <tr>
        <th>Summary</th>
        <td>
            [x86/SelectionDAG] Assertion `LRegs.size() == 1 && "Can't handle this yet!"` failed when scheduling
        </td>
    </tr>

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

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

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

<pre>
    ## Description

The follow code causes assertion failure `LRegs.size() == 1 && "Can't handle this yet!"` when targeting `x86_64` / `i386`.
The problem doesn't exist when `alloca` is in the previous BB or when `i64` instead of `double` is used.

## Minimal Reproduction

https://godbolt.org/z/4T3GGfhdM

### Code

```ll
define void @f(i1 %0, double %1, double %2, double* %3) {
BB:
  %C = fcmp ugt double %1, %2
  br label %BB1

BB1:                                              ; preds = %BB1, %BB
  %A = alloca i1, i32 2
  %G = getelementptr i1, i1* %A, i1 %C
  %B1 = frem double %2, 0.5
  %S3 = select i1 %C, double %1, double %B1
  %L = load i1, i1* %G
  store double %S3, double* %3
  br i1 %L, label %BB1, label %BB2

BB2:                                              ; preds = %BB1
  ret void
}
```

### Stack Trace

```
llc: /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1565: llvm::SUnit *(anonymous namespace)::ScheduleDAGRRList::PickNodeToScheduleBottomUp(): Assertion `LRegs.size() == 1 && "Can't handle this yet!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./llvm-project/build-debug/bin/llc -mtriple=x86_64 ./crash-reports/dag-isel-x86_64/1.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dag-isel-x86_64/1.ll'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@f'
 #0 0x0000000003b0f2aa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x0000000003b0f45b PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x0000000003b0daa6 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Signals.cpp:104:5
 #3 0x0000000003b0fb85 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007efe3602c980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007efe34f1ce87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007efe34f1e7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007efe34f0e3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007efe34f0e472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x0000000003756e32 (anonymous namespace)::ScheduleDAGRRList::PickNodeToScheduleBottomUp() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1566:20
#10 0x0000000003756406 (anonymous namespace)::ScheduleDAGRRList::ListScheduleBottomUp() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1630:17
#11 0x000000000375618f (anonymous namespace)::ScheduleDAGRRList::Schedule() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:381:3
#12 0x0000000003765c41 llvm::ScheduleDAGSDNodes::Run(llvm::SelectionDAG*, llvm::MachineBasicBlock*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:64:1
#13 0x0000000003872d1f llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:952:3
#14 0x000000000387148d llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:688:1
#15 0x0000000003870f2b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1603:11
#16 0x000000000386e4d6 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:467:3
#17 0x000000000102887a (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:191:7
#18 0x00000000028bfd55 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#19 0x0000000002fa7ca6 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x0000000002facad2 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x0000000002fa8579 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x0000000002fa80ed llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x0000000002facdb1 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x0000000000d3dd1c compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:737:41
#25 0x0000000000d3c0c2 main /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:418:13
#26 0x00007efe34effc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x0000000000d3b8ca _start (./llvm-project/build-debug/bin/llc+0xd3b8ca)
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWdtu4zgS_RrlhbAhkbr5wQ9xbtOLZLeRZAaLfTEokrK5LUuGRHWS_vqpImXr0sEk05N0OnAs8aKqc6qKVaScVfJp6VEGH3KuGlHrvdFV6fnnnn_qvu-3iuRVUVQPRFRSEcHbRjWEN42qcS7JuS7aWhEv9q9v1aaZN_qb8mjq0QXx2Dl8SEA8GsMHLvSMlx5NDNnyUhaKmK1uyJMyHg1gEGSQh60qieH1RhldblDsYxqv4xDHPHqJHZqlMVzmPcJ9XWWF2hFZqcbJV4-6MU4YTOVAQHAUAeo0yLfPqK-6ahuyWpGqPk7VTpUuG6O4JFWOnbJqQX73PBhAzoc26ix4o0u94wW5VQBHtmJqyq0x-8ZjMP0SPptKZlVh5lW9gdY3-A_v2dVVvpU338tG8Wdg_tFI7LtPUbgOqXJdKvK10pJ4oZ-DEzSaPvI9ekYcBWwG4ybtmx49xR5mfZesnNjVCjHbW4KjZ-hWkovdnrQbM5VrBXaTs5oUPFMFdq5WwRA8NhlM-Tt_Hluh02RjAXQyncrVagDw1I47lxNtp2hGCR1MubJTIMQURI0qzd7Uh5lBZ4RT17KMB0-uAke_ttE2sqE_jwYT75id2IAGYY6C_soRBwvZx6_t00UFITgBdnWY1ZgK1l3__B17xpO9KxyEa5wz8sq4Tcdeom_jpQ5FrYwNz05Hcj6J5OcD_85w8YXc11w8H_-uWRQCscI62lY7hRdV1k9w5XmxL9oG_2ca3AFdRfF1N4NF-n9wTdfEi87gG5fZlYIkcnlnXQeL-Pz0Cptiq2RbKGjd3l5DdpmL_R5UBlEcoWYrBVYKO737vdQGkACHlJdV-bTDNFPynWr2SIIuunlTia77sxZf_g0o7qvDhFVlTLX7fe_SKio7PebfN8m7NLF5_JjXPl9fnN5dkKbNdsCEk6zdgPP2VW2IqcgkkWmzbbO5qHYDU44NrJumVQ1mb9AOqVUUrVQ2CYuaN1uSgYMN-rdT7zwu293-mHow2y8-19Wm5jsC1aHFZYsgyPx7fVmrCzmTCmBjS5d2iiCznYESB6uDnbuiYh-2GGaOHoKUfGMDZdYVHnoZzA85NkAYt21ZYm3aQxUE2yaXbWnjhHzGjhte8o2q0abQtavQgTjrb6jCyVYdfU7df9OYQMjMPHYBF_IJKlXtqg05hmynPT8gg7YrCUm3FmFh-cR_9A9_LPNzyvkgipunpovHWpfGusStQZr2k2r-sK5Av-I7G2uQp0pjQ_CfrsO7do9WgjtYTY_YoTclL5o5hA8ojmJcB0HQ0wmmdMIoIxPsTsZvdg2Ah1KbjHCdvj_gmMUIuMdLJ3gl5_Fz5gf3j2A3h0X-doAPSLuE5odo4B4pm1o2SyMyNeVP8nvoJ2Mzhh24ROWKxT4Vi9Qn63WtbHlc15iI06N0t85mhS7bx9mmbN3A3mwhguW8qeawV1r5jwEFKZhqj2qioZowD4RKE1JzIEQOCQdzIQgTs7M__vXwv-zYpHNYdfSysTzgZo6ZANwr1R5zQOtoQsdXiwaQwdWKnttIx52S3yOJJ0hUkgeEZ5Vl-jokRjpr2KesknSiJBkr8RXLOVjVbfvXWCvWGX89d_fc8capXIxVplOVYUJf4TuBXout15gPj4y8thhFbhLFilmZ71CVP2bngTmF-scdU-BPCYd-_IOE8e7XoRozHy9JTzWYUg3S_AepHro_jB6z64_15MbFIYkjEQbDHWYv5-4co7KvFaPyPFZvjzT94A0XWzgwrnijxQoOS1_eqhK-hn4Hu-Mfh31SR_rjipMmVAY5eZ7WJ2i43k7taSkvYNdqNb63Oyc4OjaLiI69GU7oBGEqX6TjeofeGThWFxA8a21UzaHMeexsOiSVgSTtekrAv67sq51mNHWwdcTQgHuF1xzKrb2x2yN2Meqzk1zfLwYnq6rCbkI_wOVxmo4jOJq4HHbX2StdDkfZ3uvNyO3Hk4YA25mPIhvEPhtsvpFuPKYbq1DGL9Kt2_I_ZZeFDsxGdL8b-xi-YZyM13MyZBv4NE0T_lLpgVMbSL2vfgkL3Nv3q3ADqNw3YjrgO7h5gUVpUHHTIW2aZrmMou_ryQErHoYHLJ-l936efQbMITsjq7RnNdoj0pwnYnQOu_yMzx4O9T-Zz6db-LpWGy6eBigO_gntnoj2gUn9CRfBJX0Fl5uq2_0MnNl1_RQeiT0axz2PYMIjjZLFSwvs5tckF4XRxEl0Ss5Xw91AYSV1h45e3qfdvk8aH8UmYtHEU2wacTILXibz4USCOBnv0ehoj-ZLJmUgoMzu9rpQxxASW17bXfJkK319_cfNWVUa9fgGRdnAPqaxTeG-O8wJwzIU9lWXRhPMwheU7Lgu30N9GNgtzsBk4zcRKs9FmpD1Gg_l68bw2qwPWF7zjkA0eKK3L0fcrR20cuz7AhbiIaE_69Jkwj5LBSdOMeaK178Xti8P3PPHtweTXxdO1DKI4zgAEGF6IpdMLtiCnxhtCrX0otWjraOj7UR0_tZv6WO_e0vvfqxs3GlKl5uTti6WP_5WPkrDKDrZLv2IRkmsIhmkXCmZskBwwZQK4GitQqZO7O9EDfIFOKV6IFYEQovOT_SS-pQGfpBS5idgfypllMYhpyKF1SSZF_oKAqKYIw783fOkXlpI4I4GBvGg0PSDsGb1plTWvCift2Zb1cvf-LcngL49sbqXFvufyO9Mhg">