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

    <tr>
        <th>Summary</th>
        <td>
            `llvm.experimental.stackmap()` causes assertion failures when used in functions marked "stackrealign"
        </td>
    </tr>

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

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

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

<pre>
    The following program:
```
declare void @llvm.experimental.stackmap(i64, i32, ...)

define void @f() #0 {
  %ptr = alloca i8, i32 1
  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0, i8* %ptr)
  ret void
}

attributes #0 = {"stackrealign"}
```

When compiled with `llc`, causes this assertion error:
```
$ llc frameptr.ll                              
llc: /home/vext01/research/ykllvm/llvm/lib/Target/X86/X86RegisterInfo.cpp:767: virtual void llvm::X86RegisterInfo::eliminateFrameIndex(llvm::MachineBasicBlock::iterator, int, unsigned int, llvm::RegScavenger*) const: Assertion `BasePtr == FramePtr && "Expected the FP as base register"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llc frameptr.ll
1.      Running pass 'Function Pass Manager' on module 'frameptr.ll'.
2.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@f'
 #0 0x00005568a627ed1d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/vext01/research/ykllvm/build/bin/llc+0x2d6cd1d)
 #1 0x00005568a627ca44 llvm::sys::RunSignalHandlers() (/home/vext01/research/ykllvm/build/bin/llc+0x2d6aa44)
 #2 0x00005568a627cbab SignalHandler(int) (/home/vext01/research/ykllvm/build/bin/llc+0x2d6abab)
 #3 0x00007f253f2da140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140)
 #4 0x00007f253edbdce1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f253eda7537 abort ./stdlib/abort.c:81:7
 #6 0x00007f253eda740f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
 #7 0x00007f253eda740f _nl_load_domain ./intl/loadmsgcat.c:970:34
 #8 0x00007f253edb6662 (/lib/x86_64-linux-gnu/libc.so.6+0x34662)
 #9 0x00005568a4c87706 llvm::X86RegisterInfo::eliminateFrameIndex(llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, int, unsigned int, llvm::RegScavenger*) const (/home/vext01/research/ykllvm/build/bin/llc+0x1775706)
