https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111760
Bug ID: 111760 Summary: risc-v regression: COND_LEN_* incorrect fold/simplify in middle-end Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: juzhe.zhong at rivai dot ai Target Milestone: --- FAIL: gcc.dg/vect/vect-cond-arith-2.c -flto -ffat-lto-objects scan-tree-dump optimized " = \\.COND_(LEN_)?SUB" FAIL: gcc.dg/vect/vect-cond-arith-2.c scan-tree-dump optimized " = \\.COND_(LEN_)?SUB" https://godbolt.org/z/hEz51qf6a double __GIMPLE (ssa, startwith("loop")) neg_xi (double *x) { int i; long unsigned int index; long unsigned int offset; double * xi_ptr; double xi; double neg_xi; double res; unsigned int ivtmp; __BB(5): goto __BB2; __BB(2): res_1 = __PHI (__BB5: 0.0, __BB3: res_2); i_4 = __PHI (__BB5: 0, __BB3: i_5); ivtmp_6 = __PHI (__BB5: 100U, __BB3: ivtmp_7); index = (long unsigned int) i_4; offset = index * 8UL; xi_ptr = x_8(D) + offset; xi = *xi_ptr; neg_xi = -xi; res_2 = neg_xi + res_1; i_5 = i_4 + 1; ivtmp_7 = ivtmp_6 - 1U; if (ivtmp_7 != 0U) goto __BB3; else goto __BB4; __BB(3): goto __BB2; __BB(4): res_3 = __PHI (__BB2: res_2); return res_3; } There is no COND_LEN_ADD IR here which is incorrect.