------- Comment #11 from dberlin at gcc dot gnu dot org  2006-12-14 01:11 
-------
Subject: Re:  Compiling FreeFem3d uses unreasonable amount of time and memory

On 13 Dec 2006 23:50:17 -0000, dnovillo at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
>
>
> ------- Comment #9 from dnovillo at gcc dot gnu dot org  2006-12-13 23:50 
> -------
>
> The memory problem is quite simple: We just have a *lot* of pointers and a
> *lot* of addressable symbols.  Here is a breakdown of what happens on the 
> first
> call to compute_may_aliases:
>
> During the first call to compute_may_aliases:
>
> 1- Size of cc1plus is 339Mb
> 2- Call to compute_points_to_sets grows to 355Mb (+4.72%)
> 3- Call to compute_flow_insensitive_aliasing grows to 364Mb (+2.54%)
> 4- Call to compute_flow_sensitive_aliasing grows to 667Mb (+83.2%)
>
> The reason for this tremendous growth is quite simple.  There are 39,010 SSA
> name pointers and many of them have their own points-to set, which we store in
> that name's may-alias set.

If they had their own set, then compute_points_to_set would have
required more memory.

>We grow to 667Mb in the last loop of
> compute_flow_sensitive_aliasing.
>
> One thing we could do is just not use flow-sensitive information in these
> cases.  If we don't set SSA_NAME_PTR_INFO, everything will default to
> flow-insensitive information and things will Just Work.
>

> Perhaps using sparse bitmaps for the may-alias sets might help with memory
> consumption, but I found these bitmaps to slow down the operand scanner quite 
> a
> bit in the past.  May be worth a try.
>
> Danny, thoughts?

If compute_points_to_sets only grows memory by 26 meg, then that's all
we need to represent the points-to sets of all these variables

So we shoudl be able to do this without using more memory than that.
Sadly, we create copies of  the result of find_what_p_points_to, then
transform it into an array.

I'll give the bitmaps a try for the operand scanner and see how it works.

I really don't think we should have to turn off information that is
only taking 26 meg to store originally :)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30089

Reply via email to