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

    <tr>
        <th>Summary</th>
        <td>
            SDAG uses deleted node (UNREACHABLE executed at SelectionDAG/InstrEmitter.cpp:1209)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86,
            llvm:crash
      </td>
    </tr>

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

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

<pre>
    ```
t277: ch = <<Deleted Node!>>
This target-independent node should have been selected!
UNREACHABLE executed at /root/llvm-project/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:1209!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@f'
 #0 0x0000559ce33b722f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x355b22f)
 #1 0x0000559ce33b4984 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fc570c5f420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007fc57072c00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007fc57070b859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x0000559ce330a8ce (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x34ae8ce)
 #6 0x0000559ce31fc2a8 llvm::InstrEmitter::EmitSpecialNode(llvm::SDNode*, bool, bool, llvm::DenseMap<llvm::SDValue, llvm::Register, llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::DenseMapPair<llvm::SDValue, llvm::Register>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x33a02a8)
 #7 0x0000559ce30938c9 llvm::ScheduleDAGSDNodes::EmitSchedule(llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&)::'lambda'(llvm::SDNode*, bool, bool, llvm::DenseMap<llvm::SDValue, llvm::Register, llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::DenseMapPair<llvm::SDValue, llvm::Register>>&)::operator()(llvm::SDNode*, bool, bool, llvm::DenseMap<llvm::SDValue, llvm::Register, llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::DenseMapPair<llvm::SDValue, llvm::Register>>&) const ScheduleDAGSDNodes.cpp:0:0
 #8 0x0000559ce309631a llvm::ScheduleDAGSDNodes::EmitSchedule(llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x323a31a)
 #9 0x0000559ce31808bd llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x33248bd)
#10 0x0000559ce3183e38 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3327e38)
#11 0x0000559ce3185b32 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#12 0x0000559ce1ad46d0 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#13 0x0000559ce2648c5e llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#14 0x0000559ce2bddba1 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d81ba1)
#15 0x0000559ce2bddde9 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d81de9)
#16 0x0000559ce2bde662 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d82662)
#17 0x0000559ce06d1c44 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
```

```llvm
; ModuleID = 'crash-x86_64-1.bc'
source_filename = "M"
target triple = "x86_64-unknown-linux-gnu"

@G = external global i16
@G.1 = external global i8
@G.2 = external global i8
@G.3 = external global i32
@G.4 = external global i64
@G.5 = external global i1
@G.6 = external global i64
@G.7 = external global ptr
@G.8 = external global i1
@G.9 = external global float
@G.10 = external global double
@G.11 = external global i1
@G.12 = external global double
@G.13 = external global double
@G.14 = external global double
@G.15 = external global i1
@G.16 = external global i64
@G.17 = external global i32
@G.18 = external global i16
@G.19 = external global i16
@G.20 = external global i1

define void @f(i8 %0, float %1) {
BB:
  %A29 = alloca i1, align 1
  %A19 = alloca i1, align 1
  %A6 = alloca i1, align 1
 %L19 = load i8, ptr %A6, align 1
  %L18 = load i8, ptr %A6, align 1
 %L17 = load float, ptr %A6, align 4
  store i1 undef, ptr %A6, align 1
 %B20 = mul i8 %L18, %L19
  %A3 = alloca i64, align 8
  %L26 = load double, ptr poison, align 8
  %LGV = load i32, ptr @G.3, align 4
  %A5 = alloca i64, align 8
  store i1 false, ptr @G.15, align 1
  store i1 false, ptr %A19, align 1
  store i8 %B20, ptr %A5, align 1
  store i1 poison, ptr %A29, align 1
  store ptr null, ptr %A3, align 8
  store i8 0, ptr @G.2, align 1
  %LGV11 = load double, ptr @G.10, align 8
  %L3 = load i1, ptr poison, align 1
  %L27 = load i8, ptr poison, align 1
 store i64 undef, ptr %A5, align 4
  %G = getelementptr i8, ptr %A5, i8 %0
  %L23 = load i8, ptr %G, align 1
  %B7 = fdiv float %L17, %1
 %A = alloca i1, align 1
  %L1 = load i32, ptr poison, align 4
  %C = icmp slt i32 1, %L1
  %C24 = icmp sgt i8 %L23, %0
  %B29 = udiv i1 %L3, true
  store i1 %C, ptr %A, align 1
  %C29 = icmp ule i8 poison, %L27
  store i32 poison, ptr poison, align 4
  store float 0.000000e+00, ptr %G, align 4
  store ptr poison, ptr poison, align 8
 store i1 %B29, ptr %G, align 1
  store float %B7, ptr %A19, align 4
 store i1 false, ptr @G.15, align 1
  store i1 %C24, ptr %A19, align 1
 store i1 %C29, ptr @G.20, align 1
  ret void
}
```

