Hi, This patch adds a missing check that a basic blocks exists before using it.
Bootstrapped and tested on powerpc64-suse-linux. Committed. Ira ChangeLog: PR tree-optimization/49610 * tree-vect-loop.c (vect_is_slp_reduction): Check that DEF_STMT has a basic block. testsuite/ChangeLog: PR tree-optimization/49610 * gcc.dg/vect/pr49610.c: New test. Index: testsuite/gcc.dg/vect/pr49610.c =================================================================== --- testsuite/gcc.dg/vect/pr49610.c (revision 0) +++ testsuite/gcc.dg/vect/pr49610.c (revision 0) @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +extern int g_7; +void func_13(int p_17) { + int i; + for (i=0; i < 16; i = (signed char)(i+1)) { + g_7 &= p_17; + g_7 &= (p_17 > 1); + } +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ Index: tree-vect-loop.c =================================================================== --- tree-vect-loop.c (revision 175785) +++ tree-vect-loop.c (working copy) @@ -1823,6 +1823,7 @@ vect_is_slp_reduction (loop_vec_info loop_info, gi ("vect_internal_def"), or it's an induction (defined by a loop-header phi-node). */ if (def_stmt + && gimple_bb (def_stmt) && flow_bb_inside_loop_p (loop, gimple_bb (def_stmt)) && (is_gimple_assign (def_stmt) || is_gimple_call (def_stmt) @@ -1852,6 +1853,7 @@ vect_is_slp_reduction (loop_vec_info loop_info, gi ("vect_internal_def"), or it's an induction (defined by a loop-header phi-node). */ if (def_stmt + && gimple_bb (def_stmt) && flow_bb_inside_loop_p (loop, gimple_bb (def_stmt)) && (is_gimple_assign (def_stmt) || is_gimple_call (def_stmt)