public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Edelsohn <dje@watson.ibm.com>
To: law@cygnus.com
Cc: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>, egcs@cygnus.com
Subject: Re: Stabilization status
Date: Sun, 31 Jan 1999 23:58:00 -0000	[thread overview]
Message-ID: <9901022332.AA37512@marc.watson.ibm.com> (raw)
In-Reply-To: <2102.915313800@hurl.cygnus.com>

>>>>> Jeffrey A Law writes:

Jeff> I'm not sure I totally agree.  I believe there's still a fair number of
Jeff> AIX systems out there which aren't up-to-date enough to build egcs without
Jeff> special options.  That's not good.

Jeff> It may make sense to enable -mminimal-toc during a bootstrap for those older
Jeff> AIX platforms.  Either based on the canonical target name or an autoconf test
Jeff> of some kind.

	The only versions of AIX which have problems are versions that IBM
no longer supports (AIX 3.2.5, AIX 4.1 < 4.1.5 with linker patch, etc.).
There are many additional reasons to upgrade to AIX 4.1.5+ or AIX 4.3.2;
it is very important that customers upgrade for security and millenium
reasons.  IBM's current policy is that if this is a known problem solved
by a patch then upgrade, so that has to be my response as well. 

Jeff> Wouldn't that cause an assembler error for multiple definitions?
Jeff> Or are they output as "local common" variables?

	Emiting multiple static variable definitions in the assembly does
not cause multiple definition errors, but I do not have a testcase
anymore.  I assume the problem is a file that declares a function or
variable static in multiple places (possibly automatically-generated code)
and, under certain circumstances, GCC emits that definition into the
assembly multiple times instead of finding it already defined in some
obstack in the appropriate scope. 

	Also, any floating-point constants appear in the TOC and occupy
two TOC entries (on 32-bit AIX) instead of utilizing a separate constant
pool.

Jeff> It would probably be to our advantage to have multiple const pools.  One for
Jeff> TOC entries, then another for all the compile-time constants.  Then we could
Jeff> use a single TOC entry to reference all the compile-time constants for a single
Jeff> file.

	As I mentioned from the AIX implementation, we should have a
constants pool and a statics pool per module (file).  Placing ALL
variables within a local pool per file is exactly what -mminimal-toc does.

	GCC for AIX creates a special pool and throws all memory
references into it.  Normally that pool is the TOC and it lets the AIX
linker combine each file's pool into a single, large pool for the entire
program.  When -mminimal-toc is enabled, it creates a private pool within
each file and only defines a reference for the local pool in the TOC.

	This is wasteful for global variables because although the storage
only is allocated once, each module must redefine addressibility for that
global storage and accesses to that global storage might require an
additional indirection.  This also causes the AIX linker and loader to
work much harder performing additional, repeated, global fixups outside
the normal TOC program section slowing linking and program startup.

>> And it dynamically allocates the base registers, only
>> allocating them when necessary.  I have not had time to pursue this.

	Just to clarify, the AIX compiler always uses the standard TOC
register but, unlike GCC -mminimal-toc, it does not explicitly, manually
allocate a secondary base register.  The AIX compiler acts more like the
PowerPC SVR4 PIC implementation currently handles the GOT regsiter, it
allocates the secondary base register(s) as needed and uses CSE to
collapse the creation/initialization as much as possible.