When using a build with ASan this reports the following issue:
```
==3571885==ERROR: AddressSanitizer: use-after-poison on address 0x621000037324 at pc 0x555562d71364 bp 0x7fffffffc5e0 sp 0x7fffffffc5d8                                                
READ of size 4 at 0x621000037324 thread T0 
    #0 0x555562d71363 in getIROrder /blockchain/projects/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:736:40 
    #1 0x555562d71363 in getNodeOrdering /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1811:27 
    #2 0x555562d71363 in (anonymous namespace)::src_ls_rr_sort::operator()(llvm::SUnit*, llvm::SUnit*) const /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDA
GRRList.cpp:2666:26 
    #3 0x555562d70dbc in popFromQueueImpl<(anonymous namespace)::src_ls_rr_sort> /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1860:9 
    #4 0x555562d70dbc in llvm::SUnit* (anonymous namespace)::popFromQueue<(anonymous namespace)::src_ls_rr_sort>(std::vector<llvm::SUnit*, std::allocator<llvm::SUnit*>>&, (anonymous n
amespace)::src_ls_rr_sort&, llvm::ScheduleDAG*) /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1878:10 
    #5 0x555562d7159c in (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::pop() /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG
/ScheduleDAGRRList.cpp:1912:16 
    #6 0x555562d49f32 in (anonymous namespace)::ScheduleDAGRRList::PickNodeToScheduleBottomUp() /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1
479:70 
    #7 0x555562d44591 in ListScheduleBottomUp /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1632:17 
    #8 0x555562d44591 in (anonymous namespace)::ScheduleDAGRRList::Schedule() /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:384:3 
    #9 0x555563077362 in llvm::SelectionDAGISel::CodeGenAndEmitDAG() /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:965:16 
    #10 0x55556306deb7 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /blockchain/projects/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1700
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1z4yiz_jXKDWUXAn1e5EKO42yqMrs5yeycvUshgW1OMKgEmvHsrz-FkG3kyGNn3uy8F5vKxGPUdD_9dNN8iWjNV5Kx6yCeBfH8irRmrZrrar0k2lyVin6_DhLY_8J5AAuD0jTABajWIMBzEOCbAN_MmWCGUfC7oixAYYBv7W8n_3nNNTCkWTEz4ZKymknKpAFSUQb0WrWCgjX5ykDJmASaCVYZRq2Srvufvz_dFje_FbOHW8C2rGqtGWJAgBaNUiZACyG-biZ1o_6PVbuv9oOXAVrcKMrumAzQ4rlTzJWcF3cBWtxLbZrbDTeGNdOqrgNchAjme7OPD7fF8y3QbbnhBhBQtivQsFo1BhgF1sbUOsBFgBYBWqy4WbfltFIbz_wQFNe6ZTpAC0AkBVxWoqUMmDUDVUP0GpSkejUNqdjUmX82pHoFtN1YYK4JTgOYPzZq1ZANIM2q3TBpLAhLhaqtlUptai5YM2HbWqiGNbZNELmaEK1ZY73XE9O08jVAi5LLDmcFJsqqIHVtFbWmbs1Ug8k2SyZEbyb6uzRkG-A5l4YJG2-t2qZi-wCHFthTKyWXK1ATrUGA0kUrO7bBo234RCRZWTgpUBJsFG0Fs1IDZSjtnUdjCv_KEjAv7iYBvp0Xd6CLX-tM7EPb61_ubFsLEVzaj04xCBCGAG4hhDCO84phXKYILUEXNFwEuNDftfvPY8Ol6cLw2cYlQNlBqCHfXpQ2DSObACUBugFcmgDlIEDZfxiMAM3gFsdxidAyQPkBd3iEO8qzCDzzlSTiNyKpsPqzHoZr1n1ew-7fXhHqFaXLKk5hFS8jBMHLS8O0UQ17aUzvhRtA2yx5SaKJ4LLdTlaydQ9qs24YoVOtprBDHEYRggO8eGAmRRWEJWgI1-wC_ZXVnHSaIwxhOdAcDTXDMotzQEp1EXJPM0JZnA80x0OOIckq9mExjQjLbB559pKBvXBZIZJ5uejXKNdivzzXrOJEuErrJeXz3DUVNh9LpYT_eRCbM6nZJ1IH-Mbv-4WIlg0ln9iKa2t6tP-9XKpTOr4qTrsR7XekzBAuhkoeCW_eAcTNKnbEfdxQwwQikg3Ckg7CAnOcVbkH57laM1vA5sWd41x7wemfDSLziVRrLlkXzllrx-q9YQ0xaui7L2YJWBKh2d5hJxOgVJBNSYmtaf_e6Lsnqu5ZRF38_r10gEpJbcDbxByfAbKj_E5wSP7r-f1hAxphgkMyGND5sM5mMCup77C3NLx_Zn1Y-qVjIal1vFs1Zh9aeFCUlXSP007x8AgnZjg7i9O1FkLMiObVTKjqVQ_Cs1-KdVny0eUTpQxnAy_CIy_iEqOzXjSt_EP2GbIDPJZkh2c7N6Y1aYxdhuTgWPXb9Lf4kI8vJDRKKLSKiFTy-0a1GkiyYbombrburP-VJfPi7rP6CMx_ZYnVsdM3DhL7IFESZVXMwEnNdpHtYRoF80PmRvSN44oGuEpKSxJ6uBaPtutuuf9uRB-RkohmYUnCQUrGx6gpyy9A_Um9rXV900cjpiwfIE6OELMk8QeRYCtSfe93Kgfs95v6kJu_AjdKEjTAPVg7wYSGVRSB3saezmpNmm5uLoZz28PDl083Shq23ZUpIaqRPBweSBw1dupcE54BZ_N-7s4qUNpttyf93iCcltV-c-g2oi9LLpgd_30H9ClAqD_46M4wgGl4LfaPe02tfJXqm_R3G2iALoJ3XRe2NayRRICVUCURgIfJQWIajstkngg6L4LHRTDyZKJxmSTyZOITiD2R5AI16ahMbRpPJjtvKh8VWQpFjM8gHBWjqi0F8-VOUO1bDMe5fqtrnPC3cuOkv5W7gPjwEubDceqHmRCe4n6QmOPsD4XQOPd73N1fypZcsm5VDNzhTMYzEKAYdmtCG077LezqVDpznWaz_TEYsE8L5PAQIVRFrAV0A4jgKwlCXyy8TCw5JxWg-KHXJRShdrihG5vCrvu42oee2ct6dB3SQweX2ON9op2V7sgG8BC0krLleQuzPkSb1paMHqSVdA76nOABJ0l00Jf5PqLkALlP5B5Frbi2c_tot7svHjUY7ZF35WvEUYsoPo9oz4fbW_haw3gkSifku8w5LZ71VPryP9R-oGInjk6rtyKyFcIXx6d9zQAc-IlOJOPdl77kjYSqr5wnYoW9UIWnojuwhdKxxD_VpXckid5mcTyeCm4qXTHDBNswaaz4cIB1HXd1xUeGTwzJu3FXZs6TJeVfD7XpIUz7MeMNreKSSvMQjqb9MTO-rzddD15taqCFsb1AuB-xvhyKPMmV2Y1vhHtpn4dZXz9b6xcPXZitnGla9iZ9rXaf3HHfbnqdHYBWdKl5cMylxZFqjI6GxkkiXAcXATiF3Q-zi1A4HsPo7Zj6saVsmIxhz9KZDPFhddlyqoREx-rfW6BchM9VqKF4PiwMcER_w4w7oHIzdDr_wQr7f9dMglZzueruw7ig4Bs3a1A8EwnMmuv-gkx391pLJYT6ZoW7u6_9_H2sGs8DPMdxGmZZ7L7cPj398RTgAhSUNkzrZyK54X93OzPQajYhS8OaiYsgUBIQJwfgNkGhzQycYhQBYkBdAbiN4zhOEE1DnESgrAHcpkv3U8UMAj1soRl4549z5Om2mAO1BJr_zUBn_AiOuzIBnyHYkQ9291EeQgy4tJXt_umPhjIb6UUpVPVarUm39-qvFPXJe8_-bvHQMH4F6o4H1wEuUpwEuIiOYIXjsGy3DpgN7LuxnbmT9Q4en54euDa7i9ksDANc2FnFh4hGIJ45xtFN9SL0S9O8aNWY86fIf0pu3uxSD627g9d_jgjn8JAOlCRJ9zGkA3t0QFpWlo5a1YtGbf6nZS1zZwM372To9hdGObF7_HzoVTTi1dtQnIu7z8NPcBCgTBvqHn5l1fHBtp8mezm3Ejgpeji9vzkC79w_B8r1HD2071Pz18UtzezHUQGJ_dEZ59UFo_OJrZ4YdZf6jw1XDTfffzpku7jvT-0_ko3-uOs0J3mI7MfREE0OnET5EqMLOHljoT_z49WrrcWf1U5gpoxRmz__GX9_4KlzMEot3vQoB1LP3yjOQ-uv7XuM-dehTXAXl6OZJBvB-XNx8e7HfmUUcBbZv0Ov8p1XGKYpTtBR6XznpdcHOzJ-U5Mn8ciwCeHBk4SyMr3Ek5-9FvslfoYpPD7LvqLXmOY4J1fsOkyyJE1inCdX6-s4i_ESUopomWUQR5DRPIcpJogt07wsr_g1ggjDJIzCNE5wMi0hrcI4iiqSLVGYkCCCbEO4mFrMU9Wsrrol-XWCcYiuBCmZ0N37fwiVpHplkrobrwDZHWqAUE9ad3ZuG-P5VXPd8VG2Kx1EUHBt9EG94Uaw6-d5cWfX6xrQ_u3A7pW_AGWn3um79B29_KptxPXPv4TXOf7_AQAA__9vlzKD">