debugging info considered harmful to lto.

2007-07-22 Thread Kenneth Zadeck
At the summit, I discovered two things about the internal representation of debugging information: 1) According to Honza, the instances of the BLOCK tree type take 30% of the space in a compilation. 2) The BLOCKS structure is linked in a way so that the blocks for one function link to the blocks o

Re: debugging info considered harmful to lto.

2007-07-23 Thread Daniel Jacobowitz
On Sun, Jul 22, 2007 at 07:37:43PM -0400, Kenneth Zadeck wrote: > I find it somewhat surprising that we need so many blocks. My > experience is that in real programs few blocks actually have any local > declarations and it appears that we do not bother to get rid of the > blocks that have no local

Re: debugging info considered harmful to lto.

2007-07-23 Thread Jan Hubicka
Hi, to add some extra data > At the summit, I discovered two things about the internal representation > of debugging information: > > 1) According to Honza, the instances of the BLOCK tree type take 30% of > the space in a compilation. this large portion appears on C++ testcases doing a lot of in

Re: debugging info considered harmful to lto.

2007-07-23 Thread Daniel Jacobowitz
On Mon, Jul 23, 2007 at 07:33:46PM +0200, Jan Hubicka wrote: > The particular problem here is that the abstract origin pointers points > to the blocks within functions they was constructed from. These are used > by dwarf2out to output abstract copy of the function and then use it > as a destination

Re: debugging info considered harmful to lto.

2007-07-23 Thread Jan Hubicka
> On Mon, Jul 23, 2007 at 07:33:46PM +0200, Jan Hubicka wrote: > > The particular problem here is that the abstract origin pointers points > > to the blocks within functions they was constructed from. These are used > > by dwarf2out to output abstract copy of the function and then use it > > as a d

Re: debugging info considered harmful to lto.

2007-07-23 Thread Daniel Jacobowitz
On Mon, Jul 23, 2007 at 08:56:11PM +0200, Jan Hubicka wrote: > > On Mon, Jul 23, 2007 at 07:33:46PM +0200, Jan Hubicka wrote: > > It's mostly supposed to be a space optimization. We get e.g. the > > names and (sometimes) types of local variables from the origin copy, > > and only need a location a

Re: debugging info considered harmful to lto.

2007-07-24 Thread Jason Merrill
Jan Hubicka wrote: Thanks for explanation - the space optimization seems relatively chalenging to implement, in particular because the variables in scope might change in between the time abstract copy is output and the time the block referencing to the block via abstract pointer is output. The

Re: debugging info considered harmful to lto.

2007-07-24 Thread Kenneth Zadeck
Jason Merrill wrote: > Jan Hubicka wrote: >> Thanks for explanation - the space optimization seems relatively >> chalenging to implement, in particular because the variables in scope >> might change in between the time abstract copy is output and the time >> the block referencing to the block via a

Re: debugging info considered harmful to lto.

2007-07-24 Thread Jan Hubicka
> Jan Hubicka wrote: > >Thanks for explanation - the space optimization seems relatively > >chalenging to implement, in particular because the variables in scope > >might change in between the time abstract copy is output and the time > >the block referencing to the block via abstract pointer is ou