<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/89285>89285</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[CodeGen][RISC-V] Assertion '(FrameSDOps.empty() || MF.getFrameInfo().adjustsStack()) && "AdjustsStack not set in presence of a frame pseudo instruction."' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testcase:
```c
char a, o;
short b, k, p;
int c, d, g, h, i, j, l, m;
extern int e[];
long n;
_Bool f[5];
void q() {
for (unsigned r = 0; r < 24; r++) {
for (short s = 4; s; s += 4)
;
for (int t = 0; t < l; t += 9093) {
a = i ? o ?: h : o;
b = ({ b ?: j; });
for (signed char u = 0; u < 5; u += 2)
;
}
for (int v = 0; v < l; v += p % l) {
if (h)
d = i ? k : m ? o : 0;
e[r * 25 + v * 25 + r] = 0;
}
if (g)
c = l ? i ?: n : k;
f[r] = 0;
}
}
```
Godbolt: https://godbolt.org/z/qETrEoaqh
Reduced LLVM IR:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define void @q(i32 %0, i64 %1, ptr %f, i1 %tobool10.not) {
entry:
%cond74 = select i1 %tobool10.not, i64 %1, i64 1
tail call void @llvm.memset.p0.i64(ptr %f, i8 0, i64 24, i1 false)
%cond55.conv48 = select i1 %tobool10.not, i32 %0, i32 1
%conv79 = trunc i64 %cond74 to i32
store i32 %cond55.conv48, ptr null, align 4
store i32 %conv79, ptr %f, align 4
ret void
}
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0
attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: write) }
```
Godbolt: https://godbolt.org/z/WGK8d6MbG
Backtrace:
```
> /scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc reduced.ll
llc: /scratch/tc-testing/tc-apr-17/llvm/llvm/lib/CodeGen/PrologEpilogInserter.cpp:375: void {anonymous}::PEI::calculateCallFrameInfo(llvm::MachineFunction&): Assertion `(FrameSDOps.empty() || MF.getFrameInfo().adjustsStack()) && "AdjustsStack not set in presence of a frame pseudo instruction."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@q'
#0 0x00005e6f82f4eee0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x1d04ee0)
#1 0x00005e6f82f4c2ef llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x1d022ef)
#2 0x00005e6f82f4c445 SignalHandler(int) Signals.cpp:0:0
#3 0x00007c689ea42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007c689ea969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007c689ea969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007c689ea969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007c689ea42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007c689ea287f3 abort ./stdlib/abort.c:81:7
#9 0x00007c689ea2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007c689ea39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005e6f820500f1 (anonymous namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&) PrologEpilogInserter.cpp:0:0
#12 0x00005e6f81eb80c7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#13 0x00005e6f824aded6 llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x1263ed6)
#14 0x00005e6f824ae129 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x1264129)
#15 0x00005e6f824aea95 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x1264a95)
#16 0x00005e6f817d1a8a compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#17 0x00005e6f8171c7c6 main (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x4d27c6)
#18 0x00007c689ea29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#19 0x00007c689ea29e40 call_init ./csu/../csu/libc-start.c:128:20
#20 0x00007c689ea29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#21 0x00005e6f817c8315 _start (/scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc+0x57e315)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-apr-17/build-rv64gcv/build-llvm-linux/bin/llc
```
Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWF1v2zjW_jXMzYEFifq-yIWdxH2Dt8EUbTF7aVAUJbOhSA1JuUl__YKULFuOO9PZabFY1GUoSuc5z_kkJWIMbyVjtyjdoPT-hgx2r_RtT6zm9Hml-UGZm0rVr7efmbGUGIbiNQrvUbhGWTj-6HhN90QDQfgOFIo345rZK22hcovPbujnO1xaoG6pdkPrhr0buBu-uEG4oZsF2ItlWoKTYyPZ-ZZQsgU5X-42SgloULpJz586KF7DHwgXCJeA8mkVoFEaEC4G6T1RgwYU30OI4o2f3gFO_Bzhjf8thGfx0VLjZf3zxg_gRPwSLk8yADOrMwhnmj0pt165mKYjTBmW8RsGAMRLcUDxFpQbUbyGPbhRLTQBVP5R54V84y_8s1-cFpTfO5bL54_mjb7xMR5OHAfPMZ2mI0d8YeqFsU7LNcsPJ9TDyfLDEbUHhFOXE2-M542D2L_RWp855dn7opsdtPaKpuddOjkaa8CpU-eVzhcapfczte-YMVJoLyhQLya8Un70tPTan5fxdwSuqZmVnCbHohsv36m6UsL6cFvbG1eceIvwth1vBEq3CG-_Ibz94-GzflDkj_0E5MePrB4oq-H9-9-f4PHj29oW4tAB1-OqJbplFmpiiSCvarBTLmG26lC8Zqsexess8cOKz5MIFyheR7hYyRiPa5_cGsYLWKt5L9gRUnNDD1myGuSzVF_lSnA5vKxaOcxi41izhksGvrhRErr65jF2yRL6dpIlbh755mNdlNPGr0dualWllIjCQCq7yCwmrX6dvQHuWapknSeenmGCUXsVY6nRzaMjhiVcACVCzGSdc4OOdYbZoA8D5zFcLFgWMFuBk4l3Q4RhZ6k2cUvTgCp5SIofoHjuoBjPFEekQ156CKsHSY_mTNZb5QSOmo1Vmh3RFhyO7paD8G2cCN5KSL4neMjLywBdSGhmvdsuy2Ec4w1sB0ktVxLW1mrjK005Z1eEPoNUjWYMpBrkVy5r-MqF0MwOWkLHOqVfES6Ibjvm0hi-am5PDq4ZFUSzvw6a09fbQbMRQEnxOsZwiuAUPt51xBVlCQjH4bkZxFrNq8Ey42-NlZBv_rkh8BPax7_e_X9RZ0_Vu3PGG0KfrSb0yqHgGJkHQHhrqCaW7hHeWrqyzFgu2_GC9HoV5Qhvq4GLeqUPWdLSw3ztnD2WvlviEuGtEBT02LYCIaYDgKDOhh_T5DDP_vAK4e2dqtk75uA_aCVU-9BzodpHaZi2TAe0d50tzlOnZUyEfEOkkq-dGozzbrxG8frDw-M4oUTQQRDL7ogQW0069igbhXDhlfpHngjdc8mOaYtw5vfeNayNU-oy2XkRF1780_1vvQlY19vX-QBzh_I7eNoGLbPnKhAuA1J_GYw1nyyhz-PSmG8Zwplrruuz-yCVBcMscAm9ZoZJykA1QKBxqNAbNtQKuDRWD55r4FowzqEhXLA6GEPw4f3D-tMDmKHquAUC1dCCZr07FFl1mV3c7ocqoKpbhmPVa_WFUYvwlhszMIPwFoisgUsqhpqB3TOgmpg9VMfMm9SPptRD18-pGAbjNvxBq1aTDohuh45Ja348Vf5RUkaT_o-DlFy20BPjCjufO9UHt_BEJGmZdv5UEjpVD24PxPkZGs4nI_F3EMecHRjC2zFxBwZj7vo0whn4BIEtl0Twb2RMOK-wOZJBOB-3z3zeDOIQwpcwDMOUZU2Bm4QxFsIphc2rmfJec2l9BD77ZnCe55p83SljNSOdz787d4Ifs7H4-UFAeBO-RHWYMBaetkiE4-jCFIpZc82Uj4P8xFtJxP8RWQumzbHcfiVbjFmzYIsv2SZJCgte46HZMRuXzdSjQv9_BoonoJxmRclIglMcTraMje-lyHZZcn66cjdoYFSQeXpeZEEuWWKWWdlQ2O16u9eM1LtnLsSOd71grth8rkGA8Fb2ViC8PX8scF07ccfEPDvhpz-CL93LIBF_ipz7Y-eZN7JryOdifwpXlBdw-aVzkzyD1vh4eKRxivA28Fevpma962m9MtwlgibcMI-Nc3cuPkEXS2hc5E0MpHLd1EPZegyfXxrZRc7iE0L5BiGqYCfFTihS72rVET7GhUtvrlvuTEvJCBdFuaM0hd0VULgEjEtWZn8vlbzInEoOc1mVYRqGjTuwFvPWCpJ0zPS-qZQXm6we5G_yzTb6V1ss_MkGf1Y8jt2iCiNWFSHN4bvwrpufEbvK6IIKwkXQE20DV2BwBe86r3jhtYTUrM7OeG0_ONHjvvK3Gf2qNoezmNXL8CcXhrAIlz9gyJPfJJehnpZ-vRFJ5A9TJyPSSyNImZ4ZIVhL6OuUuidzHrtezCb9t0whZbowJVskfF5HpCBAVddzwWan0z3RCK_97-7M0Pfvf3-6U9KyFzuRF4JeT-B8qSeiOc3AN6RfZ29S45wu0--yyZZ1GcJu55rWzlii7c69d-3mTknN8LaXT7vFNaFgj-J16jeh7KT1sjGXLAn9Z4Edl9xeKhqnDn3l0cfm7D-o4JNHcXgNdGHKNSuugse5a7TpCTtaRosWLudH1F8YrzRncXRKz2_GORMef_t8_ibi9FOlmT_4s3qsmJ9O5-qLrR-3apA1HDiBZvj2jengpr6N6zIuyQ27jfIoTrIEF_HN_jahWdNUVc2qqCa4juqqIWUWUVKFTYhZfMNvcYiTMIkK9y-MgyaKQpzWZdEklJYpRknIOsJF4D9AKN3e-Hek26LERXojSMWE8V_xMZbsK_ib7kUtvb_Rt96yamgNSkLBjTUnFMut8J__j-_A6T1KNx8fP92tfkfp_fn7KM7_F95HbwYtbv_zF07vz38HAAD__ytmT6w">