RFC: Merge the GUPC branch into the GCC 6.0 trunk

Gary Funck gary@intrepid.com
Sat Dec 5 22:57:00 GMT 2015


On 12/02/15 10:40:50, Richard Biener wrote:
> On Tue, 1 Dec 2015, Gary Funck wrote:
> > The main change recommended to reduce tree space was moving the
> > "layout factor" (blocking factor) out of the tree node, and using
> > only two bits there, one bit for a relatively common case of 0,
> > and the other for > 1.  It was suggested that we use a hash
> > table to map tree nodes to layout qualifiers for the case they
> > are > 1.  This necessitated using a garbage collected tree map,
> > which unfortunately meant that tree nodes needed special garbage
> > collection logic.
> 
> I still don't see why it needs special garbage collection logic.
> We have many tree -> X maps that just get away without.
> [...]
> As said, I don't see why you need a special GC collection logic
> at all.  Please explain.

The problem we ran into is that we had a tree map which
mapped a tree node to its UPC layout qualifier, which
is an integral constant (CST).  Tree nodes for CST's
are made unique by hashing them into an integer->tree map.
What happened is that the GC would free up entries in the
CST table that were being used by the layout qualifier map.

It seems that the new tree map logic fixes this problem
(as you've noted).  I backed out the custom GC logic and
re-ran a large test that extensively exercises the use case
that triggers the issue -- works like a charm.

thanks,
- Gary



More information about the Gcc-patches mailing list