bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/13245] PREVAILING_DEF reported too often.


From: hubicka at ucw dot cz
Subject: [Bug gold/13245] PREVAILING_DEF reported too often.
Date: Sun, 02 Oct 2011 10:48:55 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=13245

--- Comment #4 from hubicka at ucw dot cz 2011-10-02 10:48:55 UTC ---
> Sorry, it is because mainline still contains the hack for COMDAT handling (I
> diseabled it in my tree to verify that new IRONLY solution works).  You need 
> to
> extend the testcases to take address of the inline function  so the hack is
> ineffective.
Actually adding address would just convolute the testcase in a way that the
intended
optimization would be impossible (we can not unshare the two comdats since we
do not
know if the oher library takes address of test, too).

Probably easiest way to reproduce is to update to today tree (you need v2
plugin API
support I just comitted) and disable the comdat hack.  The problem hits without
comdat
hack, too (like is the case of Mozilla with -fprofile-generate) but it is more
difficult
to produce a testcase.

BTW I am starting to wonder by linker results in PREVAILING_DEF at all.  When I
know
Iam going to link with a shared library that exports the comdat, I can just
optimize
it out. So at least w/o LTO it would make sense for me if linker just preemted
it
to the dynamic linking then.

Honza

Index: lto-streamer-out.c
===================================================================
--- lto-streamer-out.c    (revision 179423)
+++ lto-streamer-out.c    (working copy)
@@ -1396,7 +1396,7 @@ produce_symtab (struct output_block *ob,
       if (DECL_EXTERNAL (node->decl))
     continue;
       if (DECL_COMDAT (node->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;
@@ -1408,7 +1408,7 @@ produce_symtab (struct output_block *ob,
       if (!DECL_EXTERNAL (node->decl))
     continue;
       if (DECL_COMDAT (node->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;
@@ -1427,7 +1427,7 @@ produce_symtab (struct output_block *ob,
       if (DECL_COMDAT (vnode->decl)
       && !vnode->force_output
       && vnode->finalized 
-      && DECL_VIRTUAL_P (vnode->decl))
+      && DECL_VIRTUAL_P (vnode->decl) && 0)
     continue;
       if (vnode->alias && !vnode->alias_of)
     continue;
@@ -1441,7 +1441,7 @@ produce_symtab (struct output_block *ob,
       if (DECL_COMDAT (vnode->decl)
       && !vnode->force_output
       && vnode->finalized 
-      && DECL_VIRTUAL_P (vnode->decl))
+      && DECL_VIRTUAL_P (vnode->decl) && 0)
     continue;
       if (vnode->alias && !vnode->alias_of)
     continue;

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]