https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100934
--- Comment #10 from rguenther at suse dot de <rguenther at suse dot de> --- On Mon, 14 Jun 2021, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100934 > > --- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > (In reply to Richard Biener from comment #8) > > --- a/gcc/tree-ssa-threadupdate.c > > +++ b/gcc/tree-ssa-threadupdate.c > > @@ -2379,12 +2379,15 @@ jump_thread_path_registry::duplicate_thread_path > > (edge entry, > > missuses of the functions. I.e. if you ask to copy something weird, > > it will work, but the state of structures probably will not be > > correct. */ > > + bool loop_header_duplicated = false; > > for (i = 0; i < n_region; i++) > > { > > /* We do not handle subloops, i.e. all the blocks must belong to the > > same loop. */ > > if (region[i]->loop_father != loop) > > return false; > > + if (region[i]->loop_father == loop) > > + loop_header_duplicated = true; > > The if right above this returns false if loop_father is not loop, so > wouldn't be loop_header_duplicated == true whenever n_region != 0 (or always)? whoops yes, this should be region[i] == loop->header but as said the issue is elsewhere (patch in testing) and the issue in duplicate_thread_path does not have a testcase yet.