http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55135
--- Comment #10 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-28 23:58:38 UTC --- Created attachment 29557 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29557 Collected hacks to make the test case compile in reasonable time with -O0 Patch does 2 things: - Queue up to-be-removed EH regions, instead of removing them one-by-one. Removing them one at a time results in walking the list of EH regions repeatedly, thus taking O(# of EH regions ** 2) time. - Rewrite init_subregs_of_mode and subroutines to first collect the invalid mode change subregs in sbitmaps, and then converting the final sbitmap to a bitmap. This trades memory for time: the bitmap lookups are also potentially O(# of registers ** 2) and this test case has more than one million registers, many of them with invalid mode changes (to be fixed up by IRA/LRA). Peak memory at -O0 is <4GB. Compile time on a "Quad-Core AMD Opteron(tm) Processor 8354" at 2200MHz is 240s, half of it still taken up by IRA+LRA. At -O1 the einline pass is consuming almost all compile time again. -> Honza: Can we please have a proper permanent fix for this recurring problem? What's there now just Does Not Work!