This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Use a smaller, dynamic worklist in compute_global_livein
On Tue, Aug 7, 2012 at 11:22 AM, Richard Guenther
<richard.guenther@gmail.com> wrote:
> Another optimization would be to do
>
> @@ -440,13 +442,13 @@ compute_global_livein (bitmap livein ATT
> && ! bitmap_bit_p (def_blocks, pred_index)
> && bitmap_set_bit (livein, pred_index))
> {
> - *tos++ = pred;
> + VEC_safe_push (basic_block, heap, worklist, pred);
>
> thus combine the bitmap_set_bit and bitmap_bit_p tests on livein.
That's just a micro-optimization that doesn't help much, because after
the bitmap_bit_p in the if, the last accessed bitmap member is cached
and the bitmap_set_bit is almost free.
What is needed here, is a (much) smaller computed livein. In the end,
the whole set of ~140,000 livein blocks is pruned to just 3, namely
the loop exits...
Ciao!
Steven