http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54776



--- Comment #4 from Markus Trippelsdorf <markus at trippelsdorf dot de> 
2012-10-04 15:57:19 UTC ---



> I will take a look how LTO can help us.  I believe part of the problem should

> be fixed by dropping the COMDAT hack for V1 API that is on my TODO list for

> this week.



The reported numbers above were taken with the COMDAT hack

dropped already. I always use this patch:



diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c

index afe4951..71b9d57 100644

--- a/gcc/lto-streamer-out.c

+++ b/gcc/lto-streamer-out.c

@@ -1308,7 +1308,7 @@ produce_symtab (struct output_block *ob)

       if (DECL_EXTERNAL (node->symbol.decl))

        continue;

       if (DECL_COMDAT (node->symbol.decl)

-         && cgraph_comdat_can_be_unshared_p (node))

+         && cgraph_comdat_can_be_unshared_p (node) && 0)

        continue;

       if ((node->alias && !node->thunk.alias) || node->global.inlined_to)

        continue;

@@ -1327,7 +1327,7 @@ produce_symtab (struct output_block *ob)

       if (!node->symbol.address_taken && !node->callers)

        continue;

       if (DECL_COMDAT (node->symbol.decl)

-         && cgraph_comdat_can_be_unshared_p (node))

+         && cgraph_comdat_can_be_unshared_p (node) && 0)

        continue;

       if ((node->alias && !node->thunk.alias) || node->global.inlined_to)

        continue;

@@ -1348,7 +1348,7 @@ produce_symtab (struct output_block *ob)

       if (DECL_COMDAT (vnode->symbol.decl)

          && !vnode->symbol.force_output

          && vnode->finalized 

-         && DECL_VIRTUAL_P (vnode->symbol.decl))

+         && DECL_VIRTUAL_P (vnode->symbol.decl) && 0)

        continue;

       if (vnode->alias && !vnode->alias_of)

        continue;

@@ -1364,7 +1364,7 @@ produce_symtab (struct output_block *ob)

       if (DECL_COMDAT (vnode->symbol.decl)

          && !vnode->symbol.force_output

          && vnode->finalized 

-         && DECL_VIRTUAL_P (vnode->symbol.decl))

+         && DECL_VIRTUAL_P (vnode->symbol.decl) && 0)

        continue;

       if (vnode->alias && !vnode->alias_of)

        continue;

Reply via email to