From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5566 invoked by alias); 23 Apr 2009 14:00:09 -0000 Received: (qmail 5552 invoked by uid 22791); 23 Apr 2009 14:00:07 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from yw-out-1718.google.com (HELO yw-out-1718.google.com) (74.125.46.153) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 23 Apr 2009 13:59:58 +0000 Received: by yw-out-1718.google.com with SMTP id 5so316190ywm.26 for ; Thu, 23 Apr 2009 06:59:56 -0700 (PDT) Received: by 10.142.139.14 with SMTP id m14mr343067wfd.210.1240495195566; Thu, 23 Apr 2009 06:59:55 -0700 (PDT) Received: from lake.in.lucon.org (adsl-76-232-8-227.dsl.pltn13.sbcglobal.net [76.232.8.227]) by mx.google.com with ESMTPS id 20sm37447wfi.0.2009.04.23.06.59.54 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 23 Apr 2009 06:59:54 -0700 (PDT) Received: by lake.in.lucon.org (Postfix, from userid 500) id 175F550182; Thu, 23 Apr 2009 06:59:54 -0700 (PDT) Date: Thu, 23 Apr 2009 14:30:00 -0000 From: "H.J. Lu" To: Gerald Pfeifer Cc: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Update gcc-4.4/changes.html for x86-64 ABI changes Message-ID: <20090423135954.GA5706@lucon.org> References: <20090420022543.GA21001@lucon.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2009-04/txt/msg01853.txt.bz2 On Tue, Apr 21, 2009 at 09:39:31AM +0200, Gerald Pfeifer wrote: > On Sun, 19 Apr 2009, H.J. Lu wrote: > > This patch documents x86-64 ABI changes in gcc 4.4. > > Thanks, H.J. > > > +
  • The following changes have been made to conform to x86-64 ABI: > > "to the x86-64 ABI"? > > > +
      > > +
    • Passing/returning structures with flexible array member.
    • > > +
    • Passing/returning structures with complex float member.
    • > > +
    • Passing/returning unions with long double member.
    • > > This somehow doesn't really list actual changes. I assume this is > more along the lines of "in the following cases the ABI has changed > to conform to the x86-64 ABI" and something like "Code built with > previous versions of GCC that uses any of these is not compatible > with code built with GCC 4.4.0 or later" perhaps? > > Or would it make sense to describe the concrete changes? The second > sentence likely still makes sense in that case to be explicit here. > Here is the updated one. H.J. --- Index: changes.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.4/changes.html,v retrieving revision 1.70 diff -u -p -r1.70 changes.html --- changes.html 21 Apr 2009 10:41:36 -0000 1.70 +++ changes.html 23 Apr 2009 13:59:25 -0000 @@ -549,6 +549,34 @@
    • GCC can now utilize the SVML library for vectorizing calls to a set of C99 functions if -mveclibabi=svml is specified and you link to an SVML ABI compatible library.
    • +
    • On x86-64, the ABI has been changed in the following cases to + conform to the x86-64 ABI: +
        +
      • Passing/returning structures with flexible array member: +
        +  struct foo
        +    {
        +      int i;
        +      int flex[];
        +    };
      • +
      • Passing/returning structures with complex float member: +
        +  struct foo
        +    {
        +      int i;
        +      __complex__ float f;
        +    };
      • +
      • Passing/returning unions with long double member: +
        +  union foo
        +    {
        +      int x;
        +      long double ld;
        +    };
      • +
      + Code built with previous versions of GCC that uses any of these is + not compatible with code built with GCC 4.4.0 or later. +
    • A new target attribute was added to allow programmers to change the target options like -msse2 or -march=k8 for an individual function. You can also change the target options via the GCC target pragma for functions defined after the pragma.
    • GCC can now be configured with options --with-arch-32, --with-arch-64,