public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "hubicka at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug lto/47247] Linker plugin specification makes it difficult to handle COMDATs
Date: Sat, 27 Aug 2011 18:16:00 -0000	[thread overview]
Message-ID: <bug-47247-4-uttzhBTXLB@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-47247-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #22 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-08-27 17:35:27 UTC ---
Carry,
is there any chance to move ahead on this problem?  I see you posted the
PREVAILING_DEF_IRONLY_EXP but it was never committed.

Concerning Rafael's comment:

 Why is PREVAILING_DEF_IRONLY_EXP needed? I think it can be solved with 
just PREVAILING_DEF if we say that the compiler can drop references to 
them if it knows they are provided in any DSO. The only case I can see 
where this would almost be a problem is something like

This is not possible with current formulation of plugin API. It explicitely
says "Any symbol marked PREVAILING_DEF must be defined in one object file added
to the link after WPA is done, or an undefined symbol error will result"

We could also go that route I guess, but
 1) We will have to bump API version or something to indicate whether compiler
is allowed to drop the symbols or not.  With current binutils implementation
bad things happens when compiler decided to drop the symbol it is not supposed
to (my original implementation did so and it resulted in problems, especially
in large dynamic linker tables)
 2) the LTO produced COMDAT function will likely be better, so we will lose bit
of code quality
 3) There are cases where function is output COMDAT but it is keyed (i.e. with
the repo files). In this case we will not be able to drop the symbol when it
becomes unnecessary at LTO time because we will not know whether the symbol is
used by non-LTO code or not.

All those reasons are rather side cases and thus weak, but because we are
effectively changing API anyway and because PREVAILING_DEF_IRONLY_EXP makes
compiler a bit more informed in well defined way, I would go for it.

Honza


  parent reply	other threads:[~2011-08-27 17:36 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-10 16:51 [Bug lto/47247] New: " hubicka at gcc dot gnu.org
2011-01-10 17:02 ` [Bug lto/47247] " hubicka at gcc dot gnu.org
2011-01-10 17:11 ` hjl.tools at gmail dot com
2011-01-10 17:12 ` hjl.tools at gmail dot com
2011-01-10 17:13 ` hubicka at ucw dot cz
2011-01-10 17:19 ` hjl.tools at gmail dot com
2011-01-10 18:20 ` hubicka at gcc dot gnu.org
2011-01-10 18:36 ` hjl.tools at gmail dot com
2011-01-10 19:06 ` ccoutant at gcc dot gnu.org
2011-01-10 19:08 ` ccoutant at gcc dot gnu.org
2011-01-10 21:27 ` hubicka at gcc dot gnu.org
2011-01-10 21:27 ` hjl.tools at gmail dot com
2011-02-14 20:34 ` rafael.espindola at gmail dot com
2011-02-15 18:51 ` hubicka at ucw dot cz
2011-02-15 19:45 ` rafael.espindola at gmail dot com
2011-02-16  0:23 ` hubicka at ucw dot cz
2011-02-16  4:04 ` rafael.espindola at gmail dot com
2011-02-16  7:59 ` hubicka at ucw dot cz
2011-02-16 16:23 ` rafael.espindola at gmail dot com
2011-02-16 23:13   ` Jan Hubicka
2011-02-16 23:18 ` hubicka at ucw dot cz
2011-02-16 23:37 ` ccoutant at google dot com
2011-02-17  1:25 ` rafael.espindola at gmail dot com
2011-08-27 18:16 ` hubicka at gcc dot gnu.org [this message]
2011-09-26 21:47 ` ccoutant at gcc dot gnu.org
2011-09-27  0:23 ` ccoutant at gcc dot gnu.org
2011-09-28 13:09 ` hubicka at gcc dot gnu.org
2011-10-02 10:42 ` hubicka at gcc dot gnu.org
2012-05-10  7:32 ` vincenzo.innocente at cern dot ch
2012-05-10  7:54 ` rguenth at gcc dot gnu.org
2012-05-10  8:52 ` vincenzo.innocente at cern dot ch
2012-05-10 16:06 ` vincenzo.innocente at cern dot ch
2012-05-10 17:10 ` hubicka at ucw dot cz
2012-05-10 17:17 ` vincenzo.innocente at cern dot ch
2012-05-12 14:37 ` hubicka at gcc dot gnu.org
2012-05-14  8:13 ` vincenzo.innocente at cern dot ch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-47247-4-uttzhBTXLB@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).