https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113281
--- Comment #27 from Patrick O'Neill <patrick at rivosinc dot com> --- (In reply to Andrew Pinski from comment #26) > (In reply to Edwin Lu from comment #25) > > It's still persisting on trunk (at least for pr113281-1.c > > https://godbolt.org/z/M9EK44hKe) > > I looked into what the vectorizer produces: > vect__22.13_31 = (vector(8) int) vect_vec_iv_.12_8; > _22 = (int) a.4_25; > vect__12.14_33 = { 32872, 32872, 32872, 32872, 32872, 32872, 32872, 32872 > } >> vect__22.13_31; > _12 = 32872 >> _22; > vect_b_7.15_34 = (vector(8) short int) vect__12.14_33; > > that is valid thing to do. That is do the shift in `vector(8) int` and then > do a truncation. The issue originally was about doing the shift in > `vector(8) short` which is not happening here. The regressed testcase looks like its testing if riscv vectorizes the code at all (the first issue Juzhe noted in comment #3 and then fixed). So this is a performance regression for risc-v, not correctness.