It's already done by fwprop_done. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.
Richard. 2016-05-06 Richard Biener <rguent...@suse.de> * fwprop.c (fwprop): Remove duplicate cleanup_cfg call. (fwprop_addr): Likewise. Index: gcc/fwprop.c =================================================================== --- gcc/fwprop.c (revision 235865) +++ gcc/fwprop.c (working copy) @@ -1461,7 +1461,6 @@ static unsigned int fwprop (void) { unsigned i; - bool need_cleanup = false; fwprop_init (); @@ -1479,12 +1478,10 @@ fwprop (void) || DF_REF_BB (use)->loop_father == NULL /* The outer most loop is not really a loop. */ || loop_outer (DF_REF_BB (use)->loop_father) == NULL) - need_cleanup |= forward_propagate_into (use); + forward_propagate_into (use); } fwprop_done (); - if (need_cleanup) - cleanup_cfg (0); return 0; } @@ -1528,7 +1525,6 @@ static unsigned int fwprop_addr (void) { unsigned i; - bool need_cleanup = false; fwprop_init (); @@ -1542,13 +1538,10 @@ fwprop_addr (void) && DF_REF_BB (use)->loop_father != NULL /* The outer most loop is not really a loop. */ && loop_outer (DF_REF_BB (use)->loop_father) != NULL) - need_cleanup |= forward_propagate_into (use); + forward_propagate_into (use); } fwprop_done (); - - if (need_cleanup) - cleanup_cfg (0); return 0; }