vect: Skip epilogue loops for dbgcnt check [PR96451]

As the PR shows, commit r11-2453 exposed one issue that vectorizer
wants to vectorize the epilogue loop and leaves the if-cvt body there,
but later dbgcnt check disables it, the left scalar mask_store
statement causes ICE.

As Richard pointed out in that PR, the dbgcnt is to count original
scalar loops, so this fix is to make it skip the epilogue loops.

gcc/ChangeLog:

	* tree-vectorizer.c (try_vectorize_loop_1): Skip the epilogue loops
	for dbgcnt check.
This commit is contained in:
Kewen Lin 2020-08-05 02:50:49 -05:00
parent aa5ea20c2b
commit ea858d0957

View file

@ -1066,7 +1066,8 @@ try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
return ret;
}
if (!dbg_cnt (vect_loop))
/* Only count the original scalar loops. */
if (!LOOP_VINFO_EPILOGUE_P (loop_vinfo) && !dbg_cnt (vect_loop))
{
/* Free existing information if loop is analyzed with some
assumptions. */