This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c/7344: performance regression on huge case statements


> 
> On Thursday, October 10, 2002, at 10:04  PM, Nathanael Nerode wrote:
> 
> >http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
> >trail&database=gcc&pr=7344
> >
> >I'm tired of investigating this, but it seems likely that the problem
> >was introduced with the introduction of et-forest.c, since that's  
> >where the loop is.  This was introduced by Pavel Nejedly and committed  
> >to mainline by Jan Hubicka (along with most of the surrounding code).
> >
> >(So that's why I'm ccing you; it looks like you caused it, so maybe  
> >you  can figure out how to fix it. :-/)
> >
> As I mentioned, this is likely a known problem, with a known fix.
> 
> Jan, if you don't have plans to make it constant time soon, i suggest  
> we cache the info using the patch that is on the tree-ssa branch.

I will send patch to predict.c to avoid so many queries of dominance
tree (in this testcase they are compltely useless as the information is
just thrown away later).
The et-forest can be slightly reorganized to always keep the reference
to the predecesor together with the node, but I think it should not be
needed for release branch then.
It is log(n) complexity, so it is fast and if we run into problem with
it, we do quadratic work somewhere else and run into problem with 5
times bigger testcase again.

Honza
> 
> >--Nathanael
> >
> >


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]