Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.
Richard. 2018-08-27 Richard Biener <rguent...@suse.de> PR tree-optimization/86927 * tree-vect-loop.c (vect_create_epilog_for_reduction): Properly use const cond reduction code. * gcc.dg/vect/pr86927.c: New testcase. Index: gcc/tree-vect-loop.c =================================================================== --- gcc/tree-vect-loop.c (revision 263875) +++ gcc/tree-vect-loop.c (working copy) @@ -5197,6 +5197,9 @@ vect_create_epilog_for_reduction (vec<tr if (STMT_VINFO_VEC_REDUCTION_TYPE (stmt_info) == INTEGER_INDUC_COND_REDUCTION) code = induc_code; + else if (STMT_VINFO_VEC_REDUCTION_TYPE (stmt_info) + == CONST_COND_REDUCTION) + code = STMT_VINFO_VEC_CONST_COND_REDUC_CODE (stmt_info); else code = MAX_EXPR; } Index: gcc/testsuite/gcc.dg/vect/pr86927.c =================================================================== --- gcc/testsuite/gcc.dg/vect/pr86927.c (nonexistent) +++ gcc/testsuite/gcc.dg/vect/pr86927.c (working copy) @@ -0,0 +1,15 @@ +#include "tree-vect.h" + +int a[28]; +int main() +{ + check_vect (); + a[4] = 1; + int c = 1; + for (int b = 0; b < 8; b++) + if (a[b]) + c = 0; + if (c) + abort(); + return 0; +}