------- Comment #11 from JamesMikeDuPont at googlemail dot com 2010-01-20 20:54 ------- Subject: Re: gcc segfaults on gch
so I am thinking about a way to wrap the existing templates that I use. there must be a way to reduce the size of the gch by specifing a list of classes we use. that would reduce the build size. this boost lib takes forever to process. We only use %1 of it at a time. There has got to be a way to precompile all these templates. A nice fine grained, for each header, external pch database for stl and boost would make working with them fun again. I have been experimenting with grouping the headers into groups of common dependencies. Basically I made a type level dependency tree that is sliced up into pools of common types and topologically sorted so that we can compile the the gch files in the right order and include the previous gch. I would consider putting some time into helping make the gch better if you give me direction. mike On Wed, Jan 20, 2010 at 9:47 PM, rguenth at gcc dot gnu dot org <gcc-bugzi...@gcc.gnu.org> wrote: > > > ------- Comment #10 from rguenth at gcc dot gnu dot org 2010-01-20 20:47 > ------- > With unoptimized trunk I see us blowing the stack during garbage-collecting. > Note that we have a load of templates in this testcase and we walk them in > unfortunate order. > > (gdb) > #79368 0x0835b9fb in ggc_collect () > at /home/richard/src/trunk/gcc/ggc-page.c:1962 > 1962 ggc_mark_roots (); > > > ugh. We reach stuff from the function decl type. > > 400 gt_ggc_m_9tree_node ((*x).generic.type.size_unit); > (gdb) > #79358 0x0828fdc9 in gt_ggc_mx_lang_tree_node (x_p=0xb772f378) > at ./gt-cp-tree.h:163 > 163 gt_ggc_m_9tree_node ((*x).generic.int_cst.common.type); > (gdb) > #79357 0x0829106b in gt_ggc_mx_lang_tree_node (x_p=0xb7743000) > at ./gt-cp-tree.h:398 > 398 gt_ggc_m_9tree_node ((*x).generic.type.values); > > hmm ... > > #79349 0x0829115c in gt_ggc_mx_lang_tree_node (x_p=0xa83ff180) > at ./gt-cp-tree.h:417 > 417 gt_ggc_m_9tree_node ((*x).generic.type.name); > (gdb) > > #79348 0x08290cb9 in gt_ggc_mx_lang_tree_node (x_p=0xa8400138) > at ./gt-cp-tree.h:355 > 355 gt_ggc_m_9tree_node > ((*x).generic.type_decl.common.common.common.common.common.context); > (gdb) > #79347 0x0829106b in gt_ggc_mx_lang_tree_node (x_p=0xa83ff000) > at ./gt-cp-tree.h:398 > 398 gt_ggc_m_9tree_node ((*x).generic.type.values); > (gdb) > #79346 0x08290229 in gt_ggc_mx_lang_tree_node (x_p=0xa84003a8) > at ./gt-cp-tree.h:228 > 228 gt_ggc_m_9tree_node > ((*x).generic.decl_non_common.common.common.common.common.common.type); > (gdb) > #79345 0x0829121c in gt_ggc_mx_lang_tree_node (x_p=0xa83ff420) > at ./gt-cp-tree.h:425 > 425 gt_ggc_m_9lang_type ((*x).generic.type.lang_specific); > (gdb) > #79344 0x08292154 in gt_ggc_mx_lang_type (x_p=0xa83fdaa0) at > ./gt-cp-tree.h:713 > 713 gt_ggc_m_9tree_node ((*x).u.c.template_info); > > > hmm - we reach templates via integer constants ... > > > -- > > rguenth at gcc dot gnu dot org changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > Status|WAITING |NEW > Ever Confirmed|0 |1 > Last reconfirmed|0000-00-00 00:00:00 |2010-01-20 20:47:22 > date| | > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42814 > > ------- You are receiving this mail because: ------- > You reported the bug, or are watching the reporter. > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42814