This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][C++] Improve PR15855 (compile-time/memory hog)
On Fri, 2005-09-23 at 15:33 -0400, Daniel Berlin wrote:
>
> On Fri, 23 Sep 2005, Jeffrey A Law wrote:
>
> > On Fri, 2005-09-23 at 11:33 -0700, Mark Mitchell wrote:
> >> Richard Guenther wrote:
> >>
> >>> After some sleep and coffee I re-structured the thing even a little
> >>> more and came up with the following patch, which looks reasonably
> >>> easy to follow.
> >>
> >> This version is OK for mainline. After it's baked in for a week or so,
> >> and assuming the 4.0.2 release has gone out, please apply it to the 4.0
> >> branch for 4.0.3 as well.
> > Cool.
> >
> > Now if someone wants to make another huge improvement to 15855, they
> > should probably look at how we're handling SFTs and how they're
> > exploding in the incremental SSA updates -- there's something like
> > 5 million mappings for SFTs for one of the incremental SSA updates.
> > We may have algorithmic issues with that many mappings and we may
> > be doing some stupid stuff in creating that many to begin with.
>
> We don't create SFT's for structures with more than x (where x
> is defaulting to 5) unless they are direct uses (ie not through pointers,
> or anything like that).
The accesses are direct, not through pointers.
> I sincerely doubt we actually have 5 million SFT's. I'd be *incredibly*
> surprised.
We have 5 million _mappings_ for SFT variables during an incremental
SSA update. There's something like 20k SFT variables IIRC.
If you don't believe me, then take a looksie :-) Maybe I'm counting
wrong :-)
The first big incremental update for
static_initialization_and_destruction:
Number of virtual NEW -> OLD mappings: 43504
Number of real NEW -> OLD mappings: 0
Number of total NEW -> OLD mappings: 43504
Number of virtual symbols: 21950
The second big incremental update has:
Number of virtual NEW -> OLD mappings: 5443467
Number of real NEW -> OLD mappings: 0
Number of total NEW -> OLD mappings: 5443467
Number of virtual symbols: 21950
Jeff