This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/54776] [4.8 Regression] tramp3d-v4: 20% performance regression using -O3
- From: "markus at trippelsdorf dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 04 Oct 2012 15:57:19 +0000
- Subject: [Bug tree-optimization/54776] [4.8 Regression] tramp3d-v4: 20% performance regression using -O3
- Auto-submitted: auto-generated
- References: <bug-54776-4@http.gcc.gnu.org/bugzilla/>
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;