https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80928
--- Comment #23 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 41612 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41612&action=edit patch for the vectorizer ICE This fixes the slp-perm-8.c ICE but causes libgomp vla1.f90 to ICE with during RTL pass: loop2_done /tmp/trunk/libgomp/testsuite/libgomp.fortran/vla1.f90:40:0: internal compiler error: in patch_jump_insn, at cfgrtl.c:1264 0x86029db patch_jump_insn /tmp/trunk/gcc/cfgrtl.c:1264 0x8602ad4 redirect_branch_edge /tmp/trunk/gcc/cfgrtl.c:1298 0x8609146 cfg_layout_redirect_edge_and_branch /tmp/trunk/gcc/cfgrtl.c:4406 0x85efdc7 redirect_edge_and_branch(edge_def*, basic_block_def*) /tmp/trunk/gcc/cfghooks.c:356 0x952ff29 try_forward_edges /tmp/trunk/gcc/cfgcleanup.c:575 0x95361ed try_optimize_cfg /tmp/trunk/gcc/cfgcleanup.c:2992 0x95367a6 cleanup_cfg(int) /tmp/trunk/gcc/cfgcleanup.c:3203 0x89477a9 execute /tmp/trunk/gcc/loop-init.c:475 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. so sth goes wrong with labels when splitting the work :/ I suppose one of the side-effects of redirect_edge_and_branch_force was to duplicate the label appropriately which means we cannot simply use unchecked_make_edge. Probably the reason for using the weird add edge to old label and redirect code :(