<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/124132>124132</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISCV][Clang] Crash in riscv backend
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
amcn
</td>
</tr>
</table>
<pre>
Compiling the following admittedly contrived code:
```c
int main()
{
void *ptr = __builtin_alloca(1ull << 31);
return 0;
}
```
with clang target set to `riscv32` or `riscv64` produces the following error:
```
fatal error: error in backend: Frame offsets outside of the signed 32-bit range not supported
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 19.1.1 (1ubuntu1)
Target: riscv32
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/b-8d596a.c
clang: note: diagnostic msg: /tmp/b-8d596a.sh
clang: note: diagnostic msg:
********************
```
When emitting IR via `-S -emit-llvm` I get:
```
; ModuleID = 'b.c'
source_filename = "b.c"
target datalayout = "e-m:e-p:32:32-i64:64-n32-S128"
target triple = "riscv32"
; Function Attrs: noinline nounwind optnone
define dso_local i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca ptr, align 4
store i32 0, ptr %1, align 4
%3 = alloca i8, i32 -2147483648, align 16
store ptr %3, ptr %2, align 4
ret i32 0
}
attributes #0 = { noinline nounwind optnone "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv32" "target-features"="+32bit,+a,+c,+m,+relax,+zmmul,-b,-d,-e,-experimental-smmpm,-experimental-smnpm,-experimental-ssnpm,-experimental-sspm,-experimental-ssqosid,-experimental-supm,-experimental-zacas,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-f,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b" }
!llvm.module.flags = !{!0, !1, !2, !4, !5}
!llvm.ident = !{!6}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 1, !"target-abi", !"ilp32"}
!2 = !{i32 6, !"riscv-isa", !3}
!3 = !{!"rv32i2p1_m2p0_a2p1_c2p0_zmmul1p0"}
!4 = !{i32 7, !"frame-pointer", i32 2}
!5 = !{i32 8, !"SmallDataLimit", i32 8}
!6 = !{!"Ubuntu clang version 19.1.1 (1ubuntu1)"}
```
which when fed to `llc` causes the following stack to be dumped:
```
LLVM ERROR: Frame offsets outside of the signed 32-bit range not supported
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llc b.ll
1. Running pass 'Function Pass Manager' on module 'b.ll'.
2. Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@main'
#0 0x00007ea00bead12f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x00007ea00beaae39 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:106:18
#2 0x00007ea00bead880 SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x00007ea00a845250 (/lib/x86_64-linux-gnu/libc.so.6+0x45250)
#4 0x00007ea00a8a3f1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007ea00a8a3f1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007ea00a8a3f1c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007ea00a84519e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007ea00a828902 abort ./stdlib/abort.c:81:7
#9 0x00007ea00be02fd4 llvm::report_fatal_error(llvm::Twine const&, bool) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/ErrorHandling.cpp:125:5
#10 0x00007ea00be02e0d (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e0d)
#11 0x00007ea00eb7101c eliminateFrameIndex build-llvm/tools/clang/stage2-bins/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp:0:0
#12 0x00007ea00c3cddf6 replaceFrameIndicesBackward build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/PrologEpilogInserter.cpp:0:0
#13 0x00007ea00c3cddf6 replaceFrameIndicesBackward build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/PrologEpilogInserter.cpp:1357:5
#14 0x00007ea00c3cddf6 runOnMachineFunction build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/PrologEpilogInserter.cpp:280:7
#15 0x00007ea00c2a7dc9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/CodeGen/MachineFunctionPass.cpp:94:13
#16 0x00007ea00c005e12 llvm::FPPassManager::runOnFunction(llvm::Function&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1440:27
#17 0x00007ea00c00ba84 llvm::FPPassManager::runOnModule(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:1486:13
#18 0x00007ea00c0065bf runOnModule build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:0:27
#19 0x00007ea00c0065bf llvm::legacy::PassManagerImpl::run(llvm::Module&) build-llvm/tools/clang/stage2-bins/llvm/lib/IR/LegacyPassManager.cpp:541:44
#20 0x000055fa4a88cb82 compileModule build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:0:8
#21 0x000055fa4a88a67f main build-llvm/tools/clang/stage2-bins/llvm/tools/llc/llc.cpp:409:13
#22 0x00007ea00a82a3b8 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x00007ea00a82a47b call_init ./csu/../csu/libc-start.c:128:20
#24 0x00007ea00a82a47b __libc_start_main ./csu/../csu/libc-start.c:347:5
#25 0x000055fa4a886e45 _start (/usr/lib/llvm-19/bin/llc+0x11e45)
Aborted (core dumped)
```
I've reproduced this against main HEAD and Ubuntu 24.10's clang package.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWt1z46iy_2vIC2WXhGRZfsiD8-HdVGXvpJLsOY8uBMjmBoEGkOLJX3-LD8my4z01d3Zm61TNiB9N03Q3X93E2Bi-k4xdg8UNWNxd4c7ulb7GDZFXlaLfrm9V03LB5Q7aPYO1EkK9uxqmDbeWUfENEiWt5j2jkCjKQLYGif9XJOEfAcmaSwsbzCVAJUAr17q8Ackawl5xCgFat1ZDkN3B7bbquLBcbrEQimCAyrQTAoLsFmS3MEtd9yz01cx2WsIk1MHybjpqUOKd2z0kAjv9sd4xCw2z0CoIikRzQ_oMgSKBSo-EIneEVivaEWbOrGZaK_3ZQpCsa2yxGNsDgFzCCpM3JqmjbTRuGFR1bZg1UHXWcOrqfgw_DRRmaFZxCzWWOwalstB0bau0ZRQka2_HKN2BYFmtlbRMOv83DZYU1pgLRqE3nh249RMDlwkEqOwMg7PeucAwBrnsFcGWKxmm5c-qk7aLcnumDVcSpqt5Ok-hnwrfngbmV-9Rp8fgymT9utcMU9goyoRraZXhB5CsH6SxWAhG77jXHKBNZzRAG8Er9xV9M0tXAG0qLqemSmXdkoKU451UxnICG-Nb3ASgv_HPT-HT4_365R6uX1_Xt7_D19_v4ebL4-OXfz_8z29w8_B4_wJfv3jyzZ-_wef7py_Pr2H6nzRrtSLMGEahUZ0mDKDSALSCbgawMYpwbBmFupPQEM1bOzJoBt3adq3YBnnfYzDa2KZ1LpqVdLEq8Jz8aEez_34f_303n27Jf--ZhMydHm5HPTzDnmO3-2YvcObIM7cW3B58gHF1fd5tILuBfyjaCfZw548NgJbVnAC0BMk6zMa25oJJt-NCO_LtbonGg4C6HYu_qc4OHGzWgGzNZi3I1hnynxkvcpCti3wmMzR7Sd3xNZFhNW_FOMKwCzxH1HLTSeK2F1xbq03wNpeCS7e9O_nOJYWqtVJJBpI1ZbVroUZt3QIRkGcIgjw5Hp0QoCyBw-kJ0CL1o4fD0rEDdAux4DsJ84EFTVlaq89ZjFWa-aES1-SPYrRIL0jKTgYrHYfrNkNpvszLrMjLY6e0mAiPMrOJ_E-aamajEuNhnqyxtZpXnWUmWu5cvbz5ay-6iajdSTtrFZeWaTcd2R1ACAsBEHLtUs2sxm3L5W7WYLsfWazuWOQxFpO3WauVZcQqPau6umZ6ZvgHG9nLyBtWw4y03di0Y5JpTmY6LIgJV82w7TQzIytANxmquAXoFqAbHAoSiiYUmgl8CPCjaToB0O2sch_qPsx_Di3TvGHSYjEzTdM2F6jyEtVcpl4kflWG08_07gLzBybYXKAK7M79czInNRftZbrxYmr32buP2RPVuall8j3Ud9i2OEDbYxFhb47k3pw02J4Rb4dpMA_UhlAm2C5io7mMDKxt2oCMxZYx6Stm6GcIqXcDCrvLQVW3TT3gE23NRLg5EWms5sQGbEksR7UnSpuuyA9-FZgeUzaALoAK60jisseRTeJWBdF9WzUe9e5zID0WXUQVH4FtsORtrDLxHlGDyYBYE5HhjVfrYGrCsGER96QdUC01Ebw91F_rkfTeYEK-fv06EL66OlX0pP5VxXZec2c9NwRrSoU7Lif0WnRmf6TaPcO0whNcTbA5YtKoSUVJ2qj-SKgb1nB6OBIG40PlvJE1Leb6SDDf5IS9p8H9h96tbIndaKoNuryTvef8wCkqtQmwyAeEg5YfuNrjAIQ2sUOD06IK8D3yB8M_gs0fVWCs3mL1bagfQhn6kNCHBKawyj4IC0Udika1EQylN-iDchlk1UFIXdUNlwHuYzESBt79FAytnBR5FVGlmhG1I_qIiOBG4QHzekDCDJ2IDuvwgxMZ9uQHdy6PyERSzSRhPOA9l1Zacay0uBuE7NsoeHDCW_jKWNBYslgGu9_CKG8mFiyymdgc_GdNmN4-zlgfp6xnGapHdIioyOmI6hHF1onrHX5vcMT7oRyb43ro33axHOiSDCCq27_JkScuQIeG_mYoh35m7GeGftHgPlrcizRBcaZ7kaJyhEVWjnSU5GMDWhQDzNCyKI-VAeXJamRZpCO5GMUVi0U2cpTpyrEgOAYaAKUu8Jw3Pqyc1wLvTAzsUhduodQHRwClaSxRLPNYLqKsKIhTJu2phGI6WjJpc2HPIBYg9E72WG-HUCMGWfkoPv3rnjHGwO4gR0cyF22ISwcR6ExEceT1UeyMG3yUkI39slODHHufIY7adNugNtlih4hDPk5J22Q6an426vI46qeQLVp97Lw461weO780WIg7bPEjb1wcNfYux97FJ8X_H6nuaMLn94U9J3v47lKamtH4sCAEcfkLccfH-QuCDysdX8Ug7ZqW0YvPCY-P__oD3j8_f3n-KS8HMc01XdVwCzGsuh3UzDU7VfbWti41AWgD0GbH7b6r5sSdvz4vH9LzVqv_ZS482XBjOhfAbnyuyyURHWVeGaKx2ftHD6sxYXOQrF-8xc7WYGkyB8nqSaudxg3Eete5UM9nRkIQWM2FAMk6dUzPnZTOZy02LvpfjrnUkyP8gSXeubWyhErCsG1DHuji_KUbGl2S8qSVUDsX52_uW-4hfJCGaS8aoCK6e8MlFvwjPo74QepBAZdoDlmZSzlDbpIckiRJlgwnScUwTVENvf-yNcjW5psJ4Elzab1TXp2LACqPTBq_b5WxmuEGIL8nubQu66s6LugszoZVSjjvhwQebYzFO-amX5rJlPl3lZewCADa_Cn5wRH4TmJh5lwSkK2XKAPZOs2iCemZCZhlq0smPHcyyPkdSyqYizvKn6PloB5p3WpJk8J9y6geOvdwWSbwRJFf5ac89X6KemRTPXCZL9DCP62N0g5lsS3ymeCyO8x2sgsNZG7UvADoJjn4LuERzQnMTwXirE4J3G5b6x_Ttm9ciC1vWsF8VuRX4BygjWxdtLKZss29trmb2iIKX3yPcHfqSiz-o9hl6ackii0uiZ32-Y-yytVU1vLcoemKQY25YV6I8XMB0Gbua98MZS5w3oS3RbTxnF4sWoJsPRhenkpF5SpBEFfu0PNyLA2z5UlBq9SZGbuvTldbgmqaTzZDOD63_t13Gx5kpzv59Z1LBomSxsadXCklfs4muXej-RXP5W7YKmgBsvXCX3ZZmpzrzhIaV-hfv7pG_8YmXrk7yC1Zdyf6VRvkxPd7lKUnxwWrlmmSEsgEb7jElvlT9EFSdvhhk-MDM9o8P7zc_mson9mOG8v0g6xVtD7x_4NWJ6cEyQildeEuO4HJqBMnzNxg8vaONf1h7W4VZb-51H0TrpRwm4SrhOkLmmX_VZql2WI5WTL5ReU6-UX-gcmeSzbevr9UK1QmcQ86pU7OLoLwkpLphXSmmQsL4uZ0eg_kk315JBZ_ZzMebbmgQzRllQ93qzPl5LwkSbJgKZqYsnlyPYeY5p8x4uEZoM0j22HybTL4sDzyPAknatB_eaZ_hcv8O_QPr_Qn2g-kX6l7WUx9X57pXiyqGk7U-zVanLhvdUmFo0-ElxEDxKOkh6YVozP_YScu8jTEEt4ANFwpi0WNc1yWpCoRJP6vw-yHvTgwuYzJfyeuK-PA6dnAuFjW_m_JP3G8PFlN1gtCZ5EDzqoSbrcuhtsai7XdEizE1ivhrkxius_RSQx9LnWa790Z546HYcTsfMR8WUHPzyW354ME6CTPvGQfvKTIxWcoXjYovyTxxIZL6l-UnOWTiwItzuajYPkCBpHfEWJ4z98khzRl-SKEEuvKp6muM1F6TItDmHGabj8AtOwZ9H97pR1xGfeeG4h3mEsTfmEAf79f3_m8NCb4KJ-nCUBLE1P9FpM3vGPzK3qd0VW2wlfsOl1myyJfpsv0an9N07TOSJJnZU7wsqhZlSVZiWhFq4Jmq8UVv0YJWiSpu6DyIk3ndY1QkSTZCuO0wGwF8oQ1mIu5fwhSenflM-brFOVphq4Erpgw_icXCMX1isDi7kpfe3dV3c6APBHcWHMUYbkV_ncaIRha3IHFza3vvLiDtz7v5jL8JX741cFVp8X1j2f3Ud3-Gv1fAAAA__88NoIr">