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

    <tr>
        <th>Summary</th>
        <td>
            [NVPTX] llc: LLVM ERROR: Cannot select: 0x6019bc223ca0: i64,ch = stacksave 0x6019bc1dbbd0
        </td>
    </tr>

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

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

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

<pre>
    When run on the attached .ll file, `llc` crashes with an LLVM ERROR:

```
❯ llc-18 -march=nvptx64 repro.ll
LLVM ERROR: Cannot select: 0x6019bc223ca0: i64,ch = stacksave 0x6019bc1dbbd0
In function: _Z6kernelv
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llc-18 -march=nvptx64 repro.ll
1.      Running pass 'Function Pass Manager' on module 'repro.ll'.
2.      Running pass 'NVPTX DAG->DAG Pattern Instruction Selection' on function '@_Z6kernelv'
 #0 0x000077e4163a63bf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:723:13
 #1 0x000077e4163a44f9 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:106:18
 #2 0x000077e4163a6b00 SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:413:1
 #3 0x000077e414e45320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
 #4 0x000077e414e9eb1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000077e414e9eb1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000077e414e9eb1c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000077e414e4526e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000077e414e288ff abort ./stdlib/abort.c:81:7
 #9 0x000077e4162fe0c2 llvm::report_fatal_error(llvm::Twine const&, bool) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/ErrorHandling.cpp:125:5
#10 0x000077e416c2f8e3 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x162f8e3)
#11 0x000077e416c2ed76 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:0
#12 0x000077e416c2611f llvm::SelectionDAGISel::DoInstructionSelection() build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1146:28
#13 0x000077e416c25790 ~TimeRegion build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Timer.h:155:9
#14 0x000077e416c25790 llvm::SelectionDAGISel::CodeGenAndEmitDAG() build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:987:3
#15 0x000077e416c248de llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1511:8
#16 0x000077e416c22934 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:3
#17 0x000077e4167826b9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/MachineFunctionPass.cpp:0:13
#18 0x000077e4164f7772 llvm::FPPassManager::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1443:27
#19 0x000077e4164fd2f4 llvm::FPPassManager::runOnModule(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1489:13
#20 0x000077e4164f7e9f runOnModule build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:0:27
#21 0x000077e4164f7e9f llvm::legacy::PassManagerImpl::run(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:541:44
#22 0x00006019ba65227f compileModule build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:745:17
#23 0x00006019ba65227f main build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:412:22
#24 0x000077e414e2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x000077e414e2a28b call_init ./csu/../csu/libc-start.c:128:20
#26 0x000077e414e2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x00006019ba64cd95 _start (/usr/lib/llvm-18/bin/llc+0x10d95)
Aborted (core dumped)
```

`llc` details:
```
❯ llc-18 --version
Ubuntu LLVM version 18.1.3
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: alderlake

  Registered Targets:
    aarch64     - AArch64 (little endian)
    aarch64_32  - AArch64 (little endian ILP32)
    aarch64_be  - AArch64 (big endian)
    amdgcn      - AMD GCN GPUs
    arm         - ARM
    arm64       - ARM64 (little endian)
    arm64_32    - ARM64 (little endian ILP32)
    armeb       - ARM (big endian)
    avr         - Atmel AVR Microcontroller
    bpf         - BPF (host endian)
    bpfeb       - BPF (big endian)
    bpfel       - BPF (little endian)
    hexagon     - Hexagon
    lanai       - Lanai
    loongarch32 - 32-bit LoongArch
    loongarch64 - 64-bit LoongArch
    m68k        - Motorola 68000 family
    mips        - MIPS (32-bit big endian)
    mips64      - MIPS (64-bit big endian)
    mips64el    - MIPS (64-bit little endian)
    mipsel      - MIPS (32-bit little endian)
    msp430      - MSP430 [experimental]
    nvptx       - NVIDIA PTX 32-bit
    nvptx64     - NVIDIA PTX 64-bit
    ppc32       - PowerPC 32
    ppc32le     - PowerPC 32 LE
    ppc64       - PowerPC 64
    ppc64le     - PowerPC 64 LE
    r600        - AMD GPUs HD2XXX-HD6XXX
    riscv32     - 32-bit RISC-V
    riscv64     - 64-bit RISC-V
    sparc       - Sparc
    sparcel     - Sparc LE
    sparcv9     - Sparc V9
    systemz     - SystemZ
    thumb       - Thumb
    thumbeb     - Thumb (big endian)
    ve          - VE
    wasm32      - WebAssembly 32-bit
    wasm64      - WebAssembly 64-bit
    x86         - 32-bit X86: Pentium-Pro and above
    x86-64      - 64-bit X86: EM64T and AMD64
    xcore       - XCore
    xtensa      - Xtensa 32
```

