<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110931>110931</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISC-V] Assertion `MO.getParent()->getParent() == Src.getParent()' 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
int a;
char b = 48;
long c[256];
int main() {
for (long d = 163 - 161; d < b - 33; d += 2)
a = ({
__typeof__(0) e = ({
__typeof__(0) f = ({ c[6]; });
long e = c[d] ? c[d * 6] : 1;
f > e;
});
a > e ? a : e;
});
}
```
`/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/clang -I/scratch/tc-testing/compiler-fuzz-ci/csmith-build/include -fsigned-char -fno-strict-aliasing -fwrapv -march=rv64gcv -flto -O3 -fuse-ld=lld -mrvv-vector-bits=zvl red.c -o rv64gcv.out`
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 i32 @main() {
for.body.preheader:
%0 = tail call i32 @llvm.vector.reduce.smax.nxv2i32(<vscale x 2 x i32> zeroinitializer)
store i32 %0, ptr null, align 4
ret i32 0
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smax.nxv2i32(<vscale x 2 x i32>) #0
attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
Command/backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc rv64gcv.out.0.4.opt.ll
llc: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp:548: bool {anonymous}::RISCVVectorPeephole::ensureDominates(const llvm::MachineOperand&, llvm::MachineInstr&) const: Assertion `MO.getParent()->getParent() == Src.getParent()' 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-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc rv64gcv.out.0.4.opt.ll
1. Running pass 'Function Pass Manager' on module 'rv64gcv.out.0.4.opt.ll'.
2. Running pass 'RISC-V Vector Peephole Optimization' on function '@main'
#0 0x000057ef368b32b0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1ed92b0)
#1 0x000057ef368b06bf llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1ed66bf)
#2 0x000057ef368b0815 SignalHandler(int) Signals.cpp:0:0
#3 0x00007f6439042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f64390969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f64390969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f64390969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f6439042476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f64390287f3 abort ./stdlib/abort.c:81:7
#9 0x00007f643902871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f6439039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x000057ef3511546b (anonymous namespace)::RISCVVectorPeephole::ensureDominates(llvm::MachineOperand const&, llvm::MachineInstr&) const (.isra.0) RISCVVectorPeephole.cpp:0:0
#12 0x000057ef35115ae0 (anonymous namespace)::RISCVVectorPeephole::convertSameMaskVMergeToVMv(llvm::MachineInstr&) RISCVVectorPeephole.cpp:0:0
#13 0x000057ef35116898 (anonymous namespace)::RISCVVectorPeephole::runOnMachineFunction(llvm::MachineFunction&) RISCVVectorPeephole.cpp:0:0
#14 0x000057ef357a2217 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#15 0x000057ef35dced47 llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f4d47)
#16 0x000057ef35dcf199 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f5199)
#17 0x000057ef35dcfb51 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f5b51)
#18 0x000057ef35094ab6 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#19 0x000057ef34fd8b06 main (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x5feb06)
#20 0x00007f6439029d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#21 0x00007f6439029e40 call_init ./csu/../csu/libc-start.c:128:20
#22 0x00007f6439029e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#23 0x000057ef3508b555 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x6b1555)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc
```
Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWVtvnLzW_jXOzRIIzPkiF5NOR1-kRomaKrcjY8yMvxgb2WZy-PVbNsyByeRV2_22u0oJGPtZ61lH4xBj-EYydo2yG5Qtr8hgt0pf98RqTp8DzXfKXNWqebv-wYylxDCULFC0RNEC5dH4Q8dnLi0QlNyMT3RLNNSAkiWk5WFUKLkBirIbnOUoWx7G3dqOcIlwiXAFqJjGAVqlAeHSL2w8XJwnEECcxyi58UNfoIYAkmR6xjduFka42mMAEL_SoR-R3b_12r71TLXrNcJl5ESzT2ZemtuezPWsJk6AiqUTn5wheBKjADe7QdkSULIaHwDhBeTj0ALiD4udsK_AzsYvSiLjVI9NPNzJsrMV7nHuzuMjXhmqiaVbhFeWBpYZy-VmfKCq67lgOmiH9_fA6kE-I7yqBy6aYEN3h3shdl0guBxe3ZDz8IoKIjcQ3H6OPwen3A2Zjttt4EERXnFJxdAwCFofv03g4y1opQqMC10bEMGJ4U5Q-6JJv4OgI5puUbLUuzzd0B0ErbAKgvsEgnYwLBANSpZCNBB0ercLdoxapYOaW4OS5ftOgGZNSCFQMCGEarBHg_nrd9YMlDXw7dvTHdx-_5gszh7A9Thqid4wCw2xRJA3NdgpoDALOpQsWNCjZJGn_hLww02MS5QsYlwGMsHj2KMbw3gGazXvxT6eseaG7vI0GOSzVC9y9EmwkcNh2XhtWMslA55gQGl0KSlbpUNXEsJesy0jDdMHmgAIZ5EXaQkXQIkQeyjHPByNGmpvptB05DWUrzvME-ykJF92hhLB4BUwvLqFLpDfmVZccsuJ4O9MHxPbWKUnTXEWIfwFeqtBDkK4eyL4RkK6V0wz66dG53E_XpMbWA2SWq4kLKzVxqWNVI5ATegzSNVqxkAq8yYpSDXIFy4bMD2jgyCW1ILBCxdCMztoCR3rlH5DuJRKsoPGDaOCaPbfWsR7AyezwCPWal4Plhn_avR6cfMvUoBPS4W_flFdR6TLTSfMakIvtIq9sb_CnyouQtDT9AyjMA1Vb0Mhpg4kqPPsb4h3wk5-8Rrh1Q-faQivvt8-fnna_37yLn1grN8qwULauzTOXBtcQK2UcI4hUsm3Tg3GWTVZoGRxYen4gkkzaLZUHZfEMoNwSZU0FrwmfsYdoVsu2X3PtHdB7uL_w-tbaaz2LyvwCE6fhTFM-6hHeXR3H26YfSCaSTtmfYCSr2dDLrRcdD1qej4b4QJawgVrwtHaD9--Lh6_ghnqjlsgUA8b0KxX2oJVsLW2d3mG8Arh1Ybb7VCHVHVzYwe9Vv_PqLMyN2ZwBlgBkQ3se4DdMqCamC0cIm8S_2hd3DdD1x9CMQrHHvmg1UaTDojeDB2T1vxmVPwrQRlPSn0fpHQtqyfGpXFxqEgPbuCOSLJx9a8AJaFTzeCqOy4-QcbFZAX8CboLuOAJxpCDfczBfW95x9-JEzzJavd6IFwcmkKx31C4chO9RlEUZQVrk7ysE1xHJ_Fn3sx486C5tN4pP3x9wOVxkiYva2WsZqSbApi7sKr8_urP-QXhm-g1Zk2F6-jYWRBO4jNOUV63lzh9H-Qj30gi_o_IRjBt9lnyV9TO87qdqY3P1S7jDGYKIlxOlh2HzVSgIv__AJRMQEWbp0kVpTjD0URqrH2vZb7O09N9hHtBQ6PC3Kvnl8yUS-eYVV61FNbr3m41I836mQux5l0vmMtIH4AQIrySvRUIr06nha6Kp25DVORH_Oxn8KVlWhLxj8iF32CdWCO_hHy67B_hyuoMrjg3blrksDHeHx5pvEV4FfqnN9Ow3hW-XhnuAkETbpjHxoXbAR6hyzk0Los2AVK7kuuhbDO6zw-N2sWO8RGh-oAQ17CWYi0UadaNcunvsbj0dN1wZzaUjHBxXDiVJre7TIrmgEnFqvzXQskvOYSSw5ylZxbHWZrXDvPQV0GSjpnel5nqlzvsZ711apw_22GdRiE3moT-g_Hz3cFJ8jl2-JwdYdFvs6NK7pi2j6Rjd8Q8P90xvWE_1NPd7hLRUw4_rW9ypm9eVuVv66sHeS8nbfYd8JKmx3e_pmw6U7YgGMfFR1_u0V3rPdHrokJnmjin90Tb0ekX8C7rlc30aihr0lO9Vg9u6X4T8Msa_fFmlLRpkxazJM3PGLVxVf0Eozu_tZm7fBr6i2yyuKpmbIpzNnUWn7ARbEPo27TROfK67Xpx4PY_51Rn8YxTOeMUVSmpc5hkHdxAt0QjvPA_p1Xv27enuy9KWvZqJxZC0MuxXZ3KSdvG7af8id_fIJ61rI5m7QOftSRcNVUE67XrOmtjibZr99m8PrQ6aoaPzXhq95cWhVv3yed3EflRanwulaWRPyNZc8ntuaDx1qEHHn3srv7sBx9Ni_El0BmVSywugieFq83ZEXte16OyzrIMRtS_4bi8jrMsOzju3Tirwu39D-CuSw37j5KSKs38dx5rxmT6c3p9fgKyUoNsYMcJOGSmr5rrpKmSilyx67jARRWlZYSvttcUJ1nN0jjPaN3WNM9YE7GENiWt4yZK0it-jSOcxlGEcZwkGIdpi7OE1kXV1jXNGENpxDrCReiPkJTeXPlP4-s4jqokvhKkZsL4M32MJXsB_xZhjLLllb72zOphY1AaCW6sOcJYboX_Y8D4cYiy5R87IbgatLj-_SOAieruGv8nAAD__7CAfCc">