David

  reply	other threads:[~1999-01-31 23:58 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-01-31 23:58 Kaveh R. Ghazi
1999-01-31 23:58 ` Jeffrey A Law
1999-01-31 23:58   ` David Edelsohn
1999-01-31 23:58     ` Jeffrey A Law
1999-01-31 23:58       ` David Edelsohn [this message]
1999-01-31 23:58         ` Jeffrey A Law
1999-01-31 23:58           ` David Edelsohn
1999-01-31 23:58   ` Michael Hayes
1999-01-31 23:58 Stabilization Status Jeffrey A Law
1999-01-31 23:58 Stabilization status Kaveh R. Ghazi
1999-01-31 23:58 ` Jeffrey A Law
1999-01-31 23:58 ` David Edelsohn
1999-01-31 23:58   ` Jeffrey A Law
1999-01-31 23:58 Kaveh R. Ghazi
1999-03-25  0:49 ` Jeffrey A Law
1999-03-31 23:46   ` Jeffrey A Law
1999-01-31 23:58 Stabilization Status Jeffrey A Law
1999-01-31 23:58 Kaveh R. Ghazi
1999-01-31 23:58 Stabilization status Jeffrey A Law
1999-01-21  7:38 ` Franz Sirl
1999-01-31 23:58   ` Franz Sirl
1999-01-31 23:58 ` H.J. Lu
1999-01-31 23:58   ` Jeffrey A Law
1999-01-31 23:58 Jeffrey A Law
1999-01-31 23:58 ` David Edelsohn
1999-01-31 23:58   ` Jeffrey A Law
1999-01-31 23:58 ` David Edelsohn
1999-01-31 23:58 ` Franz Sirl
1999-01-31 23:58   ` H.J. Lu
1999-02-14 23:50   ` Jeffrey A Law
1999-02-15  0:18     ` Franz Sirl
     [not found]       ` < 99021509205800.00478@ns1102.munich.netsurf.de >
1999-02-15  3:02         ` Gary Thomas
1999-02-15  3:28           ` Franz Sirl
     [not found]             ` < 99021512315700.00633@ns1102.munich.netsurf.de >
1999-02-15 17:26               ` H.J. Lu
     [not found]                 ` < m10CZGr-00038sC@ocean.lucon.org >
1999-02-16  2:00                   ` Philip Blundell
     [not found]                     ` < E10ChHT-0000Kz-00@fountain.nexus.co.uk >
1999-02-18  2:56                       ` Franz Sirl
1999-02-28 22:53                         ` Franz Sirl
1999-02-28 22:53                     ` Philip Blundell
1999-02-28 22:53                 ` H.J. Lu
1999-02-28 22:53             ` Franz Sirl
     [not found]           ` < XFMail.990215110234.gdt@linuxppc.org >
1999-02-15 17:28             ` H.J. Lu
     [not found]               ` < m10CZJ9-000392C@ocean.lucon.org >
1999-02-15 21:35                 ` Gary Thomas
1999-02-28 22:53                   ` Gary Thomas
1999-02-28 22:53               ` H.J. Lu
1999-02-28 22:53           ` Gary Thomas
1999-02-17  0:31         ` Jeffrey A Law
1999-02-28 22:53           ` Jeffrey A Law
1999-02-28 22:53       ` Franz Sirl
     [not found]     ` < 17549.919064996@hurl.cygnus.com >
1999-02-15  5:00       ` Gerald Pfeifer
     [not found]         ` < Pine.GSO.4.10.9902151234440.17124-100000@markab.dbai.tuwien.ac.at >
1999-02-17  0:14           ` Jeffrey A Law
1999-02-17 11:13             ` Benjamin Scherrey
1999-02-28 22:53               ` Benjamin Scherrey
     [not found]             ` < 24580.919239196@hurl.cygnus.com >
1999-02-19  8:40               ` Gerald Pfeifer
     [not found]                 ` < Pine.GSO.4.10.9902191738520.20726-100000@markab.dbai.tuwien.ac.at >
1999-02-19 10:31                   ` Jeffrey A Law
     [not found]                     ` < 1691.919449005@hurl.cygnus.com >
1999-02-21 10:15                       ` Gerald Pfeifer
1999-02-22  1:52                         ` Andreas Schwab
1999-02-28 22:53                           ` Andreas Schwab
     [not found]                         ` < Pine.GSO.4.10.9902211859250.3380-100000@alphard.dbai.tuwien.ac.at >
1999-02-21 12:29                           ` Per Bothner
     [not found]                             ` < 199902212029.MAA20707@cygnus.com >
1999-02-21 12:38                               ` Per Bothner
1999-02-22 11:06                                 ` Dave Love
1999-02-28 22:53                                   ` Dave Love
1999-02-28 22:53                                 ` Per Bothner
1999-02-28 22:53                             ` Per Bothner
1999-02-21 13:06                           ` Jeffrey A Law
1999-02-28 22:53                             ` Jeffrey A Law
1999-02-22  8:53                           ` Scott McDermott
     [not found]                             ` < 19990222112853.A17012@vaxerdec.nws.net >
1999-02-22 10:46                               ` Scott McDermott
1999-02-28 22:53                                 ` Scott McDermott
1999-02-22 11:00                             ` Dave Love
1999-02-28 22:53                               ` Dave Love
1999-02-28 22:53                             ` Scott McDermott
1999-02-28 22:53                         ` Gerald Pfeifer
1999-02-28 22:53                     ` Jeffrey A Law
1999-02-28 22:53                 ` Gerald Pfeifer
1999-02-19 19:44               ` siliconjackal
     [not found]                 ` < 19990218012725.H20100@diwanh.cais.net >
1999-02-20 11:47                   ` Jeffrey A Law
     [not found]                     ` < 4477.919539977@hurl.cygnus.com >
1999-02-20 11:50                       ` Zack Weinberg
1999-02-28 22:53                         ` Zack Weinberg
1999-02-28 22:53                     ` Jeffrey A Law
1999-02-28 22:53                 ` siliconjackal
1999-02-28 22:53             ` Jeffrey A Law
1999-02-28 22:53         ` Gerald Pfeifer
1999-02-28 22:53     ` Jeffrey A Law
1999-01-31 23:58 Stabilization Status Kaveh R. Ghazi
1999-01-31 23:58 ` Jeffrey A Law
1999-01-31 23:58 Stabilization status Jeffrey A Law
1999-02-02 10:05 Jeffrey A Law
1999-02-02 10:46 ` Bruce Korb
     [not found]   ` < 36B747E2.B26FD4F@datadesign.com >
1999-02-02 10:54     ` Jeffrey A Law
1999-02-28 22:53       ` Jeffrey A Law
1999-02-28 22:53   ` Bruce Korb
     [not found] ` < 7453.917978517@hurl.cygnus.com >
1999-02-02 10:37   ` Zack Weinberg
     [not found]     ` < 199902021837.NAA06399@blastula.phys.columbia.edu >
1999-02-08 23:25       ` Jeffrey A Law
1999-02-28 22:53         ` Jeffrey A Law
1999-02-28 22:53     ` Zack Weinberg
1999-02-02 19:21   ` Michael Meissner
     [not found]     ` < 19990202222144.A22081@wogglebug.cygnus.com >
1999-02-04 10:41       ` Franz Sirl
     [not found]         ` < 4.1.19990204193059.048a0b00@mail.lauterbach.com >
1999-02-07  3:24           ` Gary Thomas
1999-02-07 13:44             ` Franz Sirl
1999-02-28 22:53               ` Franz Sirl
1999-02-28 22:53             ` Gary Thomas
1999-02-28 22:53         ` Franz Sirl
1999-02-28 22:53     ` Michael Meissner
1999-02-04  6:50   ` H.J. Lu
     [not found]     ` < m108Q5u-00038sC@ocean.lucon.org >
1999-02-04  8:12       ` David Edelsohn
1999-02-28 22:53         ` David Edelsohn
1999-02-04  8:24       ` Franz Sirl
1999-02-28 22:53         ` Franz Sirl
1999-02-28 22:53     ` H.J. Lu
1999-02-28 22:53 ` Jeffrey A Law
1999-02-19  9:26 Mike Stump
     [not found] ` < 199902191726.JAA28499@kankakee.wrs.com >
1999-02-19  9:44   ` craig
     [not found]     ` < 19990219174136.32381.qmail@deer >
1999-02-19 12:45       ` Joern Rennecke
     [not found]         ` < 199902192045.UAA14977@phal.cygnus.co.uk >
1999-02-20  0:57           ` craig
1999-02-28 22:53             ` craig
1999-02-28 22:53         ` Joern Rennecke
1999-02-20 17:28       ` Gerald Pfeifer
     [not found]         ` < Pine.GSO.4.10.9902210219450.2483-100000@alphard.dbai.tuwien.ac.at >
1999-02-20 17:39           ` Jeffrey A Law
1999-02-28 22:53             ` Jeffrey A Law
1999-02-28 22:53         ` Gerald Pfeifer
1999-02-28 22:53     ` craig
1999-02-28 22:53 ` Mike Stump

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=9901022332.AA37512@marc.watson.ibm.com \
    --to=dje@watson.ibm.com \
    --cc=egcs@cygnus.com \
    --cc=ghazi@caip.rutgers.edu \
    --cc=law@cygnus.com \
    /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).