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

    <tr>
        <th>Summary</th>
        <td>
            `llvm.experimental.patchpoint` followed by a call causes assertion error in x86 backend
        </td>
    </tr>

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

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

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

<pre>
    The following small reproducer causes an assertion error: https://godbolt.org/z/Ej57Gsvdb

```
; ModuleID = 'bugpoint-reduced-simplified.bc'
target triple = "x86_64-pc-linux-gnu"

define void @julia_readcb_specialized_17() {
top:
  call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 0, ptr null, i32 0)
  call void @jlsys_notify_4()
  ret void
}

declare void @llvm.experimental.patchpoint.void(i64, i32, ptr, i32, ...)

declare void @jlsys_notify_4()
```

```
llc: /root/llvm-project/llvm/lib/CodeGen/StackMaps.cpp:202: unsigned int getDwarfRegNum(unsigned int, const llvm::TargetRegisterInfo*): Assertion `RegNum >= 0 && isUInt<16>(RegNum) && "Invalid Dwarf register number."' failed.
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 Assembly Printer' on function '@julia_readcb_specialized_17'
 #0 0x0000000003c1d988 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3c1d988)
 #1 0x0000000003c1b37c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007caf04842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007caf048969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007caf04842476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007caf048287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x00007caf0482871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x00007caf04839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x0000000002e60fae getDwarfRegNum(unsigned int, llvm::TargetRegisterInfo const*) StackMaps.cpp:0:0
 #9 0x0000000002e62b70 llvm::StackMaps::parseRegisterLiveOutMask(unsigned int const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2e62b70)
#10 0x0000000002e65034 llvm::StackMaps::parseOperand(llvm::MachineOperand const*, llvm::MachineOperand const*, llvm::SmallVector<llvm::StackMaps::Location, 8u>&, llvm::SmallVector<llvm::StackMaps::LiveOutReg, 8u>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2e65034)
#11 0x0000000002e66461 llvm::StackMaps::recordStackMapOpers(llvm::MCSymbol const&, llvm::MachineInstr const&, unsigned long, llvm::MachineOperand const*, llvm::MachineOperand const*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2e66461)
#12 0x0000000002e67196 llvm::StackMaps::recordPatchPoint(llvm::MCSymbol const&, llvm::MachineInstr const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2e67196)
#13 0x0000000001eb06e8 llvm::X86AsmPrinter::LowerPATCHPOINT(llvm::MachineInstr const&, (anonymous namespace)::X86MCInstLower&) X86MCInstLower.cpp:0:0
#14 0x0000000001eb173d llvm::X86AsmPrinter::emitInstruction(llvm::MachineInstr const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x1eb173d)
#15 0x00000000028b6871 llvm::AsmPrinter::emitFunctionBody() (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x28b6871)
#16 0x0000000001ea320b llvm::X86AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x1ea320b)
#17 0x0000000002b81649 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#18 0x0000000003186770 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3186770)
#19 0x0000000003186b21 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3186b21)
#20 0x00000000031873d7 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x31873d7)
#21 0x000000000086ebc8 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#22 0x000000000075fbce main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x75fbce)
#23 0x00007caf04829d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#24 0x00007caf04829e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#25 0x000000000086550e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x86550e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```

