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!

Reply via email to