]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/116990 - missed control flow check in vect_analyze_loop_form
authorRichard Biener <rguenther@suse.de>
Mon, 7 Oct 2024 09:24:12 +0000 (11:24 +0200)
committerRichard Biener <rguenth@gcc.gnu.org>
Sun, 13 Oct 2024 09:20:14 +0000 (11:20 +0200)
The following fixes checking for unsupported control flow in
vectorization to also cover the outer loop body.

PR tree-optimization/116990
* tree-vect-loop.cc (vect_analyze_loop_form): Check the current
loop body for control flow.

(cherry picked from commit b0b71618157ddac52266909978f331406f98f3a2)

gcc/tree-vect-loop.cc

index d5504930a99dec575189a28b8f1abef24cca77bc..744044735d3909249a7527767d58ce2d300fdaca 100644 (file)
@@ -1751,9 +1751,8 @@ vect_analyze_loop_form (class loop *loop, vect_loop_form_info *info)
                       exit_e->src->index, exit_e->dest->index, exit_e->aux);
 
   /* Check if we have any control flow that doesn't leave the loop.  */
-  class loop *v_loop = loop->inner ? loop->inner : loop;
-  basic_block *bbs = get_loop_body (v_loop);
-  for (unsigned i = 0; i < v_loop->num_nodes; i++)
+  basic_block *bbs = get_loop_body (loop);
+  for (unsigned i = 0; i < loop->num_nodes; i++)
     if (EDGE_COUNT (bbs[i]->succs) != 1
        && (EDGE_COUNT (bbs[i]->succs) != 2
            || !loop_exits_from_bb_p (bbs[i]->loop_father, bbs[i])))