]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/113385 - wrong loop father with early exit vectorization
authorRichard Biener <rguenther@suse.de>
Mon, 15 Jan 2024 09:03:59 +0000 (10:03 +0100)
committerRichard Biener <rguenther@suse.de>
Mon, 15 Jan 2024 11:27:11 +0000 (12:27 +0100)
The following avoids splitting an edge before redirecting it.  This
allows the loop father of the new block to be correct in the first
place.

PR tree-optimization/113385
* tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
First redirect, then split the exit edge.

gcc/tree-vect-loop-manip.cc

index 1d6e5e045c38d36313c726c76109e5f28fc68a72..c7e73f65155930fae2713d410f179616b3e12388 100644 (file)
@@ -1613,11 +1613,11 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit,
            {
              if (!alt_loop_exit_block)
                {
-                 alt_loop_exit_block = split_edge (exit);
                  edge res = redirect_edge_and_branch (
-                               single_succ_edge (alt_loop_exit_block),
+                               exit,
                                new_preheader);
                  flush_pending_stmts (res);
+                 alt_loop_exit_block = split_edge (res);
                  continue;
                }
              dest = alt_loop_exit_block;