https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44102
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Steven Bosscher from comment #3) > This fix is wrong. > (http://gcc.gnu.org/viewcvs?view=revision&revision=159495) > > There is a check at the start of cleanup_cfg to always set the > CLEANUP_CFGLAYOUT flag whenever we're in cfglayout mode: > > 120893 steven /* Set the cfglayout mode flag here. We could update > all the callers > 120893 steven but that is just inconvenient, especially given that > we eventually > 120893 steven want to have cfglayout mode as the default. */ > 120893 steven if (current_ir_type () == IR_RTL_CFGLAYOUT) > 120893 steven mode |= CLEANUP_CFGLAYOUT; > 120893 steven > > > So this part of your fix: > > - if ((mode & CLEANUP_CFGLAYOUT) > + if (current_ir_type () == IR_RTL_CFGLAYOUT) > > is incorrect. So the way I read this is that the fix is not wrong, just it uses the new check instead of the old way. Now I am not sure what about the status of always using cfglayout because what I remember is that is used all the way until post reload(RA) now.