https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70232
--- Comment #14 from Jeffrey A. Law <law at redhat dot com> --- WRT c#8, the FSM threader is much better at finding jump threading opportunities which involve multiple blocks in the thread path. I'm still not entirely happy with the heuristics around that. Closely related, the FSM threader is particularly poor at identifying jump threads which use identical paths (starting from different incoming edges to the path). The FSM threader makes a unique copy of the path for each jump thread. THe old threader will create one jump thread path for that case and redirect all appropriate edges to that common path -- this can significantly reduce unnecessary block copying. I suspect (but have not confirmed) that limitation of the FSM threader is playing a role here. Addressing that is near the top of the gcc-7 queue. ANyway, I'll try to take a deeper look tomorrow.