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

    <tr>
        <th>Summary</th>
        <td>
            [stackmaps] Passing live i128 constant with value greater than 2^{31} -1 crashes LLVM
        </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>
    This works:

```
declare void @llvm.experimental.stackmap(i64, i32, ...)

define dso_local i32 @main(i32 %argc, i8** %argv) {
entry:
  %x = zext i32 %argc to i128
  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0, i128 9223372036854775807) ; <-- 2**31-1
  ret i32 0
}
```

This doesn't:
```
declare void @llvm.experimental.stackmap(i64, i32, ...)

define dso_local i32 @main(i32 %argc, i8** %argv) {
entry:
  %x = zext i32 %argc to i128
  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0, i128 9223372036854775808) ; <-- 2**31
  ret i32 0
}
```

Gives:
```
$ clang -O2 i128.ll
warning: overriding the module target triple with x86_64-unknown-linux-gnu [-Woverride-module]
clang-15: /home/vext01/research/llvm-project/llvm/include/llvm/ADT/APInt.h:1493: int64_t llvm::APInt::getSExtValue() const: Assertion `getSignificantBits() <= 64 && "Too many bits for int64_t"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /home/vext01/research/llvm-project/build/bin/clang-15 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name i128.ll -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/home/vext01/research/llvm-project -resource-dir /home/vext01/research/llvm-project/build/lib/clang/15.0.0 -O2 -fdebug-compilation-dir=/home/vext01/research/llvm-project -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/i128-c5f403.o -x ir i128.ll
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 'i128.ll'.
3.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@main'
 #0 0x0000556befbcce10 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000556befbca65c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fcbba840140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140)
 #3 0x00007fcbba323ce1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #4 0x00007fcbba30d537 abort ./stdlib/abort.c:81:7
 #5 0x00007fcbba30d40f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
 #6 0x00007fcbba30d40f _nl_load_domain ./intl/loadmsgcat.c:970:34
 #7 0x00007fcbba31c662 (/lib/x86_64-linux-gnu/libc.so.6+0x34662)
 #8 0x0000556bf0b94aa2 addStackMapLiveVars(llvm::CallBase const&, unsigned int, llvm::SDLoc const&, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SelectionDAGBuilder&) SelectionDAGBuilder.cpp:0:0
 #9 0x0000556bf0b94dc7 llvm::SelectionDAGBuilder::visitStackmap(llvm::CallInst const&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4b93dc7)
