This backport contains 1 patch from gcc main stream tree. The commit id of these patchs list as following in the order of time. 0001-re-PR-tree-optimization-92555-ICE-in-exact_div-at-po.patch f1e0c7e0eb3eafb122fc3d00242828c82a9286a2 diff -Nurp a/gcc/testsuite/gcc.dg/vect/pr92555.c b/gcc/testsuite/gcc.dg/vect/pr92555.c --- a/gcc/testsuite/gcc.dg/vect/pr92555.c 1970-01-01 08:00:00.000000000 +0800 +++ b/gcc/testsuite/gcc.dg/vect/pr92555.c 2020-08-11 09:36:18.060000000 +0800 @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-fwrapv" } */ + +signed char rq; + +signed char +pu (int tr, int al) +{ + signed char x8; + + while (tr != 0) + { + for (x8 = 0; x8 >= 0; x8 += 2) + ; + + rq ^= al ^ 1; + ++x8; + ++tr; + } + + return x8; +} diff -Nurp a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c --- a/gcc/tree-vect-loop.c 2020-08-11 09:35:10.952000000 +0800 +++ b/gcc/tree-vect-loop.c 2020-08-11 09:36:18.064000000 +0800 @@ -1415,6 +1415,18 @@ vect_update_vf_for_slp (loop_vec_info lo for (i = 0; i < nbbs; i++) { basic_block bb = bbs[i]; + for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si); + gsi_next (&si)) + { + stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (si.phi ()); + if (!stmt_info) + continue; + if ((STMT_VINFO_RELEVANT_P (stmt_info) + || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))) + && !PURE_SLP_STMT (stmt_info)) + /* STMT needs both SLP and loop-based vectorization. */ + only_slp_in_loop = false; + } for (gimple_stmt_iterator si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si)) {