https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117091

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Andi Kleen from comment #6)
> There are multiple issues (should probably rename the subject)
> 
> Apart from the inefficient bit test, the jump_table clustering is also very
> inefficient because it tries every possible cluster combination
> 
>   unsigned l = clusters.length ();
> ...
>   for (unsigned i = 1; i <= l; i++)
>     {
>      ...
> 
>       for (unsigned j = 0; j < i; j++)
> 
> There must be a better algorithm for this? Perhaps it needs dynamic
> programming?

But IIRC there's a limit on clusters.length ()?  If not we should add one.

> Also in addition the function that creates the tree is recursive and can
> have quite deep recursion (should probably fix that one too)
> 
> >I wouldn't start with disabling this at -O0 and -O1 ;)
> 
> Even with a better algorithm that's imho the right thing to do.

I agree for -O0, but still bad compile-time is bad compile-time, even when
it's -O2 or -O3.

Reply via email to