#10 0x0000556bf0b8550b llvm::SelectionDAGBuilder::visitIntrinsicCall(llvm::CallInst const&, unsigned int) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4b8450b)
#11 0x0000556bf0bbaccb llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4bb9ccb)
#12 0x0000556bf0c32b89 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/vext01/research/llvm-project/build/bin/clang-15+0x4c31b89)
#13 0x0000556bf0c33d17 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4c32d17)
#14 0x0000556bf0c35ce9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#15 0x0000556bee59289c (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#16 0x0000556beed37d70 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x2d36d70)
#17 0x0000556bef25e734 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x325d734)
#18 0x0000556bef25e951 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x325d951)
#19 0x0000556bef25f5e5 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x325e5e5)
#20 0x0000556beff6515b clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/home/vext01/research/llvm-project/build/bin/clang-15+0x3f6415b)
#21 0x0000556bf0d7bb82 clang::CodeGenAction::ExecuteAction() (/home/vext01/research/llvm-project/build/bin/clang-15+0x4d7ab82)
#22 0x0000556bf067d829 clang::FrontendAction::Execute() (/home/vext01/research/llvm-project/build/bin/clang-15+0x467c829)
#23 0x0000556bf0607336 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4606336)
#24 0x0000556bf0733458 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/vext01/research/llvm-project/build/bin/clang-15+0x4732458)
#25 0x0000556bed2169da cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/vext01/research/llvm-project/build/bin/clang-15+0x12159da)
#26 0x0000556bed212264 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#27 0x0000556bed166fea main (/home/vext01/research/llvm-project/build/bin/clang-15+0x1165fea)
#28 0x00007fcbba30ed0a __libc_start_main ./csu/../csu/libc-start.c:308:16
#29 0x0000556bed211c0a _start (/home/vext01/research/llvm-project/build/bin/clang-15+0x1210c0a)
clang-15: error: unable to execute command: Aborted
clang-15: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project f94a4476791873a4af1986abcd13c18991a599ee)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/vext01/research/llvm-project/build/bin
clang-15: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```

The stackmap code assumes that the constant can be built with `DAG.getTargetConstant(int64_t Val, ...)`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWUlz2zgW_jXyBUUV9-Xgg2zZSaqSSqrtSveNBQKghA63IUBZ7l8_7wGURMp2nE47M3OYRJZILB--t-DhASha_nh5v5WKPLT9N7UIVgt3vXAP37E7fswrF6yivSC7VnKyCN2q2tVLse9EL2vRaFotlabsW027hZ_KOFz410QGPv4sl8uFn02xuShlIwhXbV61jFbYEkFrKhvsjm9-RPsNMzDpwl_BZyzbARhZJFcWCsbuH4_UCbbZk0WwJn-JvSYTJKJbIj0_PTSEYatRmucJ_4iUxB27jQ-ATzLfD4LEd4M4jcIkiVI3MWjBFfxdOw7xrTiB53gHMr3QI4rVUrJ-1gj225iMt0KBrhJ9Mtv_DfZWBktfMNhPmeud3An1kpUWfkjATs2GOJ99Q2dZVbbqgfaNbDbQk7Q70feSwxvRW0Hqlg-VIBq0BER0Lzt4e5B6S_ZpnMehMzTfmvahcSrZDHtn0wxkEV05v48wwrEAi2ikbQg4XoRDLfzbbVsL-NmBPVwPHnqhBO3ZFh5RvU7Xt38KpsdX-JENqwYuTgWr9T1-f_nQ6OUWUL0wCxBcNjoOc01MM9BIsDJt7CPIcnez119pNQCUMQFrG4W1ZKWU6LVsGwKaw4Zy08hSMtroK6nV2ByshY4EVl74MXzgx79vW1LT5pEU0I6UbX8gAXUwfUhJZSX40iriy8eb1d0NUUNRS00oKYYN2Lpre43OuNW6M4b0b-GzAX0PxZK19UnuM_VIpQYwvX9LaMPJqCVjQdZTtSUFeKbuKRPoih0M1LdMgKScqHbobTH2pEq1TFINFf3QEMXA4nqkfIfuTfhQd0cXc6Eq-9K3m57WBHxkwJmg_rZxi0FWHH9xit8efIQ4jHnEGZ3uRX9zBGjQaYs_iePUvajo3oFvCB1oREUcLhUtKuGUvRAAWQEHhyrtFAJMJBzUjADJHQwwTgkmchpai8MEIQZzRENvFhXpJCMOfDmV2MGrb1-kgh8YoS5BGcLpWrC-6MFLmhbimVPWVG8dmBVNCy9l54DHoUXA6dbgbE7ZtE7fDg1OPQfbApJxyn5gugXKlaRKgDzl0DzIhjsapQJdr2F8Oz8d1g2oJwfc0tFDI0zBRjQQooBxjVpHfQqqHQUxzqpF7gVHXjiGcsZQAGoT4JIb0SOQiQ3rDS9gdIZTm24Au607WVm9cImC_rjNCZjIOh52_TlnqWRxcBb49aKlu3RNaHNKw_0fEiytSiqJ89PLoACcjTkgvAJAAAuX_hLccyfQPPIv4VRt26lpgao66EY5hy6g0XWev7u-zt-vvt7k699Xv936-fXth3x19wnQAKlFPWiYXTCdwfkcFpWhGyzBXfYElDSL2B5OvGvwRmteI6St8bHmt6ExVuxgPgNqcjs0zMS0L1jwiTZgwB5jEhSNIR7eDiP4yTjjg-ew_khjsl69cxbBDfyQD6OLIvqdqIR5GqHLw7DwflzCk3FpW_iBS9y9C_-iKIbZWDAmPJd86WHimFhzjwEL4y-t3kNwqpByisuyWSQzYqvUknUYkVzzd8T2zrBpHDFyDgYjvQrkj0BJyYqCpqHrhS7Jc3AcMLPIIWCbNWH0xzFMHcOTrej0FmYdX6p2CcnAlbv3QkA5Zj44TDAbJvADUAbpqVSCQMZxqwxFeFiat0fFRYfxHibn3hbszFAwLHo19lsyECTycFE8DRPOh3F5FCSEFrjuGGDNrRymyCCkiDAxWnSOELoleKHOLalciQ2uAvkOV1cDClpG5lVLea02EEotMzdD9BNw_Bxw3lQ5dsx5i-7zHbwsQcMF4QkwmQN6LI79HzAWQzPFxkxBCF1mZkonblW6RRZS6hOY4sZhP9HuI6RgX2mPecIp9biGfPIKoveYZWDGcE2GBm0qcLXW-H5qfrf-2LJZ20ldDVhfTYj5UHcV5CHTfjajCW6edjvMTJiyVxhA0f1j4_tPa56fB9m55Jwlr4xgKnZSSTufbWo8VwuGj4mo2Wiff5o7GOuFRRYAydMGA6KCO5cijSK3-GEpIIGE4KQkQ-aviXJu4TcWLQ2B-Uw0by4aJDbsx0WbSTON6b_MNkUG_GYC-DMBWOAXafaCAB_gZVoKs0uyK8jTvs0EkZVUOpcaV8i2n00WW8WFhqzcljSwnOZtZ9LGWdOJOtCs8Gzy5RKWDPNgliScdJMy08iW_Y_RKdq2-gX2ZIEH5prZMzizZ8C9lyLGuT1XJmCOJp0H02Mu86s8ExwPiM4kCc8kiZh43TNhA_W5-UTZVjbiQHomyZO6gyjLjsLi656HZ4R-GpuRXzRNdkSU-WnGEIjC3uOxbgdFcE-jOrMBzOzokMcB5n37FpwBCzEOeM-TjGckeZDwxCUvImOmOuH0LJmnmnsrJ_B5EAO9mRMks4zSj0QC2dSEzBekfMit_2vMAz_iQGzGPD1nnkXeDzD_ZM9uZuYfi34FayA1Y52dsS4jEU1YV2JD2aN9nvC3WdEow3-Ku4D_U-7-fGdTxpEXFfb0zXK5gV3llT15-DzobsD1d1K9lnTTtEpLpm6aDcyKMaOYNHkP-wnR3xm6n-0qMUs-Jk1xn_hONK-0ujdnCK80-ghPzzWZxEJMkTa_iXJefFD-6gxwVMLquJzBDsTWwM7mX4PIOz1fKHv6kHcPPSyiucKjjHrWiYuSDhUupJXQ4pWOsB7ikvi2zlDGIdh65gzzxIwnRZH6z9hn1IH1j71ggxYHtaRvvcbxhAKJGct59hUnPMVj0RPL275t9MlUU5q_gGCcMBh_RnCeTsRuEsCWcaZGPO-BCABuSRtY6Z7V5MsSvX0mEbsxcJwJMc8kQIQwSmeBwdI9ybIbzx7n1J_Iak9E3pJ8AmSjdEZ-lmZw34szTgljXj5ezkwO2_uePmIQCK7ZlvaHWLEac9B52SFnfXMZPN-LgOJMhvhMBt-PQ3LQ-rV3b7LjiSRPN9xPBTKOw3vY-j-zd8ZBZ6kD9-K4FJSY84y3lNaLI8CdSZuenakI7lKS53jKAVEQssz8eKrC1HA4XrKP2Mgxjcz5SuCm8O3FJ_DsTJUeQ3DT442t6ALyUa7pHZI5pMWHocHTbLw7EdaWYKG6pg2uC2SFh1mCf6e7vRgrx4Bw6Dte2RA-GGR7BoeiDUoQZ2fKhIDt_WmSTjmS8bCYjIfT0PHvXeyQMgtpGCZxknlpEtCQll6WxrRg3AuYl2aZR6MsE-I4rl3EUaKX7ksOF7t4HknMfQa27lol97bKhJQKxF5Lo5qfNuMTbTctLskrwo_ZDamVuXW8QTscj7LxsPm5K6pU4TxzAGdSb8wuG0ih1PK7N9mCHO5nwbxc4FXXAHsiordU25uy1gRTTRhtSCEIyqLtZSeA4bYGVGsVfD02tUfI5qLxK57OHi-0Y_eCXwY8CzJ6oaWuxOUiujqMrxbR2pzEo6QVRA17OXwc3wxpj083eFkjeiTZEH8R3SySq8BbJGviePZqDyT4-PHrp4uhry5__toQprCbXWwvC5jIrGCJJ7KiDGlaJq7vFyGNU-GKiPGLihaiUijNwvcb8UAMBN5wRusLeelDczfyXc8LYvD60GV-4QYh92EdzPxyEboCAk61NJfnbb-56C8NpWLYKLxTlwrMeKxEFW0aYZSH-HTQ27a_tH54YUa-NMz_DZZ1iII">