I might be using patchpoints wrong, but I am not seeing any obvious mistakes
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF1v2zjT_TXMDWGDomR9XPjCdepugGYbNH2LvTMoaiyzoUiBpJJ4f_0L6iOyXDdpusZTpEhEkWfOHM4MqWHWilIBLNHiA1pcX7HG7bVZPvJ9Y9jj4SrXxWH5bQ94p6XUT0KV2FZMSmygNrpoOBjMWWPBYqYwsxaME1phMEYbFK7w3rnaonCF6AbRTamLXEs316ZEdPMvopuPPxbJJ_tY5Iis_E9M-h-yQuEHfKuLRsLNNUbhNUY0yZuy1kK5mQFvvJhZUdVS7AQU85wjmiCycsyU4LAzopbQL6TPabyNo1nNZ1Ko5nlWqgZR2hktYCcU4EctCowi8qORgm0NsILnW1sDF0yKf6HYBgmiKaIZRskHb0fX3jGywph7Sbr1NBVxhOgai5D6X7UzR0_z-bwFiIiUj9UcnmswogLlmJzXzPF9693cQ3VIOOhXY9KjYdVIeTSYnTKIyA9pD3artBO7wzbqSLezDLh2kvc7uR6855KZ0f3fJPaGi-exf0FssuvTRym5DyNEN0Zrh-jG05vVRv8APjz6XyJHdLPWBXwChejm3jH-cMtqO-e13yVKqIdpVBvuBRbK4RLc9RMzu69Q_t1UiKbHb70nXCvrcGshXKFw9a0NrK9QCuvA3KidRnTlPQhXePUS-igmHSJG4UcffQQjGiMaY2H_70Y5FK6D2L-i6WA5G2YgSm_UI5OiwC01bHpjWDVVDmbuY5YmeMeEhGKOyOru88fV_Udsm7wSDjOcN6XPTW0cdvo0-4TbN_mc6-pIuKmcwtoGLKIbzJTXgcumAOz2gLlhdo9zxh-cYRy87VZkXDRVnwdkjkh2Z3RpWIWZKRsfP7bfPl17fK6rWkgwM3iupTZg_Jhkqpy91A47c6ZRD4hucqFahhzPtIdgde2BGlc3bm7x7DmNZ8xWM3tQjj2j8FooBxKjcG11Yzh4kckq8Ky-Nkr54lUza30d2TSKt7t15wdumWKl55JgrXDV1hw_a4JEE-8zPYf2Txq3AVDl8oDvjKcxgO0GQx7ujdriixdGNCSYPJPhX8iDIkvTozC0B9v90VpqN-Gb3xJE03GSYU9bbZ0BVrWxte6C2kda-h93A9EP5Lmn1RcWRMPghHQeJhzfi1Ix-RdThfTgac-hGx5yk7T_OxTaoySc7UiURnRBSU-5S_G-jh8Vcf-Cz62exy2xdslIK5wCZnG247h2e78F2wch5fvQ2_UjenRKN0piXNrWvffSjpJ4BF5MgWma7ELMcp_W74JtF46w8U-wQf5uwCAfAZMpYJhBFr8PsF0yAqbHYUQhJjsGb1fq12p0V8a7So1Pz4Xj2MtOTNM8IUfIL0u7x5oZC4Odz-IRvjTultmHE3YT692BcqEM7Bn2JygNA3LCf0HC6A3-X2owTBWTynHL-F6o4dUR_2OZf2vSvb8pfgfu_FVw_UsmnzVn3lG_OG3aUhv_GVC3C1-hnEJdrOj1oo6SByeSx1Ec_FpyA1ybYhj02tmp8uv7Q5VrOcgZn9X8RllnJlNe4k1qVf7BPr0yKddaXlZAL9EoID0RMAmy-C0B7_x19E63qf-f1buka5786Fp47FoAOYnh-BT_J41XthouC30iPIG5W31b_3X35ebvb-ey8ufNRzRlSqtDpRuLFavA1u1dIHsxc7v2q1rw3uXp4Ekp9NyjE-5BEhavc4dKuJZcw7tcfoP76oLS9wRH6ReTqErzOE2O0_Ic9-FC-EEXh-Er70KB0dkf2cVTcVlISf66uKZRX1Sv4kD0nMLju0tGdk9xdCCZyJunQRxlP2faQMbfsI_cOMv_Z-Lzmhk396cbPoN3JmQnF4cwSONkcnpv7vy64aL_bjoXuTJ3pEYds1PKOQ1-g3LXE5nufz90abo5HeOWkhO6SVgkR3QllIwf-i-TkfhNVcsX8v8L0p7WSHpyQpM0hpynuDfwIiTfM9OWpJOD8fPn77drrRw8D4eFlPzn2KOTU4wki13OAVdMqEu51UGOXp181dCsyN75mdQuGQGjU0CICN5u_Zqtdcy47ZE7v20CoiMTi5OdWCwI4A78UjJ1oJ3JoQ_hwFRCMQcFfhJuj7uPMxSu8P3Np_uPn74jslr3JrEB1xgFhX8dhGdaUze4EuXe4RxwY7sWwNAbs_jJ9PevvHH4BrMKK-2wBfATmTpgnT8Kf0xXwjr2APaqWIZFFmbsCpZBEtIkWIRpcrVfxnFRJJwUecayRQoFickuYjkjYRrvaESuxJISGgUBTYIwyqJkvouhiNgCEpoBMEhQRKBiQs7bdp425VXb2lkGQZKm9EqyHKRtu76U5ow_gCq6swdRihbXV2bZdobyprQoIlJYZ0coJ5yEJYpf7RWimPRdYyhwfsCs61EO3eJpqxgLhZ_TGPdUrhojl3_evOqdfFzS_w8AAP__w4MLlQ">