------- Comment #2 from steven at gcc dot gnu dot org 2008-12-21 00:33 ------- Created an attachment (id=16951) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16951&action=view) Avoid expensive inline heuristics at O0, and speed up add_alias_set_conflicts
This problem is always going to be, at the core, that add_alias_set_conflicts is a quadratic problem in the number of stack variables. But we can avoid calculating this at -O0 for the inline heuristics but not for bin-packing stack variables. And we can also try hard to make the quadratic loop as cheap as possible. Without this patch, for compiling the full test case (at -O0) my ia64 host spends 952s in "callgraph optimizations", 1903s in "inline heuristics", and 1013s in "expand" (total 3868s). With the patch, the numbers are 1s in "callgraph optimizations", 0s in "inline heuristics", and 587s in "expand" (total 588s). Given the nature of this unholy test case, I think the patch is close to the final form I intend to submit, at least algorithmically. There are enough areas left where we spend a lot more time... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38584