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

    <tr>
        <th>Summary</th>
        <td>
            [NVPTX] SelectionDAG Cannot select dynamic_stackalloc 
        </td>
    </tr>

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

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

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

<pre>
    NVPTX will crash on Cannot select a  dynamic_stackalloc given the following LLVM IR. 
The bug can be reproduced on the latest commit `e723c69b9` and LLVM14.

You can find it here: https://llvm.godbolt.org/z/ea3TbvTqE

```
; ModuleID = 'PoC'
source_filename = "M"

define void @f() {
BB:
  %B = lshr i32 65536, -2147483648
  %A = alloca i8*, i32 %B, align 4
  %G = getelementptr i8*, i8** %A, i1 true
  store i8** %G, i8*** undef, align 4
  ret void
}
```

The stack trace is following:

```
LLVM ERROR: Cannot select: t6: i32,ch = dynamic_stackalloc t0, Constant:i32<0>, Constant:i32<0>
  t3: i32 = Constant<0>
  t3: i32 = Constant<0>
In function: f
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/peter/aflplusplus-isel/llvm-project/build-debug/bin/llc -mtriple=nvptx PoC.ll
1.      Running pass 'Function Pass Manager' on module 'PoC.ll'.
2.      Running pass 'NVPTX DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x0000000003a45a1a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x0000000003a45bcb PrintStackTraceSignalHandler(void*) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x0000000003a44216 llvm::sys::RunSignalHandlers() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000003a462f5 SignalHandler(int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f44398a2980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f4438792e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f44387947f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #7 0x000000000396ca74 llvm::report_fatal_error(llvm::Twine const&, bool) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
 #8 0x00000000037bec8b /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3765:3
 #9 0x00000000037bc222 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3667:9
#10 0x0000000001e0e299 llvm::NVPTXDAGToDAGISel::SelectCode(llvm::SDNode*) /home/peter/aflplusplus-isel/llvm-project/build-debug/lib/Target/NVPTX/NVPTXGenDAGISel.inc:86754:1
#11 0x0000000001e00944 llvm::NVPTXDAGToDAGISel::Select(llvm::SDNode*) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp:505:1
#12 0x00000000037afdb9 llvm::SelectionDAGISel::DoInstructionSelection() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1153:5
#13 0x00000000037aee0a llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:933:3
#14 0x00000000037ad7dd 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/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:685:1
#15 0x00000000037ad27b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1591:11
#16 0x00000000037aa81d llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:464:3
#17 0x0000000001e004e5 llvm::NVPTXDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp:46:3
#18 0x000000000281fadd llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:85:8
#19 0x0000000002ef9146 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x0000000002efdf72 llvm::FPPassManager::runOnModule(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x0000000002ef9a19 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x0000000002ef958d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x0000000002efe251 llvm::legacy::PassManager::run(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x0000000000d1ad70 compileModule(char**, llvm::LLVMContext&) /home/peter/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:737:41
#25 0x0000000000d190f2 main /home/peter/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:418:13
#26 0x00007f4438775c87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x0000000000d188fa _start (/home/peter/aflplusplus-isel/llvm-project/build-debug/bin/llc+0xd188fa)
Aborted
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWVlzpLYW_jXtF1V3gcT60A-92BNXjROX7Zu6yUuXANHNDS0REF7y63OOgGZJT9kz1zOOyw1Cy9H3nU1CRCp5Wf786-3Df8lTluckLnl1IEqSDZdSaVKJXMSacEKSF8mPWbyrNI__4HmuYrLPHoUk-iBIqqDiKZN78vnzrzfk-m5BZtZ2Zq0eoDGq9yTmkkSClKIoVVLHIsE5cGTOtag0idXxmGky8yzhUxZ7YRRCmXCZGIm2s2jkNdffVG0kphm0w7CDKMWMrchB66KCwoxewX-ePx4Xe5VEKtcLVe6h6i_4Cc4eoseHPy-HEmGy9r95ZGtyA0Bzcb0lMwY_6t-qDVyb9krVZSx2aZYL0Ipou9Ab-A2lJgIQCvKosoTMHCud0WBGQzLz1037eo1gTZHAeHdtBOXVoSQZo8RzXebN6IbMqe34TsA8Jxj0XpnexhScZCB5hX1xIIrCMs-zvSTOYMwnM2YvNNj1KKQudDkY2hRWRripsIkua9GNr7QqxajXp-EwrKslcD4zdSm0UUOrHX97Xu0nnzFeBpPzGCasev866evseON8l3d3v9yhN4xcGCu0h1dQEACMD0YTZ7xaW4h_oyTUSRyHA9jGmrHLLze0NDVrZzDC-65f2-kafLuWsc6UxL5pU3v7-XJ1f0mqOsJY4SawIKJUqYlWE-ffZ_pQRwuIqzYS2tscAvB_qA96lVVVLSoomDDLZJzXiTBB2WSBCFRiLNDG3r2xSVIfi5MVrAUxf7el2pf8SHi5r9GtEAf4x9VBHQXcCvC3Eu48zYu8rvA3z8Au_8QU1VmezBMB1PApk6ZLTOZHXWZFDlG-lY-FfiYQjYs8b1DYLYq7WkrMQQWvKozYq1aF5BYrbrjke4ThY-45muhu4xolUb-lSb8grcmS29WnOZgJbiBVAy1JrsGAZd3MdG-cDc3WTNNZEQU0GaDNIFDBLGI9W90f447LbU6MrUC_bFW9VE3htsykNtp_QHNAFuk7lfxpp2B-wcHCJllAX5NkvkH7nZ9kEVzv6wJdC0r_kdkzVkBE87xagKfAxK4XwtW2ezr2lE4UR2SCvZHxEzhcjpgCkxMwdXx_wB7D8B_gpRO8DrW9c-oHRxjBrro0_n6AO6RxgbFlW5gh3B4pmyD1aOqSqSp_kN0dyx-r0WnB-anjsDDgNAwsstuVwiwXO0hORl-t9OfA23nOPM9k_Tzfy7ppKPQBPDhZVGoB2XdtPdsoBej007jDaQI_pCLwScmBEOnyBqY9EBbP699r9nR_eqQLiDp6VRkeUFgs8OmlSkSB6a9uaELFo0EDyOBuRC-Mp9twsXok3gSJ46c24ZEyTN-GRCeNNswoM0kwmcQfmTz0Yu47A-ds0v4u5ZrnO1GWqhxlhYcn3HfEuLS0WSFSKn9n97jEaY3_QZrsXJe6Y9cNRjz8SMRB9P-D2KhEfBK4OJwSLmTkyeM1PLSwmO8hLtbjCie4YkrpQL9TOcNanHwD-1VM8gOd329_hoZ2K1VL9DbY5sYHXnaGGLe8V7x-tS48DyO4DS3M26N1yBaWoGE40IVZ-EDGg_qCMr6khm8jN94CNBwfYGMhsNFg6e7AuqPW5KbA812nz07IzZ5ws0LHeSu39-U1Mtp5QgigA9Nay7XcMaHxquXzNInCVx13qwablMEe5X3Wsa_1QNt2BwsckmITUkJY_FVS7bQrmVzCftjM-DF8Qsb65IJ0nAmdxE-SNyaXNa-yeA3vIX-MvC_Ls0rvMqDDYVWFd4VpUyI0z1pJEvDvVIEzVKOuAyfAVGTe7eCewupuCmY31rzmnOpMp6buXwanWdK8DzG5F0zC0p2anPrRG02-yvPe6tXI7Kc3mH4p_4h4dUN7sNdHut6ELg_s1z28rOUv8obHB9icdMxGdP_R9jF8Hc8Zx7M_XUQc4b6-iHwU3TevLY43pjnaq9HATvkobU3g4kv1gOhZht_PkmfAtKxMZAY9q9FOj4o0tJ3ha97VLY7tDgd-MJ_rO7h8FnsevwxQdGHnMAtutLcQtSZcktSnb-DSHGWOfa-t-iE8fPPm7fU87KlNuI0oAi6VfDmquiJ4rFoV5rQjbBH_O8m5jjsxEp2Sc4NhGOVGUlMeyLs-Fn3e-Cg2LnMnlmITMoK69utkPpyI7fl0lNzoaE9mJTZsyiz87FBkuTi5EL6tdYfZw_0OHixvlNTi-R0WYQ37lso8xs21xewzfC9z-lWWuhPMoZVScuSZ_B7TO3aAihuobHLQ4btx4JPdDk8y8MC81LsOy1sOPeIKD3vM2UtTNI1GjjkBYQ6uulY_vT9hHwQpJ83E7ZHSex0vmyOnZoLTmdMKj2ZE98Gi-85wIZa259luYHmOc5EsWRKykF_oTOdiOXPXzZLrbslwazH5mHbmm8NFXebLbz_Ad30WBheHpUt9l7HU5YHlU19EPIyZG9ksClIRwC7tIueRyCsEOqNUiidiROBXK3d7kS2pRakVUN_ybMthC-F5Fg9cwayQiYCLmWMJsHi-MF_WVLm_KJcGEqizgkbc-Vd9IwQlnnQYvaB8XuuDKpdbrvlGlWVdgHovDIClIfA32YrB0A">