public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "rguenther at suse dot de" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug lto/40903] LTO doesn't merge common sections properly Date: Wed, 29 Jul 2009 18:01:00 -0000 [thread overview] Message-ID: <20090729180123.31293.qmail@sourceware.org> (raw) In-Reply-To: <bug-40903-10053@http.gcc.gnu.org/bugzilla/> ------- Comment #3 from rguenther at suse dot de 2009-07-29 18:01 ------- Subject: Re: LTO doesn't merge common sections properly On Wed, 29 Jul 2009, rth at gcc dot gnu dot org wrote: > ------- Comment #2 from rth at gcc dot gnu dot org 2009-07-29 17:55 ------- > I believe a "proper" way to handle this, preserving the semantics that > the linker provides, is to transform this into > > union { > double _1; > int _2; > } i; > > and replace occurrences with i._1, i._2, etc. That's another possibility. Though it would be only necessary if you want to support punning between the entries. Just keeping the decls and uses unmerged will get the exact same effects as with non-LTO. Apart from that if there _are_ overlapping uses those would be disambiguated by the alias-oracle and you'd eventually get different behavior than from non-LTO mode (though arguably the behavior is just undefined in that case). Keeping the decls unmerged is certainly the less invasive approach. > Perhaps a more interesting example to look at, besides the arguable > coding errors in SPEC, is the usages > > core_cia.c:} saved_config __attribute((common)); > core_t2.c:} t2_saved_config __attribute((common)); > core_titan.c:} saved_config[4] __attribute__((common)); > core_tsunami.c:} saved_config[2] __attribute__((common)); > sys_sio.c:} saved_config __attribute((common)); > > in linux/arch/alpha/kernel/. Each usage is for a different hardware > type, and therefore mutually exclusive. That should work indeed. > I believe there are Fortran common blocks that expect union-like > semantics as well. Yes, they are marked as DECL_COMMON as well. Richard. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40903
next prev parent reply other threads:[~2009-07-29 18:01 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-07-29 13:39 [Bug lto/40903] New: " rguenth at gcc dot gnu dot org 2009-07-29 13:39 ` [Bug lto/40903] " rguenth at gcc dot gnu dot org 2009-07-29 17:56 ` rth at gcc dot gnu dot org 2009-07-29 18:01 ` rguenther at suse dot de [this message] 2009-07-29 18:10 ` rth at gcc dot gnu dot org 2009-07-29 18:18 ` rguenther at suse dot de 2009-07-29 19:20 ` rguenth at gcc dot gnu dot org 2009-07-30 16:24 ` rguenth at gcc dot gnu dot org 2009-07-30 16:25 ` rguenth at gcc dot gnu dot org 2009-07-30 16:25 ` rguenth at gcc dot gnu dot org 2009-08-03 8:46 ` rguenth at gcc dot gnu dot org
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=20090729180123.31293.qmail@sourceware.org \ --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: linkBe 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).