------- 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