#10 0x00005568a57376fb (anonymous namespace)::PEI::replaceFrameIndices(llvm::MachineBasicBlock*, llvm::MachineFunction&, int&) (/home/vext01/research/ykllvm/build/bin/llc+0x22256fb)
#11 0x00005568a573ea31 (anonymous namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&) (/home/vext01/research/ykllvm/build/bin/llc+0x222ca31)
#12 0x00005568a560cc3c llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/vext01/research/ykllvm/build/bin/llc+0x20fac3c)
#13 0x00005568a5a817d0 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/vext01/research/ykllvm/build/bin/llc+0x256f7d0)
#14 0x00005568a5a822f1 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/vext01/research/ykllvm/build/bin/llc+0x25702f1)
#15 0x00005568a5a81163 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/vext01/research/ykllvm/build/bin/llc+0x256f163)
#16 0x00005568a3dbdb3b main (/home/vext01/research/ykllvm/build/bin/llc+0x8abb3b)
#17 0x00007f253eda8d0a __libc_start_main ./csu/../csu/libc-start.c:308:16
#18 0x00005568a3e6406a _start (/home/vext01/research/ykllvm/build/bin/llc+0x95206a)
```

This is on today's `main`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9WEtv4zYQ_jXyhYggUe-DD8kmRgN00aBZoL0ZFEXZbCjKIKnE6a_vDCU_5M1uAyRtYIikRM588-ak7pvX5betIG2vVP8i9YbsTL8xrAuS6yC6DaLrII-mn182gitmBHnuZUOCNFLquQvFfieM7IR2TIXWMf7UsV1AS5mnAf1CZEJxCMMwoNVEdSLWSn2i1cIR2EECmkQkKG7GTQTW2c4ZEiS3hAFMzogsJ7okPmzi8Gmi9Dbj96Al0YHuOAE21xP7I3RCjHCe0yRKcXsuE3POyHpwwk5yAGqUhVLPygim5EbD8nRuruHx-cdWaML7bieVaMiLdFsCO5TiuA-gcTZYYOG20hJmrTBO9poIY3rzI9MFNCVAgLRgXgEShaCwn_6Nx5BnglpYbftOwPAs9i6KYWKEFczwLUxfn1C1MDkMsobnN2Y2wsHkzzIfn7-LjbROmHvd9iHf7YBykRdI_1kaN7DJhJ4KiJFcX5wZXwolO6mZEysU5V43Yg_2Ox36yvgWHOuGWclvwGGextcSiDAHCkLTaofDoC1YAzQ8rU80gOsjZ89CbwQcuEYH4r22DrFeHxUOygUu4mF0T7S1h-TXFGTOYaB34HDcARMHkbZ6AHuRGg6BH42CoTPQgrQMbR2OWn_49e768Y7Yoe6kI4zUwwb273rjiOvJ1rmdRZx0BT_4ZkPv2r3ZwJowjQJxNTTC8-SG2S3w5E_OMC4mFo_oj6QZut3RYyL4VD2MGYCA8QaMEmR06Tjj9hi3_z5o7RMHuCFIW6wGzb1uHvDFV6aZ12BB4FXXN4MSuOucFi0mRPQtegBH9ZsBPe8OogGn5F4fDQAq9ionK_AIJf9m-Hpi1x6gwHrML8UUwz40o30Ef1mWlyynhWjic8ezr3acPBjwDa-rb6i8maMZ9rLurYOg7ry5J7_CFFa-M2DqQaoGR6l9-PCA3kR72uQc8JySDgCOLwBzlqZvAQYFPoJTM_UL-IESxh7T6ocxMWA5w0QvMdWsJjPumFg_TScMyM_4JxP_oqVZ0tKGxWlE1msgCnEu1hAtI9cxH-3LfJ2nV0rqYX-10cP4Yee2YMAmtH0YeUZxClRmbNJzNqKpGy5iYpiEIIbSsrJeYJiEfvVqGwHhSSES5H588exZAVuUGM-FmFSzGB7xiU02Z8OKLCkIqzHoPWHXjHL4V55CiRTOnDq_pABeTyAHr0dQays2GNLrZ6aGETsYB5GrnjWd3XA20s2iCqmfCBdvEV5rtcaD66bvmNQ_oVcVETyT9ESwvFBpnuf0HcbiaKbcmylJ4cjMTNW5N6a8LIoo_6RaAhnHmZsBXfr-UEaSL29vwzzQMmVFkNx9qNZ8OGTioshAB6drF2SRWd7LiqTI2xoZMd3r164fLNGgCLvzua6acuDd_ZTwxE7Bh4OuJBf2XyovinMu67TjUCXO02b-KVmC0gwkmokcX4gsGCTTd4s86N_0d6i_l3km0afIwQHmTI5Zts3yiPOE_1i1WH_PRHgT-2eDjloGmGagkxloVsZFE52BXj0gzsM14X-GC54CaGZw0wu4lLbxO-B-9TebuV9Mrz4JahEBkhnU7FKzcZ6cQVViw_jr5M0n0PfdTh2B_5eA8xbwzADn54ATKKN1UhNfOT7KrWQ10Joxu6xYZRMxuBpgDVlDK2bc-lizuB0OxXuc4qYrv8lXryQqsVDnJ-LlTBKRp1EOxP2JD8tSZRSonWR5qz38hn0f_OBu6_qGvcLN1mIzgiLBEC6aZdJUScUWTjollr53_Envi9zy6NBVnhpK7EkGgE5esB-Fj1i9jvdqC8YzTwJb7svudjEYtZy3KRtoYoc6hKb2rE-E4Wpn-r-gQcLLg7UDVpRVlsVVstguRdpWeZVWhWgFFzTOy5hWtWBFwZq2aPlCsVoouwwy7LC1eCGeBHZU2e1CLmlEaZTSKs7jKirCBOKkSfI0KxmryzSBpkCAytSxe1qYpYeELRX-vwAuC6fWagF6wQouPDugzwa37c1ytPHCc1565P8ABIk2CQ">