[new-regalloc] Dataflow too slow...
Michael Matz
matzmich@cs.tu-berlin.de
Sat Feb 3 15:25:00 GMT 2001
Hi,
On Sat, 3 Feb 2001, Daniel Berlin wrote:
> >
> > I used a simple worklist algorithm for this to get the ball rolling.
> > The usual solution to impove the performance is to order the blocks
> > with a depth first search. This was on my todo list.
>
> I did this as well, i forgot to mention.
> I use flow_compute_depth_first_order to get the dfs ordering, and then
> have it pick the first block on the worklist, in order of dfs order
> IE
> for (i=0; i < n_basic_blocks; i++)
> if (TEST_BIT (worklist, dfs_order[i])
> return dfs_order[i];
In order to reach (the best possible) O(N+2) with N == maximal number of
backedges in a acyclic path, one needs to use reverse completion order
(the second argument of flow_depth_first_order_compute), _not_ DFS order.
Additionally df.* shouldn't use (s)bitmap's at all for worklists, but
instead normal arrays as queues.
Ciao,
Michael.
More information about the Gcc
mailing list