http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57790
Bug ID: 57790 Summary: Waste work in can_move_insns_across() Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: pchang9 at cs dot wisc.edu CC: nistor1 at illinois dot edu Created attachment 30429 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30429&action=edit Suggested patch The problem appears in revision 200588 in version 4.9. I have attached a one-line patch that fixes it. In method "can_move_insns_across()" in df-problems.c, the loop on line 4038 should break immediately after "fail" is set to 1. All the iterations after "fail" set to 1 do not perform any useful work, at best they just set "fail" again to 1.