[repro.txt](https://github.com/user-attachments/files/16382924/repro.txt)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WVtT27oT_zTiRZOMLd8feDCEtMxATwYohzkvGVmWEx1k2SPJNJyH_2f_j2Q7vhBoz6XttBRpL9rf7mq1srBSbCcoPQfBBQhWZ7jR-0qe_4klzfdVRmVFns-yKn89_31PBZSNgJWAek8h1hqTPc3hknNYME4BuoQgdDgnIHQgkVjtqYLfmN5DLODNzeMtvLq7--0OeClwVsDpf4ZO97cdXiGQrEC6hpyThRvDRYkl2QNvJV5qfQh9KGktqyXnLf9EL7zEQlQaKsop0WbCOYSOm2QEIY9gx8yw0Afokuwh8FZQaUyeFX6hR0Y3z7K8s-VawKIRRLNKGMntH-EzlYLyl5a8ublK76-garKSaYhh1uyMcZXUUFdwr3WtDFa0Bmi9Y3rfZEtSlQCtOX_p_1vUsvrT2IrWTKmGKoDWEIscMkF4k1PrautLmGHyrCUmdNkuf29sh3lT1kePOkvgJBtZ7SQuIZa7pqRCGyN-0Jmukb9rhGBiB2usFAQoWncugBszcYsF3lEJUGQSoazyhlPDdVSEos4-dErZl8fNwxNcpZ8WwLtapZ_gBmtNpYDXQmnZtAvd2_AZr7er9EEwCoDvjOKAonYtCJDnQOfgOI4TRdR3Qw-HXlZA62ovBV6qXlX7y0Yyoa3zHow3AYoHJom_bSulJcUlQKHJaCY0QAnMGsbzRRc4XVXcBIpwLHYArZXGO4oWGRNqFF2WAbS-b2qTEACtvwp2MBNsJzBXSyYI8NIIecBLXW9A4c5Q-H6RnEJx14hW1Wcsck6lAij-bwztLSS1SSzXCc3PeLAQzf2cOQ6c2PKzvOW71luDKd7YFJ_6gYccaB3RKTzE4Tb0F5yJ5rDYiaYlkKWqliFAF87BigCUDDr9qc6EZi6B222t95LifPvMON-ysubU7C1s03IJ0FrUmgO0HrMtrc2-CXM46A9-RL8wewLzDzVHsQ3PoDk8pXks9qG6OJmpi-bORSGFEjNFrR5lQwPQemlHryqntQloXSkbOstpNaMIeOnIA_FUMYrjooA4M3XTqtJ5Gzw71drmGryDhmSSgqigDkGjTdIW4W2BNeZbKmUlJ5v84RsTFJJKKN1t8qyq-H-zea7ManYbMLHrtxAKgJcG3fmGPHdaqQgqYup1adsoedRqzwfXzGZM9I7uSCwzB5_JYzdeujaVjSNi6h2T2azkzlaieRSOHHUstKv00_U95ePZyyqnl1VZmio8ct796kuVU4BS47dG2O4hh2SPZe_RKeVf1k9jxSdq0I9tnQ2N6Z2vHfvviB_N8IeuW3wX_6oaHUajs-hf1de_C8R1fVN4UTyA8WZggihx4P8eWEnv6M7Uob9vW9dlDBNDJhu9crk3pgQmf0dZ5Z8y5Hte7RyQivyqZNpi_6UOTWJThrwBRTBD4cc5_cG9kXJ-gRUjF7wiz2qyP47d0lBffmHSBK6plKOcCWcgUeL53wUpG_GbuMVkzwTt8UxAvqH9UpTONI6TcyqMYhRm445pZqtpYkcoT8L7z3GdsGGExR2BmZyNoV9EUTQ-2dYbI9v34L8GxvUdQOsbusPkdbR4n3G-77VH_BFCMoOQo8L_AQi39ioxTbNu6mea37Y9QwSQM48ATQo4svDnGOJMnYjcU1YMnuFWTXefGZRdl_WwhX-xKwPfbdvdI4b-8LUXaxwGCEUFJFVZM07_sS97Js5J-7NbPvLNIeWOXOidWr7E7J-ck--t6rvIBA4Nq86uDwi7BMPt1tw6tkpjqbcEc761dph-jqjmbQ_d9einhOyJHPmTEoiC-aIozqAVYYLp-Trtr0b5wiq3LbaLzHUCDb0TCk8pnSA5BeKkcs-PJh0wiqax8UmeBLDV-gONsI2C6XidPAmO_W5qrgs0N_KkktR-GaH50A7PvjP1k933qpxqzLgaPk5977PU4oVKZaqrpX_NGqGb9itXR4CmM1_2V3v4W61Zyf6ieZt-y35-RQvccA01ljtqv1l1l9aajO6tHfPnSml4uflq2DDPqeT4mY4BQWh6QaWppDl8sCoHTBBCiLEk-9A3v8IFTNN2ZGoF05pTSEXOsBhuxIPI1kMficDrm42HTgpmdCaYsd3Jhcp8RwTsbbtdwU-XX-CnzVc14pEl7P8sYHp3OyF1wDrSd4EZAQvrfYFTsGRJs_E6H0F6kWNzdUk5TB_v4C0jsiKV0LLinMpBIKuLkcDFZm2U703YT2jP6mJkScf8jiWGl8953_fNnh7wrhId--d2NJA5Fpgdtd2Y0YhYVWJnYu8huICeKaYa3phJkwIn-EIfLmDov8dXhvHz4JPbSley4hiGseM4sMAl468jZlarEfP15t4A7Yx4xzdGpk-dQaYz6EOZ1qVvZN73qxHr4_DGvA_EVO17zlHsfmNGILigh5pKZj9FcRCsBgH7gffohi-P16vrFG4enrpwzBiPBWHE2EIZGOuatFvFMm6qb1RuLqGHZhycvuGAN1cTptEu7ZlCf8bxRk3oT9TI0HFGG8vUis1XBT-v0NPT0-LzKnx6ehpxM0VeOuuPGXl3fX-5eJwxHT3RRXLOpGosyXHdezOaEbvodsSJ0Zb-kkzoj6Moq1elaflXT7ejPway3jflsN0fzGhG7KpBR_ygGrxQOCozjyMbv2FV9nFewN9plipFy4y_vskcwznsmjHnPHUOcTharXP_UxyaY2xDhWZNudjIyj584Kx6oRPRxbBIF5RO9Oo29B-sUHq7GmfQwTYAvdDTZSXHGjUVCh-J7ahP49NdQnDRPm_ogzabDMUfPO40ispF-zjWvr6gdcG4fdhxQy9GCfIBWg_6-qic5edenngJPqPnboTcxAuSMDrbnztuWLhR4edZRKIgRHnokcCnkYezPMCxd8bOkYN8J0KBm3jIj5YJIQFyChoVQeGHCQG-Q0vM-NI0UstK7s7sW9O56zih755xnFGu7AsgQoJ-g5YKEALB6kye2-4ra3YK-A5nSqtBjWaa26dD-6wDgpXpjkxkfs6r3Fkj-fk_f1fr4L6co_8HAAD__yMxhAA">