https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61917
Kai Tietz <ktietz at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ktietz at gcc dot gnu.org --- Comment #5 from Kai Tietz <ktietz at gcc dot gnu.org> --- It is the same bug. All is related to the issue that 'dt' might become 'vect_internal_def' with 'orig_stmt' being NULL. By extending the assert at line 4993 as 'gcc_assert (orig_stmt || dt == vect_internal_def);' solves the issue for me for both provided samples. Index: tree-vect-loop.c =================================================================== --- tree-vect-loop.c (Revision 220748) +++ tree-vect-loop.c (Arbeitskopie) @@ -4990,7 +4990,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_i /* For pattern recognized stmts, orig_stmt might be a reduction, but some helper statements for the pattern might not, or might be COND_EXPRs with reduction uses in the condition. */ - gcc_assert (orig_stmt); + gcc_assert (orig_stmt || dt == vect_internal_def); return false; } if (!found_nested_cycle_def)