From gcc-patches-return-37788-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 09:43:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7094 invoked by alias); 1 Jul 2001 09:43:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7064 invoked from network); 1 Jul 2001 09:42:57 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 09:42:57 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f619gLI07080; Sun, 1 Jul 2001 11:42:21 +0200 (MET DST) Date: Sun, 1 Jul 2001 11:42:21 +0200 (CEST) From: Gerald Pfeifer To: "Joseph S. Myers" cc: , Subject: Re: PATCH: Update documentation for --enable-threads to match reality In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Fri, 15 Jun 2001, Joseph S. Myers wrote: >> I have installed it to mainline under the "obviously correct" rule. > Install manual patches should go on the branch as well. Definitely, yes. By any means. In fact, I would expect (and currently this is indeed the case) that doc/install.texi usually will be the same are at least nearly the same on both branches. Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/ From gcc-patches-return-37789-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:10:18 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15314 invoked by alias); 1 Jul 2001 10:10:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15275 invoked from network); 1 Jul 2001 10:10:14 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:10:14 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61AA7I07507; Sun, 1 Jul 2001 12:10:08 +0200 (MET DST) Date: Sun, 1 Jul 2001 12:10:07 +0200 (CEST) From: Gerald Pfeifer To: David Kaelbling cc: , Subject: PATCH for Re: Broken build status link In-Reply-To: <3B3A1C86.B7C82326@sgi.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 27 Jun 2001, David Kaelbling wrote: > http://gcc.gnu.org/install/finalinstall.html has a link to a > non-existent "build status page" -- following it produces: > > The requested URL /gcc-3.0/buildstat.html was not found on this server. Thanks for pointing this out. I addressed this by the patch below which I just installed. Gerald *** /dev/null Sun Jul 1 11:45:21 2001 --- buildstat.html Sun Jul 1 12:08:32 2001 *************** *** 0 **** --- 1,25 ---- + + + + Build status for GCC 3.0 + + + +

Build status for GCC 3.0

+ + + + + + + + + + + + + +
i386-unknown-freebsd4.3Successful
i686-pc-linux-gnuSuccessful
+ + + From gcc-patches-return-37790-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:27:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19327 invoked by alias); 1 Jul 2001 10:27:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19307 invoked from network); 1 Jul 2001 10:27:00 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:27:00 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61AQNI07777; Sun, 1 Jul 2001 12:26:26 +0200 (MET DST) Date: Sun, 1 Jul 2001 12:26:23 +0200 (CEST) From: Gerald Pfeifer To: Zoltan Felleg cc: Subject: Re: [patch] beginner projects (test) In-Reply-To: <3B290CD1.338E8C6F@telnet.hu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 14 Jun 2001, Zoltan Felleg wrote: > This patch fixes a small typo in warn_summary, and is considered as a > test (of myself). Thanks, I installed your patch. (It's a pity that none has taken care of this for over two weeks; sorry for the delay.) Gerald From gcc-patches-return-37791-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:41:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21892 invoked by alias); 1 Jul 2001 10:40:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21869 invoked from network); 1 Jul 2001 10:40:57 -0000 Received: from unknown (HELO mail.takas.lt) (212.59.0.1) by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:40:57 -0000 Received: from 212.59.2.204 (flatrate849.vln.takas.lt [212.59.27.85]) by mail.takas.lt (8.9.1/8.9.0) with ESMTP id MAA1221074 for ; Sun, 1 Jul 2001 12:40:55 +0200 (GMT+0200) Received: (qmail 389 invoked by uid 1000); 1 Jul 2001 10:20:54 -0000 From: "Laurynas Biveinis" Date: Sun, 1 Jul 2001 12:20:54 +0200 To: Gerald Pfeifer Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: PATCH for Re: Broken build status link Message-ID: <20010701122054.A367@lauras.lt> Mail-Followup-To: Gerald Pfeifer , gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.18i > + i386-unknown-freebsd4.3 > + i686-pc-linux-gnu > + Successful There already have been few other success reports. Laurynas From gcc-patches-return-37792-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19082 invoked by alias); 1 Jul 2001 13:04:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18910 invoked from network); 1 Jul 2001 13:04:08 -0000 Received: from unknown (HELO smtp.ca.inter.net) (38.210.35.210) by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:08 -0000 Received: from ip148.ottawa19.dialup.canada.psi.net ([154.11.101.148] helo=umbriel) by smtp.ca.inter.net with smtp (Exim 3.22 #1) id 15Ggsy-0003RR-00; Sun, 01 Jul 2001 09:03:36 -0400 From: Stephen M. Webb Reply-To: stephen@bregmasoft.com Organization: Bregmasoft To: libstdc++@gcc.gnu.org Subject: [libstdc++-v3] Remove std::construct and std::destroy Date: Sun, 1 Jul 2001 08:37:29 -0400 X-Mailer: KMail [version 1.0.28] Content-Type: Multipart/Mixed; boundary="Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD" Cc: gcc-patches@gcc.gnu.org MIME-Version: 1.0 Message-Id: <01070108464800.00282@umbriel> --Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD Content-Type: text/plain Content-Transfer-Encoding: 8bit The HP version of the STL used functions construct() and destroy() to construct and destroy objects. These functions are not a part of the standard and had been (mostly) replaced by the internal library functions _Construct() and _Destroy(). This patch fixes the last few occurrences of the HP legacy functions in the GCC version of the library and removes their definitions. There is no change in functionality or generated code. The definitions remain available through the backwards headers. Bootstrapped on an i686-pc-linux-gnu system, no regressions. Targetted at the trunk but is good for the 3.01 branch, too. 2001-07-01 Stephen M. Webb * include/bits/stl_construct.h (construct): Remove. (destroy): Remove. (__destroy): Replaced by use of iterator_traits. * include/bits/stl_deque.h: replaced HP iterator functions with iterator_traits. (construct): changed to _Construct. (destroy): changed to _Destroy. * include/bits/stl_tempbuf.h: Same. * include/bits/stl_tree.h: Same. * include/bits/stl_vector.h: Same. * include/backward/iterator.h (construct): moved definition to here. (destroy): Same. -- Stephen M. Webb stephen at bregmasoft dot com --Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD Content-Type: text/x-c++; name="patch.diff" Content-Transfer-Encoding: base64 Content-Description: CVS diff Content-Disposition: attachment; filename="patch.diff" SW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfY29uc3RydWN0LmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2NvbnN0cnVjdC5oLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtYyAtMyAtcCAtcjEuNyBzdGxfY29uc3RydWN0 LmgKKioqIHN0bF9jb25zdHJ1Y3QuaAkyMDAxLzA2LzI3IDE3OjA5OjUyCTEuNwotLS0gc3RsX2Nv bnN0cnVjdC5oCTIwMDEvMDcvMDEgMTI6NDc6MDQKKioqKioqKioqKioqKioqCioqKiA2MCwxNDgg KioqKgogICNpZm5kZWYgX0NQUF9CSVRTX1NUTF9DT05TVFJVQ1RfSAogICNkZWZpbmUgX0NQUF9C SVRTX1NUTF9DT05TVFJVQ1RfSCAxCiAgCiAgI2luY2x1ZGUgPG5ldz4KICAKICBuYW1lc3BhY2Ug c3RkCiAgewohIAohIC8vIGNvbnN0cnVjdCBhbmQgZGVzdHJveS4gIFRoZXNlIGZ1bmN0aW9ucyBh cmUgbm90IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCwKISAvLyBhbmQgYXJlIHByb3ZpZGVkIGZv ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEhQIFNUTC4gV2UgYWxzbwohIC8vIHBy b3ZpZGUgaW50ZXJuYWwgbmFtZXMgX0NvbnN0cnVjdCBhbmQgX0Rlc3Ryb3kgdGhhdCBjYW4gYmUg dXNlZCB3aXRoaW4KISAvLyB0aGUgbGlicmFyeSwgc28gdGhhdCBzdGFuZGFyZC1jb25mb3JtaW5n IHBpZWNlcyBkb24ndCBoYXZlIHRvIHJlbHkgb24KISAvLyBub24tc3RhbmRhcmQgZXh0ZW5zaW9u cy4KISAKISAvLyBJbnRlcm5hbCBuYW1lcwohIAohIHRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNz IF9UMj4KISBpbmxpbmUgdm9pZCBfQ29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFs dWUpIHsKISBuZXcgKCh2b2lkKikgX19wKSBfVDEoX192YWx1ZSk7CiEgfQogICAgCiEgdGVtcGxh dGUgPGNsYXNzIF9UMT4KISBpbmxpbmUgdm9pZCBfQ29uc3RydWN0KF9UMSogX19wKSB7CiEgICBu ZXcgKCh2b2lkKikgX19wKSBfVDEoKTsKISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9UcD4KISBp bmxpbmUgdm9pZCBfRGVzdHJveShfVHAqIF9fcG9pbnRlcikgewohICAgX19wb2ludGVyLT5+X1Rw KCk7CiEgfQogICAgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgdm9pZAoh IF9fZGVzdHJveV9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9y IF9fbGFzdCwgX19mYWxzZV90eXBlKQohIHsKISAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7 ICsrX19maXJzdCkKISAgICAgZGVzdHJveSgmKl9fZmlyc3QpOwohIH0KISAKISB0ZW1wbGF0ZSA8 Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4gCiEgaW5saW5lIHZvaWQgX19kZXN0cm95X2F1eChfRm9y d2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBfX3RydWVfdHlwZSkge30KISAKISB0ZW1w bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgohIGlubGluZSB2b2lkIAoh IF9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s YXN0LCBfVHAqKQohIHsKISAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+Ojpo YXNfdHJpdmlhbF9kZXN0cnVjdG9yCiEgICAgICAgICAgIF9Ucml2aWFsX2Rlc3RydWN0b3I7CiEg ICBfX2Rlc3Ryb3lfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX1RyaXZpYWxfZGVzdHJ1Y3RvcigpKTsK ISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgaW5saW5lIHZvaWQg X0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz dCkgewohICAgX19kZXN0cm95KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKF9fZmlyc3Qp KTsKISB9CiEgCiEgaW5saW5lIHZvaWQgX0Rlc3Ryb3koY2hhciosIGNoYXIqKSB7fQohIGlubGlu ZSB2b2lkIF9EZXN0cm95KGludCosIGludCopIHt9CiEgaW5saW5lIHZvaWQgX0Rlc3Ryb3kobG9u ZyosIGxvbmcqKSB7fQohIGlubGluZSB2b2lkIF9EZXN0cm95KGZsb2F0KiwgZmxvYXQqKSB7fQoh IGlubGluZSB2b2lkIF9EZXN0cm95KGRvdWJsZSosIGRvdWJsZSopIHt9CiEgaW5saW5lIHZvaWQg X0Rlc3Ryb3kod2NoYXJfdCosIHdjaGFyX3QqKSB7fQohIAohIC8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgLy8gT2xkIG5hbWVzIGZyb20gdGhl IEhQIFNUTC4KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiEgaW5saW5lIHZv aWQgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpIHsKISAgIF9Db25zdHJ1 Y3QoX19wLCBfX3ZhbHVlKTsKISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9UMT4KISBpbmxpbmUg dm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3ApIHsKISAgIF9Db25zdHJ1Y3QoX19wKTsKISB9CiEgCiEg dGVtcGxhdGUgPGNsYXNzIF9UcD4KISBpbmxpbmUgdm9pZCBkZXN0cm95KF9UcCogX19wb2ludGVy KSB7CiEgICBfRGVzdHJveShfX3BvaW50ZXIpOwohIH0KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX0Zv cndhcmRJdGVyYXRvcj4KISBpbmxpbmUgdm9pZCBkZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19m aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpIHsKISAgIF9EZXN0cm95KF9fZmlyc3QsIF9f bGFzdCk7CiEgfQogIAogIH0gLy8gbmFtZXNwYWNlIHN0ZAogIAogICNlbmRpZiAvKiBfQ1BQX0JJ VFNfU1RMX0NPTlNUUlVDVF9IICovCi0tLSA2MCwxNDQgLS0tLQogICNpZm5kZWYgX0NQUF9CSVRT X1NUTF9DT05TVFJVQ1RfSAogICNkZWZpbmUgX0NQUF9CSVRTX1NUTF9DT05TVFJVQ1RfSCAxCiAg CisgI2luY2x1ZGUgPGJpdHMvdHlwZV90cmFpdHMuaD4KICAjaW5jbHVkZSA8bmV3PgogIAogIG5h bWVzcGFjZSBzdGQKICB7CiEgICAvKioKISAgICAqIEludm9rZSBhbiBhbGxvY2F0ZWQgb2JqZWN0 J3MgY29uc3RydWN0b3Igd2l0aCBhbiBpbml0aWFsaXplci4KISAgICAqCiEgICAgKiBUaGlzIGZ1 bmN0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBDKysgc3RhbmRhcmQgYnV0IGlzIHVzZWQgaW50ZXJu YWxseQohICAgICogd2l0aGluIHRoZSBsaWJyYXJ5LgohICAgICovCiEgICB0ZW1wbGF0ZSA8Y2xh c3MgX1QxLCBjbGFzcyBfVDI+CiEgICAgIGlubGluZSB2b2lkCiEgICAgIF9Db25zdHJ1Y3QoX1Qx KiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkKISAgICAgeyBuZXcgKHN0YXRpY19jYXN0PHZvaWQq PihfX3ApKSBfVDEoX192YWx1ZSk7IH0KICAgIAohICAgLyoqCiEgICAgKiBJbnZva2UgYW4gYWxs b2NhdGVkIG9iamVjdCdzIGNvbnN0cnVjdG9yIHdpdGhvdXQgYW4gaW5pdGlhbGl6ZXIuCiEgICAg KgohICAgICogVGhpcyBmdW5jdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1 dCBpcyB1c2VkIGludGVybmFsbHkKISAgICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwoh ICAgdGVtcGxhdGUgPGNsYXNzIF9UMT4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX0NvbnN0cnVj dChfVDEqIF9fcCkKISAgICAgeyBuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihfX3ApKSBfVDEoKTsg fQohIAohICAgLyoqCiEgICAgKiBEZXN0cm95IGEgcmFuZ2Ugb2Ygb2JqZWN0cyB3aXRoIG5vbnRy aXZpYWwgZGVzdHJ1Y3RvcnMuICAKISAgICAqCiEgICAgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0 aW9uIHVzZWQgb25seSBieSBfRGVzdHJveSgpLgohICAgICovCiEgICB0ZW1wbGF0ZSA8Y2xhc3Mg X0ZvcndhcmRJdGVyYXRvcj4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX19kZXN0cm95X2F1eChf Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNl X3R5cGUpCiEgICAgIHsgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KSBfRGVz dHJveSgmKl9fZmlyc3QpOyB9CiEgCiEgICAvKioKISAgICAqIERlc3Ryb3kgYSByYW5nZSBvZiBv YmplY3RzIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9ycy4gIFNpbmNlIHRoZSBkZXN0cnVjdG9ycwoh ICAgICogYXJlIHRyaXZpYWwsIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBhbmQgaG9wZWZ1bGx5IHRo aXMgZnVuY3Rpb24gd2lsbCBiZQohICAgICogZW50aXJlbHkgb3B0aW1pemVkIGF3YXkuCiEgICAg KgohICAgICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB1c2VkIG9ubHkgYnkgX0Rlc3Ryb3ko KS4KISAgICAqLwohICAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+IAohICAgICBp bmxpbmUgdm9pZAohICAgICBfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJk SXRlcmF0b3IsIF9fdHJ1ZV90eXBlKQohICAgICB7IH0KISAKISAgIC8qKgohICAgICogRGVzdHJv eSB0aGUgb2JqZWN0IHBvaW50ZWQgdG8gYnkgYSBwb2ludGVyIHR5cGUuCiEgICAgKgohICAgICog VGhpcyBmdW5jdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyB1c2Vk IGludGVybmFsbHkKISAgICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwohICAgdGVtcGxh dGUgPGNsYXNzIF9UcD4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX0Rlc3Ryb3koX1RwKiBfX3Bv aW50ZXIpCiEgICAgIHsgX19wb2ludGVyLT5+X1RwKCk7IH0KICAgIAohICAgLyoqCiEgICAgKiBE ZXN0cm95IGEgcmFuZ2Ugb2Ygb2JqZWN0cy4gIElmIHRoZSB2YWx1ZV90eXBlIG9mIHRoZSBvYmpl Y3QgaGFzCiEgICAgKiBhIHRyaXZpYWwgZGVzdHJ1Y3RvciwgdGhlIGNvbXBpbGVyIHNob3VsZCBv cHRpbWl6ZSBhbGwgb2YgdGhpcwohICAgICogYXdheSwgb3RoZXJ3aXNlIHRoZSBvYmplY3RzJyBk ZXN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQuCiEgICAgKgohICAgICogVGhpcyBmdW5jdGlvbiBp cyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyB1c2VkIGludGVybmFsbHkKISAg ICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwohICAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3 YXJkSXRlcmF0b3I+CiEgICAgIGlubGluZSB2b2lkCiEgICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRl cmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiEgICAgIHsKISAgICAgICB0 eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf dHlwZQohICAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlX3R5cGU7CiEgICAgICAgdHlwZWRl ZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9WYWx1ZV90eXBlPjo6aGFzX3RyaXZpYWxfZGVzdHJ1 Y3RvcgohICAgICAgICAgICAgICAgICAgICAgICAgX0hhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg CisgICAgICAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9IYXNfdHJpdmlhbF9kZXN0 cnVjdG9yKCkpOworICAgICB9CiAgfSAvLyBuYW1lc3BhY2Ugc3RkCiAgCiAgI2VuZGlmIC8qIF9D UFBfQklUU19TVExfQ09OU1RSVUNUX0ggKi8KSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfZGVxdWUu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9nY2MvbGlic3RkYysrLXYzL2luY2x1ZGUv Yml0cy9zdGxfZGVxdWUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLWMgLTMgLXAg LXIxLjggc3RsX2RlcXVlLmgKKioqIHN0bF9kZXF1ZS5oCTIwMDEvMDYvMjcgMTc6MDk6NTIJMS44 Ci0tLSBzdGxfZGVxdWUuaAkyMDAxLzA3LzAxIDEyOjQ3OjI0CioqKioqKioqKioqKioqKiBwdWJs aWM6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnN0CioqKiA0NzksNTA4ICoqKioKICAg IGRlcXVlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsdWUsCiAgICAgICAg ICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkgOiBfQmFzZShf X2EsIF9fbikKICAgICAgeyBfTV9maWxsX2luaXRpYWxpemUoX192YWx1ZSk7IH0KLSAgIGV4cGxp Y2l0IGRlcXVlKHNpemVfdHlwZSBfX24pIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSwgX19uKQot ICAgICB7IF9NX2ZpbGxfaW5pdGlhbGl6ZSh2YWx1ZV90eXBlKCkpOyB9CiAgCiEgICAvLyBDaGVj ayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlwZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVy YXRvci4KISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgIGRlcXVlKF9JbnB1 dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgIGNvbnN0 IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKSA6IF9CYXNlKF9fYSkgewoh ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVn cmFsIF9JbnRlZ3JhbDsKISAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfX2ZpcnN0LCBfX2xh c3QsIF9JbnRlZ3JhbCgpKTsKISAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4K ISAgIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9f eCwgX190cnVlX3R5cGUpIHsKISAgICAgX01faW5pdGlhbGl6ZV9tYXAoX19uKTsKISAgICAgX01f ZmlsbF9pbml0aWFsaXplKF9feCk7CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0 SXRlcj4KISAgIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyIF9fZmlyc3Qs IF9JbnB1dEl0ZXIgX19sYXN0LAohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFs c2VfdHlwZSkgewohICAgICBfTV9yYW5nZV9pbml0aWFsaXplKF9fZmlyc3QsIF9fbGFzdCwgX19p dGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiEgICB9CiAgCiEgICB+ZGVxdWUoKSB7IGRlc3Ry b3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIGRlcXVlJiBvcGVyYXRvcj0gKGNvbnN0 IGRlcXVlJiBfX3gpIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwotLS0g NDc5LDUxOCAtLS0tCiAgICBkZXF1ZShzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBf X3ZhbHVlLAogICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90 eXBlKCkpIDogX0Jhc2UoX19hLCBfX24pCiAgICAgIHsgX01fZmlsbF9pbml0aWFsaXplKF9fdmFs dWUpOyB9CiAgCiEgICBleHBsaWNpdAohICAgZGVxdWUoc2l6ZV90eXBlIF9fbikKISAgIDogX0Jh c2UoYWxsb2NhdG9yX3R5cGUoKSwgX19uKQohICAgeyBfTV9maWxsX2luaXRpYWxpemUodmFsdWVf dHlwZSgpKTsgfQogIAohICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFuIGludGVncmFsIHR5cGUu ICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJ dGVyYXRvcj4KISAgICAgZGVxdWUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0 b3IgX19sYXN0LAohICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2Nh dG9yX3R5cGUoKSkKISAgICAgOiBfQmFzZShfX2EpCiEgICAgIHsKISAgICAgICB0eXBlZGVmIHR5 cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsK ISAgICAgICBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFs KCkpOwohICAgICB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9pZAoh ICAgICBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX194LCBf X3RydWVfdHlwZSkKISAgICAgewohICAgICAgIF9NX2luaXRpYWxpemVfbWFwKF9fbik7CiEgICAg ICAgX01fZmlsbF9pbml0aWFsaXplKF9feCk7CiEgICAgIH0KISAKISAgIHRlbXBsYXRlPGNsYXNz IF9JbnB1dEl0ZXI+CiEgICAgIHZvaWQKISAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5w dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBfX2ZhbHNlX3R5cGUpCiEgICAgIHsK ISAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6aXRl cmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKISAgICAgICBfTV9yYW5nZV9pbml0aWFsaXpl KF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAgICAgfQogIAohICAgfmRlcXVl KCkKISAgIHsgX0Rlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIGRlcXVlJiBv cGVyYXRvcj0gKGNvbnN0IGRlcXVlJiBfX3gpIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVu ID0gc2l6ZSgpOwoqKioqKioqKioqKioqKiogcHVibGljOiAKKioqIDU0MSw1NjggKioqKgogICAg ICAgIGZpbGwoYmVnaW4oKSwgZW5kKCksIF9fdmFsKTsKICAgICAgfQogICAgfQotIAotICAgdm9p ZCBhc3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbCkgewotICAgICBfTV9maWxs X2Fzc2lnbihfX24sIF9fdmFsKTsKLSAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ dGVyYXRvcj4KISAgIHZvaWQgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0 ZXJhdG9yIF9fbGFzdCkgewohICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1 dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKISAgICAgX01fYXNzaWduX2Rpc3BhdGNo KF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgfQogIAogIHByaXZhdGU6ICAgICAg ICAgICAgICAgICAgICAgICAgLy8gaGVscGVyIGZ1bmN0aW9ucyBmb3IgYXNzaWduKCkgCiAgCiEg ICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChf SW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKISAgICAgeyBfTV9maWxs X2Fzc2lnbigoc2l6ZV90eXBlKSBfX24sIChfVHApIF9fdmFsKTsgfQohIAohICAgdGVtcGxhdGUg PGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgohICAgdm9pZCBfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0 SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgICAgICAg ICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEgICAgIF9NX2Fzc2lnbl9hdXgoX19maXJzdCwg X19sYXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHRlbXBs YXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgIHZvaWQgX01fYXNzaWduX2F1eChfSW5wdXRJ dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0tLSA1NTEsNTgzIC0tLS0K ICAgICAgICBmaWxsKGJlZ2luKCksIGVuZCgpLCBfX3ZhbCk7CiAgICAgIH0KICAgIH0KICAKISAg IHZvaWQKISAgIGFzc2lnbihzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9fdmFsKQohICAgeyBf TV9maWxsX2Fzc2lnbihfX24sIF9fdmFsKTsgfQohIAohICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0 SXRlcmF0b3I+CiEgICAgIHZvaWQKISAgICAgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKISAgICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg X0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICAg IF9NX2Fzc2lnbl9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgICAg fQogIAogIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVscGVyIGZ1bmN0aW9u cyBmb3IgYXNzaWduKCkgCiAgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9p ZAohICAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwg X190cnVlX3R5cGUpCiEgICAgIHsgX01fZmlsbF9hc3NpZ24oc3RhdGljX2Nhc3Q8c2l6ZV90eXBl PihfX24pLCBzdGF0aWNfY2FzdDxfVHA+KF9fdmFsKSk7IH0KISAKISAgIHRlbXBsYXRlPGNsYXNz IF9JbnB1dEl0ZXJhdG9yPgohICAgICB2b2lkCiEgICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW5w dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkK ISAgICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0 ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKISAgICAgICBfTV9hc3Np Z25fYXV4KF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAgICAgfQogIAogICAg dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgdm9pZCBfTV9hc3NpZ25fYXV4KF9J bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKKioqKioqKioqKioq KioqIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVscGUKKioqIDU4NSw2MjAg KioqKgogIAogIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVzaF8qIGFuZCBw b3BfKgogICAgCiEgICB2b2lkIHB1c2hfYmFjayhjb25zdCB2YWx1ZV90eXBlJiBfX3QpIHsKICAg ICAgaWYgKF9NX2ZpbmlzaC5fTV9jdXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiEgICAg ICAgY29uc3RydWN0KF9NX2ZpbmlzaC5fTV9jdXIsIF9fdCk7CiAgICAgICAgKytfTV9maW5pc2gu X01fY3VyOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9wdXNoX2JhY2tfYXV4KF9fdCk7 CiAgICB9CiAgCiEgICB2b2lkIHB1c2hfYmFjaygpIHsKICAgICAgaWYgKF9NX2ZpbmlzaC5fTV9j dXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiEgICAgICAgY29uc3RydWN0KF9NX2Zpbmlz aC5fTV9jdXIpOwogICAgICAgICsrX01fZmluaXNoLl9NX2N1cjsKICAgICAgfQogICAgICBlbHNl CiAgICAgICAgX01fcHVzaF9iYWNrX2F1eCgpOwogICAgfQogIAohICAgdm9pZCBwdXNoX2Zyb250 KGNvbnN0IHZhbHVlX3R5cGUmIF9fdCkgewogICAgICBpZiAoX01fc3RhcnQuX01fY3VyICE9IF9N X3N0YXJ0Ll9NX2ZpcnN0KSB7CiEgICAgICAgY29uc3RydWN0KF9NX3N0YXJ0Ll9NX2N1ciAtIDEs IF9fdCk7CiAgICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQogICAg ICAgIF9NX3B1c2hfZnJvbnRfYXV4KF9fdCk7CiAgICB9CiAgCiEgICB2b2lkIHB1c2hfZnJvbnQo KSB7CiAgICAgIGlmIChfTV9zdGFydC5fTV9jdXIgIT0gX01fc3RhcnQuX01fZmlyc3QpIHsKISAg ICAgICBjb25zdHJ1Y3QoX01fc3RhcnQuX01fY3VyIC0gMSk7CiAgICAgICAgLS1fTV9zdGFydC5f TV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQotLS0gNjAwLDY0MyAtLS0tCiAgCiAgcHVibGljOiAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoXyogYW5kIHBvcF8qCiAgICAKISAgIHZvaWQK ISAgIHB1c2hfYmFjayhjb25zdCB2YWx1ZV90eXBlJiBfX3QpCiEgICB7CiAgICAgIGlmIChfTV9m aW5pc2guX01fY3VyICE9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMSkgewohICAgICAgIF9Db25zdHJ1 Y3QoX01fZmluaXNoLl9NX2N1ciwgX190KTsKICAgICAgICArK19NX2ZpbmlzaC5fTV9jdXI7CiAg ICAgIH0KICAgICAgZWxzZQogICAgICAgIF9NX3B1c2hfYmFja19hdXgoX190KTsKICAgIH0KICAK ISAgIHZvaWQKISAgIHB1c2hfYmFjaygpCiEgICB7CiAgICAgIGlmIChfTV9maW5pc2guX01fY3Vy ICE9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNo Ll9NX2N1cik7CiAgICAgICAgKytfTV9maW5pc2guX01fY3VyOwogICAgICB9CiAgICAgIGVsc2UK ICAgICAgICBfTV9wdXNoX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkCiEgICBwdXNoX2Zy b250KGNvbnN0IHZhbHVlX3R5cGUmIF9fdCkgCiEgICB7CiAgICAgIGlmIChfTV9zdGFydC5fTV9j dXIgIT0gX01fc3RhcnQuX01fZmlyc3QpIHsKISAgICAgICBfQ29uc3RydWN0KF9NX3N0YXJ0Ll9N X2N1ciAtIDEsIF9fdCk7CiAgICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAg ZWxzZQogICAgICAgIF9NX3B1c2hfZnJvbnRfYXV4KF9fdCk7CiAgICB9CiAgCiEgICB2b2lkCiEg ICBwdXNoX2Zyb250KCkKISAgIHsKICAgICAgaWYgKF9NX3N0YXJ0Ll9NX2N1ciAhPSBfTV9zdGFy dC5fTV9maXJzdCkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fc3RhcnQuX01fY3VyIC0gMSk7CiAg ICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQoqKioqKioqKioqKioq KiogcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoXwoqKiogNjIyLDYzOSAq KioqCiAgICB9CiAgCiAgCiEgICB2b2lkIHBvcF9iYWNrKCkgewogICAgICBpZiAoX01fZmluaXNo Ll9NX2N1ciAhPSBfTV9maW5pc2guX01fZmlyc3QpIHsKICAgICAgICAtLV9NX2ZpbmlzaC5fTV9j dXI7CiEgICAgICAgZGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKICAgICAgfQogICAgICBlbHNl CiAgICAgICAgX01fcG9wX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkIHBvcF9mcm9udCgp IHsKICAgICAgaWYgKF9NX3N0YXJ0Ll9NX2N1ciAhPSBfTV9zdGFydC5fTV9sYXN0IC0gMSkgewoh ICAgICAgIGRlc3Ryb3koX01fc3RhcnQuX01fY3VyKTsKICAgICAgICArK19NX3N0YXJ0Ll9NX2N1 cjsKICAgICAgfQogICAgICBlbHNlIAotLS0gNjQ1LDY2NiAtLS0tCiAgICB9CiAgCiAgCiEgICB2 b2lkCiEgICBwb3BfYmFjaygpCiEgICB7CiAgICAgIGlmIChfTV9maW5pc2guX01fY3VyICE9IF9N X2ZpbmlzaC5fTV9maXJzdCkgewogICAgICAgIC0tX01fZmluaXNoLl9NX2N1cjsKISAgICAgICBf RGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01f cG9wX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkCiEgICBwb3BfZnJvbnQoKQohICAgewog ICAgICBpZiAoX01fc3RhcnQuX01fY3VyICE9IF9NX3N0YXJ0Ll9NX2xhc3QgLSAxKSB7CiEgICAg ICAgX0Rlc3Ryb3koX01fc3RhcnQuX01fY3VyKTsKICAgICAgICArK19NX3N0YXJ0Ll9NX2N1cjsK ICAgICAgfQogICAgICBlbHNlIAoqKioqKioqKioqKioqKiogcHVibGljOiAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBwdXNoXwoqKiogNjQyLDY0OCAqKioqCiAgCiAgcHVibGljOiAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBJbnNlcnQKICAKISAgIGl0ZXJhdG9yIGluc2VydChpdGVyYXRv ciBwb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KSB7CiAgICAgIGlmIChwb3NpdGlvbi5f TV9jdXIgPT0gX01fc3RhcnQuX01fY3VyKSB7CiAgICAgICAgcHVzaF9mcm9udChfX3gpOwogICAg ICAgIHJldHVybiBfTV9zdGFydDsKLS0tIDY2OSw2NzcgLS0tLQogIAogIHB1YmxpYzogICAgICAg ICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0CiAgCiEgICBpdGVyYXRvcgohICAgaW5zZXJ0KGl0 ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiEgICB7CiAgICAgIGlmIChw b3NpdGlvbi5fTV9jdXIgPT0gX01fc3RhcnQuX01fY3VyKSB7CiAgICAgICAgcHVzaF9mcm9udChf X3gpOwogICAgICAgIHJldHVybiBfTV9zdGFydDsKKioqKioqKioqKioqKioqIHB1YmxpYzogICAg ICAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXIKKioqIDY1OCw2OTAgKioqKgogICAgICB9CiAg ICB9CiAgCiEgICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikKISAgICAgeyBy ZXR1cm4gaW5zZXJ0KF9fcG9zaXRpb24sIHZhbHVlX3R5cGUoKSk7IH0KICAKISAgIHZvaWQgaW5z ZXJ0KGl0ZXJhdG9yIF9fcG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp CiEgICAgIHsgX01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQogIAotICAgdm9pZCBf TV9maWxsX2luc2VydChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVf dHlwZSYgX194KTsgCi0gCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlw ZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5w dXRJdGVyYXRvcj4KISAgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLCBfSW5wdXRJdGVyYXRv ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKISAgICAgdHlwZWRlZiB0eXBlbmFt ZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAg IF9NX2luc2VydF9kaXNwYXRjaChfX3BvcywgX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7 CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2luc2Vy dF9kaXNwYXRjaChpdGVyYXRvciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsCiEg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkgewohICAgICBfTV9maWxsX2lu c2VydChfX3BvcywgKHNpemVfdHlwZSkgX19uLCAodmFsdWVfdHlwZSkgX194KTsKISAgIH0KISAK ISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgIHZvaWQgX01faW5zZXJ0X2Rp c3BhdGNoKGl0ZXJhdG9yIF9fcG9zLAohICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0 SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgICAgICAg ICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEgICAgIGluc2VydChfX3BvcywgX19maXJzdCwg X19sYXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHZvaWQg cmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpIHsKICAg ICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwotLS0gNjg3LDcyNiAtLS0tCiAgICAg IH0KICAgIH0KICAKISAgIGl0ZXJhdG9yCiEgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikK ISAgIHsgcmV0dXJuIGluc2VydChfX3Bvc2l0aW9uLCB2YWx1ZV90eXBlKCkpOyB9CiEgCiEgICB2 b2lkCiEgICBpbnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVl X3R5cGUmIF9feCkKISAgIHsgX01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQogIAoh ICAgdm9pZAohICAgX01fZmlsbF9pbnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24s IGNvbnN0IHZhbHVlX3R5cGUmIF9feCk7IAogIAogICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFu IGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiEgICB0ZW1wbGF0 ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgICAgdm9pZAohICAgICBpbnNlcnQoaXRlcmF0b3Ig X19wb3MsIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKISAg ICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+ OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICAgIF9NX2luc2VydF9kaXNwYXRjaChfX3Bvcywg X19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiEgICAgIH0KISAKISAgIHRlbXBsYXRlPGNs YXNzIF9JbnRlZ2VyPgohICAgICB2b2lkCiEgICAgIF9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRv ciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsIF9fdHJ1ZV90eXBlKQohICAgICB7 IF9NX2ZpbGxfaW5zZXJ0KF9fcG9zLCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fbiksIHN0YXRp Y19jYXN0PHZhbHVlX3R5cGU+KF9feCkpOyB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJ dGVyYXRvcj4KISAgICAgdm9pZAohICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19w b3MsCiEgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w dXRJdGVyYXRvciBfX2xhc3QsCiEgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUp CiEgICAgIHsKISAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ dGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyQ2F0ZWdvcnk7CiEgICAgICAgaW5zZXJ0 KF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiEgICAgIH0KICAKICAg IHZvaWQgcmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp IHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwoqKioqKioqKioqKioqKiog ZGVxdWU8X1RwLF9BbGxvYz46OmVyYXNlKGl0ZXJhdG9yIF9fZmlycwoqKiogODQ3LDg2MCAqKioq CiAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fZWxlbXNfYmVmb3JlKSA8IChzaXpl KCkgLSBfX24pIC8gMikgewogICAgICAgIGNvcHlfYmFja3dhcmQoX01fc3RhcnQsIF9fZmlyc3Qs IF9fbGFzdCk7CiAgICAgICAgaXRlcmF0b3IgX19uZXdfc3RhcnQgPSBfTV9zdGFydCArIF9fbjsK ISAgICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfX25ld19zdGFydCk7CiAgICAgICAgX01fZGVzdHJv eV9ub2RlcyhfX25ld19zdGFydC5fTV9ub2RlLCBfTV9zdGFydC5fTV9ub2RlKTsKICAgICAgICBf TV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGNvcHko X19sYXN0LCBfTV9maW5pc2gsIF9fZmlyc3QpOwogICAgICAgIGl0ZXJhdG9yIF9fbmV3X2Zpbmlz aCA9IF9NX2ZpbmlzaCAtIF9fbjsKISAgICAgICBkZXN0cm95KF9fbmV3X2ZpbmlzaCwgX01fZmlu aXNoKTsKICAgICAgICBfTV9kZXN0cm95X25vZGVzKF9fbmV3X2ZpbmlzaC5fTV9ub2RlICsgMSwg X01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7 CiAgICAgIH0KLS0tIDg4Myw4OTYgLS0tLQogICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBl PihfX2VsZW1zX2JlZm9yZSkgPCAoc2l6ZSgpIC0gX19uKSAvIDIpIHsKICAgICAgICBjb3B5X2Jh Y2t3YXJkKF9NX3N0YXJ0LCBfX2ZpcnN0LCBfX2xhc3QpOwogICAgICAgIGl0ZXJhdG9yIF9fbmV3 X3N0YXJ0ID0gX01fc3RhcnQgKyBfX247CiEgICAgICAgX0Rlc3Ryb3koX01fc3RhcnQsIF9fbmV3 X3N0YXJ0KTsKICAgICAgICBfTV9kZXN0cm95X25vZGVzKF9fbmV3X3N0YXJ0Ll9NX25vZGUsIF9N X3N0YXJ0Ll9NX25vZGUpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgIH0K ICAgICAgZWxzZSB7CiAgICAgICAgY29weShfX2xhc3QsIF9NX2ZpbmlzaCwgX19maXJzdCk7CiAg ICAgICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX01fZmluaXNoIC0gX19uOwohICAgICAgIF9E ZXN0cm95KF9fbmV3X2ZpbmlzaCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZXN0cm95X25vZGVz KF9fbmV3X2ZpbmlzaC5fTV9ub2RlICsgMSwgX01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAg ICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgIH0KKioqKioqKioqKioqKioqIHZvaWQg ZGVxdWU8X1RwLF9BbGxvYz46OmNsZWFyKCkKKioqIDg2OCw4ODQgKioqKgogICAgZm9yIChfTWFw X3BvaW50ZXIgX19ub2RlID0gX01fc3RhcnQuX01fbm9kZSArIDE7CiAgICAgICAgIF9fbm9kZSA8 IF9NX2ZpbmlzaC5fTV9ub2RlOwogICAgICAgICArK19fbm9kZSkgewohICAgICBkZXN0cm95KCpf X25vZGUsICpfX25vZGUgKyBfU19idWZmZXJfc2l6ZSgpKTsKICAgICAgX01fZGVhbGxvY2F0ZV9u b2RlKCpfX25vZGUpOwogICAgfQogIAogICAgaWYgKF9NX3N0YXJ0Ll9NX25vZGUgIT0gX01fZmlu aXNoLl9NX25vZGUpIHsKISAgICAgZGVzdHJveShfTV9zdGFydC5fTV9jdXIsIF9NX3N0YXJ0Ll9N X2xhc3QpOwohICAgICBkZXN0cm95KF9NX2ZpbmlzaC5fTV9maXJzdCwgX01fZmluaXNoLl9NX2N1 cik7CiAgICAgIF9NX2RlYWxsb2NhdGVfbm9kZShfTV9maW5pc2guX01fZmlyc3QpOwogICAgfQog ICAgZWxzZQohICAgICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1ciwgX01fZmluaXNoLl9NX2N1cik7 CiAgCiAgICBfTV9maW5pc2ggPSBfTV9zdGFydDsKICB9Ci0tLSA5MDQsOTIwIC0tLS0KICAgIGZv ciAoX01hcF9wb2ludGVyIF9fbm9kZSA9IF9NX3N0YXJ0Ll9NX25vZGUgKyAxOwogICAgICAgICBf X25vZGUgPCBfTV9maW5pc2guX01fbm9kZTsKICAgICAgICAgKytfX25vZGUpIHsKISAgICAgX0Rl c3Ryb3koKl9fbm9kZSwgKl9fbm9kZSArIF9TX2J1ZmZlcl9zaXplKCkpOwogICAgICBfTV9kZWFs bG9jYXRlX25vZGUoKl9fbm9kZSk7CiAgICB9CiAgCiAgICBpZiAoX01fc3RhcnQuX01fbm9kZSAh PSBfTV9maW5pc2guX01fbm9kZSkgewohICAgICBfRGVzdHJveShfTV9zdGFydC5fTV9jdXIsIF9N X3N0YXJ0Ll9NX2xhc3QpOwohICAgICBfRGVzdHJveShfTV9maW5pc2guX01fZmlyc3QsIF9NX2Zp bmlzaC5fTV9jdXIpOwogICAgICBfTV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0 KTsKICAgIH0KICAgIGVsc2UKISAgICAgX0Rlc3Ryb3koX01fc3RhcnQuX01fY3VyLCBfTV9maW5p c2guX01fY3VyKTsKICAKICAgIF9NX2ZpbmlzaCA9IF9NX3N0YXJ0OwogIH0KKioqKioqKioqKioq KioqIHZvaWQgZGVxdWU8X1RwLF9BbGxvYz46Ol9NX2ZpbGxfaW5pdGlhbGkKKioqIDg5Myw4OTkg KioqKgogICAgICAgIHVuaW5pdGlhbGl6ZWRfZmlsbCgqX19jdXIsICpfX2N1ciArIF9TX2J1ZmZl cl9zaXplKCksIF9fdmFsdWUpOwogICAgICB1bmluaXRpYWxpemVkX2ZpbGwoX01fZmluaXNoLl9N X2ZpcnN0LCBfTV9maW5pc2guX01fY3VyLCBfX3ZhbHVlKTsKICAgIH0KISAgIF9fU1RMX1VOV0lO RChkZXN0cm95KF9NX3N0YXJ0LCBpdGVyYXRvcigqX19jdXIsIF9fY3VyKSkpOwogIH0KICAKICB0 ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ dGVyYXRvcj4KLS0tIDkyOSw5MzUgLS0tLQogICAgICAgIHVuaW5pdGlhbGl6ZWRfZmlsbCgqX19j dXIsICpfX2N1ciArIF9TX2J1ZmZlcl9zaXplKCksIF9fdmFsdWUpOwogICAgICB1bmluaXRpYWxp emVkX2ZpbGwoX01fZmluaXNoLl9NX2ZpcnN0LCBfTV9maW5pc2guX01fY3VyLCBfX3ZhbHVlKTsK ICAgIH0KISAgIF9fU1RMX1VOV0lORChfRGVzdHJveShfTV9zdGFydCwgaXRlcmF0b3IoKl9fY3Vy LCBfX2N1cikpKTsKICB9CiAgCiAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0 ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CioqKioqKioqKioqKioqKiB2b2lkIGRlcXVl PF9UcCxfQWxsb2M+OjpfTV9yYW5nZV9pbml0aWFsCioqKiA5MzAsOTQ3ICoqKioKICAgICAgfQog ICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfTV9maW5pc2guX01fZmly c3QpOwogICAgfQohICAgX19TVExfVU5XSU5EKGRlc3Ryb3koX01fc3RhcnQsIGl0ZXJhdG9yKCpf X2N1cl9ub2RlLCBfX2N1cl9ub2RlKSkpOwogIH0KICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9m aW5pc2guX01fY3VyID09IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMS4KICB0ZW1wbGF0ZSA8Y2xhc3Mg X1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9iYWNr X2F1eChjb25zdCB2YWx1ZV90eXBlJiBfX3QpCiAgewogICAgdmFsdWVfdHlwZSBfX3RfY29weSA9 IF9fdDsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2JhY2soKTsKICAgICooX01fZmluaXNoLl9NX25v ZGUgKyAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RMX1RSWSB7CiEgICAgIGNvbnN0 cnVjdChfTV9maW5pc2guX01fY3VyLCBfX3RfY29weSk7CiAgICAgIF9NX2ZpbmlzaC5fTV9zZXRf bm9kZShfTV9maW5pc2guX01fbm9kZSArIDEpOwogICAgICBfTV9maW5pc2guX01fY3VyID0gX01f ZmluaXNoLl9NX2ZpcnN0OwogICAgfQotLS0gOTY2LDk4NCAtLS0tCiAgICAgIH0KICAgICAgdW5p bml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX01fZmluaXNoLl9NX2ZpcnN0KTsKICAg IH0KISAgIF9fU1RMX1VOV0lORChfRGVzdHJveShfTV9zdGFydCwgaXRlcmF0b3IoKl9fY3VyX25v ZGUsIF9fY3VyX25vZGUpKSk7CiAgfQogIAogIC8vIENhbGxlZCBvbmx5IGlmIF9NX2ZpbmlzaC5f TV9jdXIgPT0gX01fZmluaXNoLl9NX2xhc3QgLSAxLgogIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs YXNzIF9BbGxvYz4KISB2b2lkCiEgZGVxdWU8X1RwLF9BbGxvYz46Ol9NX3B1c2hfYmFja19hdXgo Y29uc3QgdmFsdWVfdHlwZSYgX190KQogIHsKICAgIHZhbHVlX3R5cGUgX190X2NvcHkgPSBfX3Q7 CiAgICBfTV9yZXNlcnZlX21hcF9hdF9iYWNrKCk7CiAgICAqKF9NX2ZpbmlzaC5fTV9ub2RlICsg MSkgPSBfTV9hbGxvY2F0ZV9ub2RlKCk7CiAgICBfX1NUTF9UUlkgewohICAgICBfQ29uc3RydWN0 KF9NX2ZpbmlzaC5fTV9jdXIsIF9fdF9jb3B5KTsKICAgICAgX01fZmluaXNoLl9NX3NldF9ub2Rl KF9NX2ZpbmlzaC5fTV9ub2RlICsgMSk7CiAgICAgIF9NX2ZpbmlzaC5fTV9jdXIgPSBfTV9maW5p c2guX01fZmlyc3Q7CiAgICB9CioqKioqKioqKioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+ OjpfTV9wdXNoX2JhY2tfYXV4CioqKiA5NTAsOTYxICoqKioKICAKICAvLyBDYWxsZWQgb25seSBp ZiBfTV9maW5pc2guX01fY3VyID09IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMS4KICB0ZW1wbGF0ZSA8 Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVz aF9iYWNrX2F1eCgpCiAgewogICAgX01fcmVzZXJ2ZV9tYXBfYXRfYmFjaygpOwogICAgKihfTV9m aW5pc2guX01fbm9kZSArIDEpID0gX01fYWxsb2NhdGVfbm9kZSgpOwogICAgX19TVExfVFJZIHsK ISAgICAgY29uc3RydWN0KF9NX2ZpbmlzaC5fTV9jdXIpOwogICAgICBfTV9maW5pc2guX01fc2V0 X25vZGUoX01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAgX01fZmluaXNoLl9NX2N1ciA9IF9N X2ZpbmlzaC5fTV9maXJzdDsKICAgIH0KLS0tIDk4Nyw5OTkgLS0tLQogIAogIC8vIENhbGxlZCBv bmx5IGlmIF9NX2ZpbmlzaC5fTV9jdXIgPT0gX01fZmluaXNoLl9NX2xhc3QgLSAxLgogIHRlbXBs YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KISB2b2lkCiEgZGVxdWU8X1RwLF9BbGxvYz46 Ol9NX3B1c2hfYmFja19hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2JhY2soKTsKICAg ICooX01fZmluaXNoLl9NX25vZGUgKyAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RM X1RSWSB7CiEgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNoLl9NX2N1cik7CiAgICAgIF9NX2Zpbmlz aC5fTV9zZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSArIDEpOwogICAgICBfTV9maW5pc2guX01f Y3VyID0gX01fZmluaXNoLl9NX2ZpcnN0OwogICAgfQoqKioqKioqKioqKioqKiogdm9pZCBkZXF1 ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9iYWNrX2F1eAoqKiogOTY0LDk3MCAqKioqCiAgCiAgLy8g Q2FsbGVkIG9ubHkgaWYgX01fc3RhcnQuX01fY3VyID09IF9NX3N0YXJ0Ll9NX2ZpcnN0LgogIHRl bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KISB2b2lkICBkZXF1ZTxfVHAsX0FsbG9j Pjo6X01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVfdHlwZSYgX190KQogIHsKICAgIHZhbHVl X3R5cGUgX190X2NvcHkgPSBfX3Q7CiAgICBfTV9yZXNlcnZlX21hcF9hdF9mcm9udCgpOwotLS0g MTAwMiwxMDA5IC0tLS0KICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9zdGFydC5fTV9jdXIgPT0g X01fc3RhcnQuX01fZmlyc3QuCiAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgoh IHZvaWQKISBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVf dHlwZSYgX190KQogIHsKICAgIHZhbHVlX3R5cGUgX190X2NvcHkgPSBfX3Q7CiAgICBfTV9yZXNl cnZlX21hcF9hdF9mcm9udCgpOwoqKioqKioqKioqKioqKiogdm9pZCAgZGVxdWU8X1RwLF9BbGxv Yz46Ol9NX3B1c2hfZnJvbnRfYQoqKiogOTcyLDk5MiAqKioqCiAgICBfX1NUTF9UUlkgewogICAg ICBfTV9zdGFydC5fTV9zZXRfbm9kZShfTV9zdGFydC5fTV9ub2RlIC0gMSk7CiAgICAgIF9NX3N0 YXJ0Ll9NX2N1ciA9IF9NX3N0YXJ0Ll9NX2xhc3QgLSAxOwohICAgICBjb25zdHJ1Y3QoX01fc3Rh cnQuX01fY3VyLCBfX3RfY29weSk7CiAgICB9CiAgICBfX1NUTF9VTldJTkQoKCsrX01fc3RhcnQs IF9NX2RlYWxsb2NhdGVfbm9kZSgqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSkpKTsKICB9IAogIAog IC8vIENhbGxlZCBvbmx5IGlmIF9NX3N0YXJ0Ll9NX2N1ciA9PSBfTV9zdGFydC5fTV9maXJzdC4K ICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0Fs bG9jPjo6X01fcHVzaF9mcm9udF9hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2Zyb250 KCk7CiAgICAqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAg IF9fU1RMX1RSWSB7CiAgICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUg LSAxKTsKICAgICAgX01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fbGFzdCAtIDE7CiEgICAg IGNvbnN0cnVjdChfTV9zdGFydC5fTV9jdXIpOwogICAgfQogICAgX19TVExfVU5XSU5EKCgrK19N X3N0YXJ0LCBfTV9kZWFsbG9jYXRlX25vZGUoKihfTV9zdGFydC5fTV9ub2RlIC0gMSkpKSk7CiAg fSAKLS0tIDEwMTEsMTAzMiAtLS0tCiAgICBfX1NUTF9UUlkgewogICAgICBfTV9zdGFydC5fTV9z ZXRfbm9kZShfTV9zdGFydC5fTV9ub2RlIC0gMSk7CiAgICAgIF9NX3N0YXJ0Ll9NX2N1ciA9IF9N X3N0YXJ0Ll9NX2xhc3QgLSAxOwohICAgICBfQ29uc3RydWN0KF9NX3N0YXJ0Ll9NX2N1ciwgX190 X2NvcHkpOwogICAgfQogICAgX19TVExfVU5XSU5EKCgrK19NX3N0YXJ0LCBfTV9kZWFsbG9jYXRl X25vZGUoKihfTV9zdGFydC5fTV9ub2RlIC0gMSkpKSk7CiAgfSAKICAKICAvLyBDYWxsZWQgb25s eSBpZiBfTV9zdGFydC5fTV9jdXIgPT0gX01fc3RhcnQuX01fZmlyc3QuCiAgdGVtcGxhdGUgPGNs YXNzIF9UcCwgY2xhc3MgX0FsbG9jPgohIHZvaWQKISBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVz aF9mcm9udF9hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2Zyb250KCk7CiAgICAqKF9N X3N0YXJ0Ll9NX25vZGUgLSAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RMX1RSWSB7 CiAgICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKTsKICAgICAg X01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fbGFzdCAtIDE7CiEgICAgIF9Db25zdHJ1Y3Qo X01fc3RhcnQuX01fY3VyKTsKICAgIH0KICAgIF9fU1RMX1VOV0lORCgoKytfTV9zdGFydCwgX01f ZGVhbGxvY2F0ZV9ub2RlKCooX01fc3RhcnQuX01fbm9kZSAtIDEpKSkpOwogIH0gCioqKioqKioq KioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfYmFja19hdXgoCioqKiA5OTgs MTAwNCAqKioqCiAgICBfTV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0KTsKICAg IF9NX2ZpbmlzaC5fTV9zZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSAtIDEpOwogICAgX01fZmlu aXNoLl9NX2N1ciA9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMTsKISAgIGRlc3Ryb3koX01fZmluaXNo Ll9NX2N1cik7CiAgfQogIAogIC8vIENhbGxlZCBvbmx5IGlmIF9NX3N0YXJ0Ll9NX2N1ciA9PSBf TV9zdGFydC5fTV9sYXN0IC0gMS4gIE5vdGUgdGhhdCAKLS0tIDEwMzgsMTA0NCAtLS0tCiAgICBf TV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0KTsKICAgIF9NX2ZpbmlzaC5fTV9z ZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSAtIDEpOwogICAgX01fZmluaXNoLl9NX2N1ciA9IF9N X2ZpbmlzaC5fTV9sYXN0IC0gMTsKISAgIF9EZXN0cm95KF9NX2ZpbmlzaC5fTV9jdXIpOwogIH0K ICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9zdGFydC5fTV9jdXIgPT0gX01fc3RhcnQuX01fbGFz dCAtIDEuICBOb3RlIHRoYXQgCioqKioqKioqKioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+ OjpfTV9wb3BfYmFja19hdXgoCioqKiAxMDA4LDEwMTQgKioqKgogIHRlbXBsYXRlIDxjbGFzcyBf VHAsIGNsYXNzIF9BbGxvYz4KICB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfZnJvbnRf YXV4KCkKICB7CiEgICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1cik7CiAgICBfTV9kZWFsbG9jYXRl X25vZGUoX01fc3RhcnQuX01fZmlyc3QpOwogICAgX01fc3RhcnQuX01fc2V0X25vZGUoX01fc3Rh cnQuX01fbm9kZSArIDEpOwogICAgX01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fZmlyc3Q7 Ci0tLSAxMDQ4LDEwNTQgLS0tLQogIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4K ICB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfZnJvbnRfYXV4KCkKICB7CiEgICBfRGVz dHJveShfTV9zdGFydC5fTV9jdXIpOwogICAgX01fZGVhbGxvY2F0ZV9ub2RlKF9NX3N0YXJ0Ll9N X2ZpcnN0KTsKICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUgKyAxKTsK ICAgIF9NX3N0YXJ0Ll9NX2N1ciA9IF9NX3N0YXJ0Ll9NX2ZpcnN0OwpJbmRleDogaW5jbHVkZS9i aXRzL3N0bF90ZW1wYnVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZ2NjL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3RlbXBidWYuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS41CmRpZmYgLWMgLTMgLXAgLXIxLjUgc3RsX3RlbXBidWYuaAoqKiogc3RsX3RlbXBidWYuaAky MDAxLzA2LzI3IDE3OjA5OjUyCTEuNQotLS0gc3RsX3RlbXBidWYuaAkyMDAxLzA3LzAxIDEyOjQ3 OjI3CioqKioqKioqKioqKioqKiBwdWJsaWM6CioqKiAxNDksMTU1ICoqKioKICAgIH0KICAgCiAg ICB+X1RlbXBvcmFyeV9idWZmZXIoKSB7ICAKISAgICAgZGVzdHJveShfTV9idWZmZXIsIF9NX2J1 ZmZlciArIF9NX2xlbik7CiAgICAgIGZyZWUoX01fYnVmZmVyKTsKICAgIH0KICAKLS0tIDE0OSwx NTUgLS0tLQogICAgfQogICAKICAgIH5fVGVtcG9yYXJ5X2J1ZmZlcigpIHsgIAohICAgICBfRGVz dHJveShfTV9idWZmZXIsIF9NX2J1ZmZlciArIF9NX2xlbik7CiAgICAgIGZyZWUoX01fYnVmZmVy KTsKICAgIH0KICAKSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfdHJlZS5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnMvZ2NjL2djYy9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF90cmVlLmgs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1jIC0zIC1wIC1yMS42IHN0bF90cmVlLmgK KioqIHN0bF90cmVlLmgJMjAwMS8wNi8yNyAxNzowOTo1MgkxLjYKLS0tIHN0bF90cmVlLmgJMjAw MS8wNy8wMSAxMjo0NzozNgoqKioqKioqKioqKioqKiogcHJvdGVjdGVkOgoqKiogNTUyLDU2MiAq KioqCiAgCiAgcHJvdGVjdGVkOgogIAohICAgX0xpbmtfdHlwZSBfTV9jcmVhdGVfbm9kZShjb25z dCB2YWx1ZV90eXBlJiBfX3gpCiAgICB7CiAgICAgIF9MaW5rX3R5cGUgX190bXAgPSBfTV9nZXRf bm9kZSgpOwogICAgICBfX1NUTF9UUlkgewohICAgICAgIGNvbnN0cnVjdCgmX190bXAtPl9NX3Zh bHVlX2ZpZWxkLCBfX3gpOwogICAgICB9CiAgICAgIF9fU1RMX1VOV0lORChfTV9wdXRfbm9kZShf X3RtcCkpOwogICAgICByZXR1cm4gX190bXA7Ci0tLSA1NTIsNTYzIC0tLS0KICAKICBwcm90ZWN0 ZWQ6CiAgCiEgICBfTGlua190eXBlCiEgICBfTV9jcmVhdGVfbm9kZShjb25zdCB2YWx1ZV90eXBl JiBfX3gpCiAgICB7CiAgICAgIF9MaW5rX3R5cGUgX190bXAgPSBfTV9nZXRfbm9kZSgpOwogICAg ICBfX1NUTF9UUlkgewohICAgICAgIF9Db25zdHJ1Y3QoJl9fdG1wLT5fTV92YWx1ZV9maWVsZCwg X194KTsKICAgICAgfQogICAgICBfX1NUTF9VTldJTkQoX01fcHV0X25vZGUoX190bXApKTsKICAg ICAgcmV0dXJuIF9fdG1wOwoqKioqKioqKioqKioqKiogcHJvdGVjdGVkOgoqKiogNTcxLDU3OSAq KioqCiAgICAgIHJldHVybiBfX3RtcDsKICAgIH0KICAKISAgIHZvaWQgZGVzdHJveV9ub2RlKF9M aW5rX3R5cGUgX19wKQogICAgewohICAgICBkZXN0cm95KCZfX3AtPl9NX3ZhbHVlX2ZpZWxkKTsK ICAgICAgX01fcHV0X25vZGUoX19wKTsKICAgIH0KICAKLS0tIDU3Miw1ODEgLS0tLQogICAgICBy ZXR1cm4gX190bXA7CiAgICB9CiAgCiEgICB2b2lkCiEgICBkZXN0cm95X25vZGUoX0xpbmtfdHlw ZSBfX3ApCiAgICB7CiEgICAgIF9EZXN0cm95KCZfX3AtPl9NX3ZhbHVlX2ZpZWxkKTsKICAgICAg X01fcHV0X25vZGUoX19wKTsKICAgIH0KICAKSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfdmVjdG9y LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRl L2JpdHMvc3RsX3ZlY3Rvci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtYyAtMyAt cCAtcjEuOCBzdGxfdmVjdG9yLmgKKioqIHN0bF92ZWN0b3IuaAkyMDAxLzA2LzI3IDE3OjA5OjUy CTEuOAotLS0gc3RsX3ZlY3Rvci5oCTIwMDEvMDcvMDEgMTI6NDc6NDEKKioqKioqKioqKioqKioq IHB1YmxpYzoKKioqIDIzNiwyNjggKioqKgogIAogICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFu IGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiAgICB0ZW1wbGF0 ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICB2ZWN0b3IoX0lucHV0SXRlcmF0b3IgX19maXJz dCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl JiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKSA6IF9CYXNlKF9fYSkgewohICAgICB0eXBlZGVmIHR5 cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsK ISAgICAgX01faW5pdGlhbGl6ZV9hdXgoX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiEg ICB9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2luaXRpYWxp emVfYXV4KF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWx1ZSwgX190cnVlX3R5cGUpIHsKISAg ICAgX01fc3RhcnQgPSBfTV9hbGxvY2F0ZShfX24pOwohICAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9 IF9NX3N0YXJ0ICsgX19uOyAKISAgICAgX01fZmluaXNoID0gdW5pbml0aWFsaXplZF9maWxsX24o X01fc3RhcnQsIF9fbiwgX192YWx1ZSk7CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lu cHV0SXRlcmF0b3I+CiEgICB2b2lkIF9NX2luaXRpYWxpemVfYXV4KF9JbnB1dEl0ZXJhdG9yIF9f Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgICAgICAgICAgICAgICAgICAg X19mYWxzZV90eXBlKSB7CiEgICAgIF9NX3JhbmdlX2luaXRpYWxpemUoX19maXJzdCwgX19sYXN0 LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKISAgIH52ZWN0b3IoKSB7 IGRlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIHZlY3RvcjxfVHAsIF9BbGxv Yz4mIG9wZXJhdG9yPShjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gpOwogICAgdm9pZCBy ZXNlcnZlKHNpemVfdHlwZSBfX24pIHsKICAgICAgaWYgKGNhcGFjaXR5KCkgPCBfX24pIHsKICAg ICAgICBjb25zdCBzaXplX3R5cGUgX19vbGRfc2l6ZSA9IHNpemUoKTsKICAgICAgICBwb2ludGVy IF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX19uLCBfTV9zdGFydCwgX01fZmluaXNoKTsK ISAgICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2Nh dGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0 YXJ0ID0gX190bXA7CiAgICAgICAgX01fZmluaXNoID0gX190bXAgKyBfX29sZF9zaXplOwotLS0g MjM2LDI3NCAtLS0tCiAgCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlw ZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KICAgIHRlbXBsYXRlIDxjbGFzcyBfSW5w dXRJdGVyYXRvcj4KISAgICAgdmVjdG9yKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0 ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBh bGxvY2F0b3JfdHlwZSgpKQohIAk6IF9CYXNlKF9fYSkKISAJewohICAgICAgIHR5cGVkZWYgdHlw ZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwoh ICAgICAgIF9NX2luaXRpYWxpemVfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwoh ICAgICB9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICAgIHZvaWQgX01faW5p dGlhbGl6ZV9hdXgoX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbHVlLCBfX3RydWVfdHlwZSkK ISAJewohICAgICAgIF9NX3N0YXJ0ID0gX01fYWxsb2NhdGUoX19uKTsKISAgICAgICBfTV9lbmRf b2Zfc3RvcmFnZSA9IF9NX3N0YXJ0ICsgX19uOyAKISAgICAgICBfTV9maW5pc2ggPSB1bmluaXRp YWxpemVkX2ZpbGxfbihfTV9zdGFydCwgX19uLCBfX3ZhbHVlKTsKISAgICAgfQohIAohICAgdGVt cGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICAgIHZvaWQKISAJX01faW5pdGlhbGl6ZV9h dXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNl X3R5cGUpCiEgCXsKISAJICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ dGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyQ2F0ZWdveTsKISAJICBfTV9yYW5nZV9p bml0aWFsaXplKF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAJfQogIAohICAg fnZlY3RvcigpCiEgICB7IF9EZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOyB9CiAgCiAgICB2 ZWN0b3I8X1RwLCBfQWxsb2M+JiBvcGVyYXRvcj0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYg X194KTsKICAgIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUgX19uKSB7CiAgICAgIGlmIChjYXBhY2l0 eSgpIDwgX19uKSB7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb2xkX3NpemUgPSBzaXplKCk7 CiAgICAgICAgcG9pbnRlciBfX3RtcCA9IF9NX2FsbG9jYXRlX2FuZF9jb3B5KF9fbiwgX01fc3Rh cnQsIF9NX2ZpbmlzaCk7CiEgICAgICAgX0Rlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7CiAg ICAgICAgX01fZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFy dCk7CiAgICAgICAgX01fc3RhcnQgPSBfX3RtcDsKICAgICAgICBfTV9maW5pc2ggPSBfX3RtcCAr IF9fb2xkX3NpemU7CioqKioqKioqKioqKioqKiBwdWJsaWM6CioqKiAyNzgsMjk2ICoqKioKICAg IHZvaWQgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX192YWwpIHsgX01fZmlsbF9h c3NpZ24oX19uLCBfX3ZhbCk7IH0KICAgIHZvaWQgX01fZmlsbF9hc3NpZ24oc2l6ZV90eXBlIF9f biwgY29uc3QgX1RwJiBfX3ZhbCk7CiAgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0 b3I+CiEgICB2b2lkIGFzc2lnbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv ciBfX2xhc3QpIHsKISAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVy YXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfX2Zp cnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBf SW50ZWdlcj4KISAgIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVn ZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfYXNzaWduKChzaXplX3R5cGUp IF9fbiwgKF9UcCkgX192YWwpOyB9CiAgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcj4K ISAgIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRl ciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKISAgICAgeyBfTV9hc3NpZ25fYXV4KF9fZmlyc3QsIF9f bGFzdCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KICAKICAgIHRlbXBsYXRlIDxj bGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgIHZvaWQgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRv ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0tLSAyODQsMzA5IC0tLS0KICAgIHZv aWQgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX192YWwpIHsgX01fZmlsbF9hc3Np Z24oX19uLCBfX3ZhbCk7IH0KICAgIHZvaWQgX01fZmlsbF9hc3NpZ24oc2l6ZV90eXBlIF9fbiwg Y29uc3QgX1RwJiBfX3ZhbCk7CiAgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4K ISAgICAgdm9pZAohIAlhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0 b3IgX19sYXN0KQohIAl7CiEgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5w dXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAgICAgX01fYXNzaWduX2Rpc3Bh dGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgICB9CiAgCiEgICB0ZW1wbGF0 ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9pZAohIAlfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVn ZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiAgICAgIHsgX01fZmlsbF9hc3Np Z24oKHNpemVfdHlwZSkgX19uLCAoX1RwKSBfX3ZhbCk7IH0KICAKISAgIHRlbXBsYXRlPGNsYXNz IF9JbnB1dEl0ZXI+CiEgICAgIHZvaWQKISAJX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXIg X19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKISAgICAgewohIAkgIHR5 cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjppdGVyYXRvcl9jYXRl Z29yeSBfSXRlckNhdGVnb3J5OwohIAkgIF9NX2Fzc2lnbl9hdXgoX19maXJzdCwgX19sYXN0LCBf SXRlckNhdGVnb3J5KCkpOwohIAl9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0 b3I+CiAgICB2b2lkIF9NX2Fzc2lnbl9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0 SXRlcmF0b3IgX19sYXN0LAoqKioqKioqKioqKioqKiogcHVibGljOgoqKiogMzA1LDM3MCAqKioq CiAgICByZWZlcmVuY2UgYmFjaygpIHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQogICAgY29uc3Rf cmVmZXJlbmNlIGJhY2soKSBjb25zdCB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KICAKISAgIHZv aWQgcHVzaF9iYWNrKGNvbnN0IF9UcCYgX194KSB7CiAgICAgIGlmIChfTV9maW5pc2ggIT0gX01f ZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwogICAg ICAgICsrX01fZmluaXNoOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9pbnNlcnRfYXV4 KGVuZCgpLCBfX3gpOwogICAgfQohICAgdm9pZCBwdXNoX2JhY2soKSB7CiAgICAgIGlmIChfTV9m aW5pc2ggIT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNo KTsKICAgICAgICArK19NX2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5z ZXJ0X2F1eChlbmQoKSk7CiAgICB9CiEgICB2b2lkIHN3YXAodmVjdG9yPF9UcCwgX0FsbG9jPiYg X194KSB7CiAgICAgIHN0ZDo6c3dhcChfTV9zdGFydCwgX194Ll9NX3N0YXJ0KTsKICAgICAgc3Rk Ojpzd2FwKF9NX2ZpbmlzaCwgX194Ll9NX2ZpbmlzaCk7CiAgICAgIHN0ZDo6c3dhcChfTV9lbmRf b2Zfc3RvcmFnZSwgX194Ll9NX2VuZF9vZl9zdG9yYWdlKTsKICAgIH0KICAKISAgIGl0ZXJhdG9y IGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9feCkgewogICAgICBzaXpl X3R5cGUgX19uID0gX19wb3NpdGlvbiAtIGJlZ2luKCk7CiAgICAgIGlmIChfTV9maW5pc2ggIT0g X01fZW5kX29mX3N0b3JhZ2UgJiYgX19wb3NpdGlvbiA9PSBlbmQoKSkgewohICAgICAgIGNvbnN0 cnVjdChfTV9maW5pc2gsIF9feCk7CiAgICAgICAgKytfTV9maW5pc2g7CiAgICAgIH0KICAgICAg ZWxzZQogICAgICAgIF9NX2luc2VydF9hdXgoaXRlcmF0b3IoX19wb3NpdGlvbiksIF9feCk7CiAg ICAgIHJldHVybiBiZWdpbigpICsgX19uOwogICAgfQohICAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJh dG9yIF9fcG9zaXRpb24pIHsKICAgICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdp bigpOwogICAgICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlICYmIF9fcG9zaXRp b24gPT0gZW5kKCkpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNoKTsKICAgICAgICArK19N X2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRv cihfX3Bvc2l0aW9uKSk7CiAgICAgIHJldHVybiBiZWdpbigpICsgX19uOwogICAgfQogICAgLy8g Q2hlY2sgd2hldGhlciBpdCdzIGFuIGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4g aXRlcmF0b3IuCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICB2b2lkIGlu c2VydChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0 b3IgX19sYXN0KSB7CiEgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRl cmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goX19w b3MsIF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgfQogIAogICAgdGVtcGxhdGUg PGNsYXNzIF9JbnRlZ2VyPgohICAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19w b3MsIF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsCiEgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX3RydWVfdHlwZSkKISAgICAgeyBfTV9maWxsX2luc2VydChfX3BvcywgKHNpemVfdHlw ZSkgX19uLCAoX1RwKSBfX3ZhbCk7IH0KISAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy YXRvcj4KISAgIHZvaWQgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLAohICAgICAg ICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0 b3IgX19sYXN0LAohICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEg ICAgIF9NX3JhbmdlX2luc2VydChfX3BvcywgX19maXJzdCwgX19sYXN0LCBfX2l0ZXJhdG9yX2Nh dGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHZvaWQgaW5zZXJ0IChpdGVyYXRvciBfX3Bv cywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpCiAgICAgIHsgX01fZmlsbF9pbnNlcnQo X19wb3MsIF9fbiwgX194KTsgfQotLS0gMzE4LDQwMiAtLS0tCiAgICByZWZlcmVuY2UgYmFjaygp IHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQogICAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25z dCB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KICAKISAgIHZvaWQKISAgIHB1c2hfYmFjayhjb25z dCBfVHAmIF9feCkKISAgIHsKICAgICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFn ZSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwogICAgICAgICsrX01fZmlu aXNoOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9pbnNlcnRfYXV4KGVuZCgpLCBfX3gp OwogICAgfQohIAohICAgdm9pZAohICAgcHVzaF9iYWNrKCkKISAgIHsKICAgICAgaWYgKF9NX2Zp bmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNo KTsKICAgICAgICArK19NX2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5z ZXJ0X2F1eChlbmQoKSk7CiAgICB9CiEgCiEgICB2b2lkCiEgICBzd2FwKHZlY3RvcjxfVHAsIF9B bGxvYz4mIF9feCkKISAgIHsKICAgICAgc3RkOjpzd2FwKF9NX3N0YXJ0LCBfX3guX01fc3RhcnQp OwogICAgICBzdGQ6OnN3YXAoX01fZmluaXNoLCBfX3guX01fZmluaXNoKTsKICAgICAgc3RkOjpz d2FwKF9NX2VuZF9vZl9zdG9yYWdlLCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwogICAgfQogIAoh ICAgaXRlcmF0b3IKISAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9f eCkKISAgIHsKICAgICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAg ICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlICYmIF9fcG9zaXRpb24gPT0gZW5k KCkpIHsKISAgICAgICBfQ29uc3RydWN0KF9NX2ZpbmlzaCwgX194KTsKICAgICAgICArK19NX2Zp bmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRvcihf X3Bvc2l0aW9uKSwgX194KTsKICAgICAgcmV0dXJuIGJlZ2luKCkgKyBfX247CiAgICB9CiEgCiEg ICBpdGVyYXRvcgohICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24pCiEgICB7CiAgICAgIHNp emVfdHlwZSBfX24gPSBfX3Bvc2l0aW9uIC0gYmVnaW4oKTsKICAgICAgaWYgKF9NX2ZpbmlzaCAh PSBfTV9lbmRfb2Zfc3RvcmFnZSAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKSB7CiEgICAgICAgX0Nv bnN0cnVjdChfTV9maW5pc2gpOwogICAgICAgICsrX01fZmluaXNoOwogICAgICB9CiAgICAgIGVs c2UKICAgICAgICBfTV9pbnNlcnRfYXV4KGl0ZXJhdG9yKF9fcG9zaXRpb24pKTsKICAgICAgcmV0 dXJuIGJlZ2luKCkgKyBfX247CiAgICB9CisgCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4g aW50ZWdyYWwgdHlwZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KISAgIHRlbXBsYXRl PGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgohICAgICB2b2lkCiEgCWluc2VydChpdGVyYXRvciBfX3Bv cywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQohIAl7CiEg ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRl Z3JhbCBfSW50ZWdyYWw7CiEgICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKF9fcG9zLCBfX2ZpcnN0 LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgICAgfQogIAogICAgdGVtcGxhdGUgPGNsYXNzIF9J bnRlZ2VyPgohICAgICB2b2lkCiEgCV9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRvciBfX3Bvcywg X0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiEgICAgIHsgX01fZmls bF9pbnNlcnQoX19wb3MsIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX19uKSwgc3RhdGljX2Nhc3Q8 X1RwPihfX3ZhbCkpOyB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAg ICAgdm9pZAohIAlfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsCiEgICAgICAgICAg ICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xh c3QsCiEgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiEgCXsKISAJICB0eXBl ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2Nh dGVnb3J5IF9JdGVyQ2F0ZWdvcnk7CiEgICAgICAgX01fcmFuZ2VfaW5zZXJ0KF9fcG9zLCBfX2Zp cnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiEgICAgIH0KICAKICAgIHZvaWQgaW5zZXJ0 IChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpCiAgICAgIHsg X01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQoqKioqKioqKioqKioqKiogcHVibGlj OgoqKiogMzczLDM5MCAqKioqCiAgCiAgICB2b2lkIHBvcF9iYWNrKCkgewogICAgICAtLV9NX2Zp bmlzaDsKISAgICAgZGVzdHJveShfTV9maW5pc2gpOwogICAgfQogICAgaXRlcmF0b3IgZXJhc2Uo aXRlcmF0b3IgX19wb3NpdGlvbikgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkp CiAgICAgICAgY29weShfX3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAt LV9NX2ZpbmlzaDsKISAgICAgZGVzdHJveShfTV9maW5pc2gpOwogICAgICByZXR1cm4gX19wb3Np dGlvbjsKICAgIH0KICAgIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9y IF9fbGFzdCkgewogICAgICBpdGVyYXRvciBfX2koY29weShfX2xhc3QsIGVuZCgpLCBfX2ZpcnN0 KSk7CiEgICAgIGRlc3Ryb3koX19pLCBlbmQoKSk7CiAgICAgIF9NX2ZpbmlzaCA9IF9NX2Zpbmlz aCAtIChfX2xhc3QgLSBfX2ZpcnN0KTsKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9Ci0tLSA0 MDUsNDIyIC0tLS0KICAKICAgIHZvaWQgcG9wX2JhY2soKSB7CiAgICAgIC0tX01fZmluaXNoOwoh ICAgICBfRGVzdHJveShfTV9maW5pc2gpOwogICAgfQogICAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0 b3IgX19wb3NpdGlvbikgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkpCiAgICAg ICAgY29weShfX3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAtLV9NX2Zp bmlzaDsKISAgICAgX0Rlc3Ryb3koX01fZmluaXNoKTsKICAgICAgcmV0dXJuIF9fcG9zaXRpb247 CiAgICB9CiAgICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xh c3QpIHsKICAgICAgaXRlcmF0b3IgX19pKGNvcHkoX19sYXN0LCBlbmQoKSwgX19maXJzdCkpOwoh ICAgICBfRGVzdHJveShfX2ksIGVuZCgpKTsKICAgICAgX01fZmluaXNoID0gX01fZmluaXNoIC0g KF9fbGFzdCAtIF9fZmlyc3QpOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KKioqKioqKioq KioqKioqIHZlY3RvcjxfVHAsX0FsbG9jPjo6b3BlcmF0b3I9KGNvbnN0IHZlY3QKKioqIDQ5Nyw1 MTAgKioqKgogICAgICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNpemUoKTsKICAgICAg aWYgKF9feGxlbiA+IGNhcGFjaXR5KCkpIHsKICAgICAgICBwb2ludGVyIF9fdG1wID0gX01fYWxs b2NhdGVfYW5kX2NvcHkoX194bGVuLCBfX3guYmVnaW4oKSwgX194LmVuZCgpKTsKISAgICAgICBk ZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3Rh cnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0YXJ0ID0gX190 bXA7CiAgICAgICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9zdGFydCArIF9feGxlbjsKICAgICAg fQogICAgICBlbHNlIGlmIChzaXplKCkgPj0gX194bGVuKSB7CiAgICAgICAgaXRlcmF0b3IgX19p KGNvcHkoX194LmJlZ2luKCksIF9feC5lbmQoKSwgYmVnaW4oKSkpOwohICAgICAgIGRlc3Ryb3ko X19pLCBlbmQoKSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgY29weShfX3guYmVnaW4o KSwgX194LmJlZ2luKCkgKyBzaXplKCksIF9NX3N0YXJ0KTsKLS0tIDUyOSw1NDIgLS0tLQogICAg ICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNpemUoKTsKICAgICAgaWYgKF9feGxlbiA+ IGNhcGFjaXR5KCkpIHsKICAgICAgICBwb2ludGVyIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2Nv cHkoX194bGVuLCBfX3guYmVnaW4oKSwgX194LmVuZCgpKTsKISAgICAgICBfRGVzdHJveShfTV9z dGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRf b2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgICBfTV9zdGFydCA9IF9fdG1wOwogICAgICAg IF9NX2VuZF9vZl9zdG9yYWdlID0gX01fc3RhcnQgKyBfX3hsZW47CiAgICAgIH0KICAgICAgZWxz ZSBpZiAoc2l6ZSgpID49IF9feGxlbikgewogICAgICAgIGl0ZXJhdG9yIF9faShjb3B5KF9feC5i ZWdpbigpLCBfX3guZW5kKCksIGJlZ2luKCkpKTsKISAgICAgICBfRGVzdHJveShfX2ksIGVuZCgp KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBjb3B5KF9feC5iZWdpbigpLCBfX3guYmVn aW4oKSArIHNpemUoKSwgX01fc3RhcnQpOwoqKioqKioqKioqKioqKiogdmVjdG9yPF9UcCwgX0Fs bG9jPjo6X01fYXNzaWduX2F1eChfRm9ydwoqKiogNTUxLDU2NCAqKioqCiAgCiAgICBpZiAoX19s ZW4gPiBjYXBhY2l0eSgpKSB7CiAgICAgIHBvaW50ZXIgX190bXAoX01fYWxsb2NhdGVfYW5kX2Nv cHkoX19sZW4sIF9fZmlyc3QsIF9fbGFzdCkpOwohICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfTV9m aW5pc2gpOwogICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAt IF9NX3N0YXJ0KTsKICAgICAgX01fc3RhcnQgPSBfX3RtcDsKICAgICAgX01fZW5kX29mX3N0b3Jh Z2UgPSBfTV9maW5pc2ggPSBfTV9zdGFydCArIF9fbGVuOwogICAgfQogICAgZWxzZSBpZiAoc2l6 ZSgpID49IF9fbGVuKSB7CiAgICAgIGl0ZXJhdG9yIF9fbmV3X2ZpbmlzaChjb3B5KF9fZmlyc3Qs IF9fbGFzdCwgX01fc3RhcnQpKTsKISAgICAgZGVzdHJveShfX25ld19maW5pc2gsIGVuZCgpKTsK ICAgICAgX01fZmluaXNoID0gX19uZXdfZmluaXNoLmJhc2UoKTsKICAgIH0KICAgIGVsc2Ugewot LS0gNTgzLDU5NiAtLS0tCiAgCiAgICBpZiAoX19sZW4gPiBjYXBhY2l0eSgpKSB7CiAgICAgIHBv aW50ZXIgX190bXAoX01fYWxsb2NhdGVfYW5kX2NvcHkoX19sZW4sIF9fZmlyc3QsIF9fbGFzdCkp OwohICAgICBfRGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgX01fZGVhbGxvY2F0 ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAgIF9NX3N0YXJ0 ID0gX190bXA7CiAgICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX01fZmluaXNoID0gX01fc3RhcnQg KyBfX2xlbjsKICAgIH0KICAgIGVsc2UgaWYgKHNpemUoKSA+PSBfX2xlbikgewogICAgICBpdGVy YXRvciBfX25ld19maW5pc2goY29weShfX2ZpcnN0LCBfX2xhc3QsIF9NX3N0YXJ0KSk7CiEgICAg IF9EZXN0cm95KF9fbmV3X2ZpbmlzaCwgZW5kKCkpOwogICAgICBfTV9maW5pc2ggPSBfX25ld19m aW5pc2guYmFzZSgpOwogICAgfQogICAgZWxzZSB7CioqKioqKioqKioqKioqKiB2b2lkIAoqKiog NTc0LDU4MCAqKioqCiAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYXRv ciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9feCkKICB7CiAgICBpZiAoX01fZmluaXNoICE9IF9N X2VuZF9vZl9zdG9yYWdlKSB7CiEgICAgIGNvbnN0cnVjdChfTV9maW5pc2gsICooX01fZmluaXNo IC0gMSkpOwogICAgICArK19NX2ZpbmlzaDsKICAgICAgX1RwIF9feF9jb3B5ID0gX194OwogICAg ICBjb3B5X2JhY2t3YXJkKF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCAtIDIpLCBpdGVy YXRvcihfTV9maW5pc2gtIDEpKTsKLS0tIDYwNiw2MTIgLS0tLQogIHZlY3RvcjxfVHAsIF9BbGxv Yz46Ol9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1RwJiBfX3gpCiAg ewogICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewohICAgICBfQ29uc3Ry dWN0KF9NX2ZpbmlzaCwgKihfTV9maW5pc2ggLSAxKSk7CiAgICAgICsrX01fZmluaXNoOwogICAg ICBfVHAgX194X2NvcHkgPSBfX3g7CiAgICAgIGNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgaXRl cmF0b3IoX01fZmluaXNoIC0gMiksIGl0ZXJhdG9yKF9NX2ZpbmlzaC0gMSkpOwoqKioqKioqKioq KioqKiogdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYQoqKiogNTg4LDYw MSAqKioqCiAgICAgIF9fU1RMX1RSWSB7CiAgICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0aWFs aXplZF9jb3B5KGl0ZXJhdG9yKF9NX3N0YXJ0KSwgX19wb3NpdGlvbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uZXdfc3RhcnQpOwohICAgICAgIGNvbnN0cnVj dChfX25ld19maW5pc2guYmFzZSgpLCBfX3gpOwogICAgICAgICsrX19uZXdfZmluaXNoOwogICAg ICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX3Bvc2l0aW9uLCBpdGVyYXRv cihfTV9maW5pc2gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X25ld19maW5pc2gpOwogICAgICB9CiEgICAgIF9fU1RMX1VOV0lORCgoZGVzdHJveShfX25ld19z dGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9f bmV3X3N0YXJ0LmJhc2UoKSxfX2xlbikpKTsKISAgICAgZGVzdHJveShiZWdpbigpLCBlbmQoKSk7 CiAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3Rh cnQpOwogICAgICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgX01fZmluaXNo ID0gX19uZXdfZmluaXNoLmJhc2UoKTsKLS0tIDYyMCw2MzMgLS0tLQogICAgICBfX1NUTF9UUlkg ewogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShpdGVyYXRvcihfTV9z dGFydCksIF9fcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fbmV3X3N0YXJ0KTsKISAgICAgICBfQ29uc3RydWN0KF9fbmV3X2ZpbmlzaC5iYXNlKCks IF9feCk7CiAgICAgICAgKytfX25ld19maW5pc2g7CiAgICAgICAgX19uZXdfZmluaXNoID0gdW5p bml0aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmV3X2ZpbmlzaCk7CiAgICAgIH0K ISAgICAgX19TVExfVU5XSU5EKChfRGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAK ICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LmJhc2UoKSxfX2xl bikpKTsKISAgICAgX0Rlc3Ryb3koYmVnaW4oKSwgZW5kKCkpOwogICAgICBfTV9kZWFsbG9jYXRl KF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgX01fc3RhcnQg PSBfX25ld19zdGFydC5iYXNlKCk7CiAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaC5iYXNl KCk7CioqKioqKioqKioqKioqKiB2b2lkIAoqKiogNjA4LDYxNCAqKioqCiAgdmVjdG9yPF9UcCwg X0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKQogIHsKICAgIGlmIChf TV9maW5pc2ggIT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgY29uc3RydWN0KF9NX2Zpbmlz aCwgKihfTV9maW5pc2ggLSAxKSk7CiAgICAgICsrX01fZmluaXNoOwogICAgICBjb3B5X2JhY2t3 YXJkKF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCAtIDIpLCAKICAJCSAgaXRlcmF0b3Io X01fZmluaXNoIC0gMSkpOwotLS0gNjQwLDY0NiAtLS0tCiAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6 X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKQogIHsKICAgIGlmIChfTV9maW5pc2gg IT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgX0NvbnN0cnVjdChfTV9maW5pc2gsICooX01f ZmluaXNoIC0gMSkpOwogICAgICArK19NX2ZpbmlzaDsKICAgICAgY29weV9iYWNrd2FyZChfX3Bv c2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2ggLSAyKSwgCiAgCQkgIGl0ZXJhdG9yKF9NX2Zpbmlz aCAtIDEpKTsKKioqKioqKioqKioqKioqIHZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2luc2VydF9h dXgoaXRlcmEKKioqIDYyMiw2MzUgKioqKgogICAgICBfX1NUTF9UUlkgewogICAgICAgIF9fbmV3 X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShpdGVyYXRvcihfTV9zdGFydCksIF9fcG9zaXRp b24sIAogIAkJCQkJX19uZXdfc3RhcnQpOwohICAgICAgIGNvbnN0cnVjdChfX25ld19maW5pc2gp OwogICAgICAgICsrX19uZXdfZmluaXNoOwogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlh bGl6ZWRfY29weShfX3Bvc2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2gpLCAKICAJCQkJCV9fbmV3 X2ZpbmlzaCk7CiAgICAgIH0KISAgICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0 LF9fbmV3X2ZpbmlzaCksIAogICAgICAgICAgICAgICAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdf c3RhcnQsX19sZW4pKSk7CiEgICAgIGRlc3Ryb3koYmVnaW4oKSwgZW5kKCkpOwogICAgICBfTV9k ZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAg X01fc3RhcnQgPSBfX25ld19zdGFydDsKICAgICAgX01fZmluaXNoID0gX19uZXdfZmluaXNoOwot LS0gNjU0LDY2NyAtLS0tCiAgICAgIF9fU1RMX1RSWSB7CiAgICAgICAgX19uZXdfZmluaXNoID0g dW5pbml0aWFsaXplZF9jb3B5KGl0ZXJhdG9yKF9NX3N0YXJ0KSwgX19wb3NpdGlvbiwgCiAgCQkJ CQlfX25ld19zdGFydCk7CiEgICAgICAgX0NvbnN0cnVjdChfX25ld19maW5pc2gpOwogICAgICAg ICsrX19uZXdfZmluaXNoOwogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29w eShfX3Bvc2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2gpLCAKICAJCQkJCV9fbmV3X2ZpbmlzaCk7 CiAgICAgIH0KISAgICAgX19TVExfVU5XSU5EKChfRGVzdHJveShfX25ld19zdGFydCxfX25ld19m aW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LF9f bGVuKSkpOwohICAgICBfRGVzdHJveShiZWdpbigpLCBlbmQoKSk7CiAgICAgIF9NX2RlYWxsb2Nh dGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICBfTV9zdGFy dCA9IF9fbmV3X3N0YXJ0OwogICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CioqKioqKioq KioqKioqKiB2b2lkIHZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2ZpbGxfaW5zZXJ0CioqKiA2NzEs Njc5ICoqKioKICAgICAgICAgIF9fbmV3X2ZpbmlzaAogICAgICAgICAgICA9IHVuaW5pdGlhbGl6 ZWRfY29weShfX3Bvc2l0aW9uLCBlbmQoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEgICAg ICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3X2ZpbmlzaCksIAogICAg ICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydC5iYXNlKCksX19sZW4p KSk7CiEgICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZWFs bG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgICBf TV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19m aW5pc2guYmFzZSgpOwotLS0gNzAzLDcxMSAtLS0tCiAgICAgICAgICBfX25ld19maW5pc2gKICAg ICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgZW5kKCksIF9fbmV3X2Zp bmlzaCk7CiAgICAgICAgfQohICAgICAgIF9fU1RMX1VOV0lORCgoX0Rlc3Ryb3koX19uZXdfc3Rh cnQsX19uZXdfZmluaXNoKSwgCiAgICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9f bmV3X3N0YXJ0LmJhc2UoKSxfX2xlbikpKTsKISAgICAgICBfRGVzdHJveShfTV9zdGFydCwgX01f ZmluaXNoKTsKICAgICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFn ZSAtIF9NX3N0YXJ0KTsKICAgICAgICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAg ICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2guYmFzZSgpOwoqKioqKioqKioqKioqKiogdmVj dG9yPF9UcCwgX0FsbG9jPjo6X01fcmFuZ2VfaW5zZXJ0KGl0ZQoqKiogNzM2LDc0NCAqKioqCiAg ICAgICAgICBfX25ld19maW5pc2gKICAgICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19w b3NpdGlvbiwgaXRlcmF0b3IoX01fZmluaXNoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEg ICAgICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3X2ZpbmlzaCksIAog ICAgICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydC5iYXNlKCksX19s ZW4pKSk7CiEgICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9k ZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAg ICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25l d19maW5pc2guYmFzZSgpOwotLS0gNzY4LDc3NiAtLS0tCiAgICAgICAgICBfX25ld19maW5pc2gK ICAgICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgaXRlcmF0b3IoX01f ZmluaXNoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEgICAgICAgX19TVExfVU5XSU5EKChf RGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICAg IF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQuYmFzZSgpLF9fbGVuKSkpOwohICAgICAgIF9EZXN0 cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQs IF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdf c3RhcnQuYmFzZSgpOwogICAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaC5iYXNlKCk7Cklu ZGV4OiBpbmNsdWRlL2JhY2t3YXJkL2l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JhY2t3YXJkL2l0ZXJhdG9yLmgsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC1jIC0zIC1wIC1yMS43IGl0ZXJhdG9yLmgKKioqIGl0 ZXJhdG9yLmgJMjAwMS8wNi8yNyAxNzowOTo1MgkxLjcKLS0tIGl0ZXJhdG9yLmgJMjAwMS8wNy8w MSAxMjo0Nzo0MgoqKioqKioqKioqKioqKioKKioqIDEsMzIgKioqKgotIC8vIEJhY2t3YXJkLWNv bXBhdCBzdXBwb3J0IC0qLSBDKysgLSotCi0gCi0gLy8gQ29weXJpZ2h0IChDKSAyMDAxIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIC8vCi0gLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotIC8vIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQot IC8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlCi0gLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCi0gLy8gYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gLy8gVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0gLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSAvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSAKLSAvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIC8vIHdpdGggdGhpcyBsaWJy YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAv LyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywKLSAvLyBVU0EuCi0gCi0gLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlv biwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0gLy8g bGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxl cyBpbnN0YW50aWF0ZQotIC8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5j dGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0gLy8gdGhpcyBmaWxlIGFuZCBs aW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0g Ly8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxl IHRvIGJlIGNvdmVyZWQgYnkKLSAvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBU aGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0gLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIg cmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0gLy8g dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotIAogIC8qCiAgICoKICAgKiBDb3B5cmln aHQgKGMpIDE5OTQKLS0tIDEsMyAtLS0tCioqKioqKioqKioqKioqKiB1c2luZyBzdGQ6OmlzdHJl YW1faXRlcmF0b3I7CioqKiAxMDQsMTExICoqKioKICB1c2luZyBzdGQ6Om9zdHJlYW1faXRlcmF0 b3I7CiAgCiAgLy8gTmFtZXMgZnJvbSBzdGxfY29uc3RydWN0LmgKISB1c2luZyBzdGQ6OmNvbnN0 cnVjdDsKISB1c2luZyBzdGQ6OmRlc3Ryb3k7CiAgCiAgLy8gTmFtZXMgZnJvbSBzdGxfcmF3X3N0 b3JhZ2VfaXRlci5oCiAgdXNpbmcgc3RkOjpyYXdfc3RvcmFnZV9pdGVyYXRvcjsKLS0tIDc1LDEw MCAtLS0tCiAgdXNpbmcgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yOwogIAogIC8vIE5hbWVzIGZyb20g c3RsX2NvbnN0cnVjdC5oCiEgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiEgICBpbmxp bmUgdm9pZAohICAgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpCiEgICB7 IHN0ZDo6X0NvbnN0cnVjdChfX3AsIF9fdmFsdWUpOyB9CiEgCiEgdGVtcGxhdGU8Y2xhc3MgX1Qx PgohICAgaW5saW5lIHZvaWQKISAgIGNvbnN0cnVjdChfVDEqIF9fcCkKISAgIHsgc3RkOjpfQ29u c3RydWN0KF9fcCk7IH0KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgohICAgaW5saW5lIHZvaWQK ISAgIGRlc3Ryb3koX1RwKiBfX3BvaW50ZXIpCiEgICB7IHN0ZDo6X0Rlc3Ryb3koX19wb2ludGVy KTsgfQohICAgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgICBpbmxpbmUg dm9pZAohICAgZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0 b3IgX19sYXN0KQohICAgeyBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fbGFzdCk7IH0KISB9CiAg CiAgLy8gTmFtZXMgZnJvbSBzdGxfcmF3X3N0b3JhZ2VfaXRlci5oCiAgdXNpbmcgc3RkOjpyYXdf c3RvcmFnZV9pdGVyYXRvcjsK --Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD-- From gcc-patches-return-37793-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19355 invoked by alias); 1 Jul 2001 13:04:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19312 invoked from network); 1 Jul 2001 13:04:21 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:21 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Ggtg-0005A7-00 for gcc-patches@gcc.gnu.org; Sun, 01 Jul 2001 14:04:20 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Ggtf-0003Vi-00 for ; Sun, 01 Jul 2001 14:04:19 +0100 Date: Sun, 1 Jul 2001 14:04:19 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Subject: Patches pending review Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII I have the following patches pending review: http://gcc.gnu.org/ml/gcc-patches/2001-05/msg01529.html (removal of obsolete files; removal of "listing" proposed for 3.0 branch as well; needs review that the files are indeed unused; this review has already been done for the VMS-related files) http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00084.html (making pedantic format checking for C++ follow C94; fixes a warning regression, so proposed for 3.0 branch as well; requires a review from the C++ side (i.e., someone more experienced at reading ISO 14882 than I am) for the testcase and that C89 as amended by AMD1 is correct here for functions present in C89 that changed in AMD1) -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37794-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19419 invoked by alias); 1 Jul 2001 13:04:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19305 invoked from network); 1 Jul 2001 13:04:16 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:16 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61D45I11597; Sun, 1 Jul 2001 15:04:06 +0200 (MET DST) Date: Sun, 1 Jul 2001 15:04:05 +0200 (CEST) From: Gerald Pfeifer To: Neil Booth cc: Zack Weinberg , Subject: Re: More cpp.texi updates In-Reply-To: <20010616115112.A4350@daikokuya.demon.co.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sat, 16 Jun 2001, Neil Booth wrote: > Should we keep regenerating the man pages on mainline, or do we only > do that for a release? My feeling is that, if we have a generated file in our CVS repository, it should be up-to-date all of the time. Gerald From gcc-patches-return-37795-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:18:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23671 invoked by alias); 1 Jul 2001 13:18:46 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23650 invoked from network); 1 Jul 2001 13:18:45 -0000 Received: from unknown (HELO laptop.moene.indiv.nluug.nl) (195.109.255.217) by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:18:45 -0000 Received: from local ([127.0.0.1] helo=moene.indiv.nluug.nl) by laptop.moene.indiv.nluug.nl with esmtp (Exim 3.12 #1 (Debian)) id 15Gh82-0006be-00 for ; Sun, 01 Jul 2001 15:19:10 +0200 Message-ID: <3B3F234B.9C269F8B@moene.indiv.nluug.nl> Date: Sun, 01 Jul 2001 15:19:07 +0200 From: Toon Moene Organization: Moene Computational Physics, Maartensdijk, The Netherlands X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bit file sizes. Content-Type: multipart/mixed; boundary="------------58A855A6C376F0A8B11F05A9" This is a multi-part message in MIME format. --------------58A855A6C376F0A8B11F05A9 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit L.S., Currently, on 32-bit targets, libf2c's I/O routines only support file sizes and offsets up to 2 Gbyte. To some of our customers, this is too limiting. To fix this shortcoming, I first updated all variables indicating file offsets to type `off_t'. It is my understanding that configure will automatically convert `off_t' to `long' on systems that do not define `off_t'. This also allowed me to remove the FreeBSD hack w.r.t. the `off_t' argument to ftruncate (however, I'll keep an eye on the FreeBSD check results, because I couldn't test this). Subsequently, I wanted to compile the libf2c/libI77 routines with preprocessor flags that enable 64-bit file operations. Unfortunately, I couldn't get the obvious -D__USE_FILE_OFFSET64 and -D__USE_LARGEFILE64 (Debian 2.2) to work. Perhaps someone could kindly mail me an example ? TIA. The following patch [attached] survived a make bootstrap / make check for C and Fortran on i686-pc-linux-gnu. I installed it on the trunk. Thanks go to Pedro Vazquez , a g77 supporter and alpha tester from the very first hour, for his proof-of-concept of these changes ! -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction) --------------58A855A6C376F0A8B11F05A9 Content-Type: text/plain; charset=us-ascii; name="f2c64.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="f2c64.diff" 2001-07-01 Toon Moene Pedro Vazquez * libI77/fio.h: Use off_t when appropriate. * libI77/backspace.c (f_back): Ditto. * libI77/endfile.c (t_runc): Ditto. * libI77/err.c (f__nowreading): Ditto. * libI77/ftell_.c (unit_chk): Ditto. * libI77/sue.c (global f__recloc, s_wsue): Ditto. *** fio.h.orig Tue May 19 12:51:07 1998 --- fio.h Sun Jul 1 12:34:53 2001 *************** typedef struct *** 35,39 **** int udev; #endif ! int url; /*0=sequential*/ flag useek; /*true=can backspace, use dir, ...*/ flag ufmt; --- 35,39 ---- int udev; #endif ! off_t url; /*0=sequential*/ flag useek; /*true=can backspace, use dir, ...*/ flag ufmt; *** backspace.c.orig Thu May 17 19:19:18 2001 --- backspace.c Sun Jul 1 12:23:18 2001 *************** integer f_back(alist *a) *** 9,13 **** #endif { unit *b; ! long v, w, x, y, z; uiolen n; FILE *f; --- 9,13 ---- #endif { unit *b; ! off_t v, w, x, y, z; uiolen n; FILE *f; *** endfile.c.orig Wed May 16 19:10:15 2001 --- endfile.c Sun Jul 1 12:26:56 2001 *************** t_runc(alist *a) *** 71,75 **** #endif { ! long loc, len; unit *b; int rc; --- 71,75 ---- #endif { ! off_t loc, len; unit *b; int rc; *************** done: *** 132,139 **** #else /* !defined(HAVE_FTRUNCATE) */ fflush(b->ufd); ! /* The cast of loc is helpful on FreeBSD. It helps ! in any case where ftruncate() prototype is somehow missing ! even though autoconf test found it properly. */ ! rc = ftruncate(fileno(b->ufd), (off_t)loc); #endif /* !defined(HAVE_FTRUNCATE) */ if (rc) --- 132,136 ---- #else /* !defined(HAVE_FTRUNCATE) */ fflush(b->ufd); ! rc = ftruncate(fileno(b->ufd), loc); #endif /* !defined(HAVE_FTRUNCATE) */ if (rc) *** err.c.orig Thu May 17 19:19:19 2001 --- err.c Sun Jul 1 12:29:03 2001 *************** f__nowreading(unit *x) *** 211,215 **** #endif { ! long loc; int ufmt, urw; extern char *f__r_mode[], *f__w_mode[]; --- 211,215 ---- #endif { ! off_t loc; int ufmt, urw; extern char *f__r_mode[], *f__w_mode[]; *** ftell_.c.orig Thu May 17 19:19:19 2001 --- ftell_.c Sun Jul 1 12:30:26 2001 *************** unit_chk(integer Unit, char *who) *** 15,19 **** } ! integer #ifdef KR_headers G77_ftell_0 (Unit) integer *Unit; --- 15,19 ---- } ! off_t #ifdef KR_headers G77_ftell_0 (Unit) integer *Unit; *** sue.c.orig Thu May 17 19:19:19 2001 --- sue.c Sun Jul 1 12:33:04 2001 *************** *** 3,7 **** #include "fio.h" extern uiolen f__reclen; ! long f__recloc; #ifdef KR_headers --- 3,7 ---- #include "fio.h" extern uiolen f__reclen; ! off_t f__recloc; #ifdef KR_headers *************** integer s_wsue(cilist *a) *** 68,72 **** } integer e_wsue(Void) ! { long loc; f__init = 1; fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf); --- 68,72 ---- } integer e_wsue(Void) ! { off_t loc; f__init = 1; fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf); --------------58A855A6C376F0A8B11F05A9-- From gcc-patches-return-37796-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:28:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24948 invoked by alias); 1 Jul 2001 13:28:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24914 invoked from network); 1 Jul 2001 13:28:19 -0000 Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38) by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:28:19 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GhGr-0003oN-00; Sun, 01 Jul 2001 14:28:17 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15GhGq-0003l5-00; Sun, 01 Jul 2001 14:28:16 +0100 Date: Sun, 1 Jul 2001 14:28:14 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Toon Moene cc: Subject: Re: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bit file sizes. In-Reply-To: <3B3F234B.9C269F8B@moene.indiv.nluug.nl> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Toon Moene wrote: > To fix this shortcoming, I first updated all variables indicating file > offsets to type `off_t'. It is my understanding that configure will > automatically convert `off_t' to `long' on systems that do not define > `off_t'. You also need to use the fseeko and ftello functions rather than fseek and ftell (since fseek and ftell take long not off_t). > Subsequently, I wanted to compile the libf2c/libI77 routines with > preprocessor flags that enable 64-bit file operations. Unfortunately, I > couldn't get the obvious -D__USE_FILE_OFFSET64 and -D__USE_LARGEFILE64 > (Debian 2.2) to work. Perhaps someone could kindly mail me an example > ? TIA. Look at the comments in - you probably want -D_XOPEN_SOURCE=500L -D_FILE_OFFSET_BITS=64 (the latter being `getconf LFS_CFLAGS`). (Under GNU/Linux on 32-bit systems, you may also need glibc 2.2 and kernel 2.4 to use large files effectively.) -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37797-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:06:21 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6497 invoked by alias); 1 Jul 2001 14:06:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6429 invoked from network); 1 Jul 2001 14:06:16 -0000 Received: from unknown (HELO new-smtp2.ihug.com.au) (203.109.250.28) by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:06:16 -0000 Received: from ihug.com.au (IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193]) by new-smtp2.ihug.com.au (8.9.3/8.9.3) with ESMTP id AAA24543; Mon, 2 Jul 2001 00:05:57 +1000 X-Authentication-Warning: new-smtp2.ihug.com.au: Host IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193] claimed to be ihug.com.au Received: (from rich@localhost) by ihug.com.au (8.11.0/8.11.0) id f61EFeN02834; Mon, 2 Jul 2001 00:15:40 +1000 To: gcc-patches@gcc.gnu.org Cc: pfeifer@dbai.tuwien.ac.at Subject: PATCH: faq.html From: Rich Churcher Date: 02 Jul 2001 00:15:39 +1000 Message-ID: Lines: 11 User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= 2001-07-02 Rich Churcher * Sundry formatting fixes. -- Cheers, Rich. --=-=-= Content-Type: application/x-bzip2 Content-Disposition: attachment; filename=faq-patch.bz2 Content-Transfer-Encoding: base64 QlpoOTFBWSZTWaEkoCAABEXfgEA4ff//v73l3qU/7//gYAsfEgAAoFAAAAAAAAAEJUySanqa bU8mKfqnlP0mk0BoA9TQ0GgADIOaZGQyYIaMJgjTRoxA0yZGAAIc0yMhkwQ0YTBGmjRiBpky MAAQ5pkZDJghowmCNNGjEDTJkYAAhzTIyGTBDRhMEaaNGIGmTIwABAqhEBAEJ6AUwhk0Jkj0 nqemmU8psmp+kym7jMzP2I6/yesPve1TaNHR0fYfepKP2foxU1fKsowXr8v2r8P10e/fhllW WWT48kcWr8q2tjV7HwbNMuyXyyt7b19Vv38ouOUo/zL0g8EpEkDjagHkxQaD+KSqO6OLZnHM uxLokVqqgipXq4HRZ8NjIs9BpK0nuZL9RXjRER5ETJRQ1qoKk86yyErSWMFlKUknkk+D+XUy U83FSLLMEtrN9Gj/lZ5pWJjbKk1JyZtHFyS5skllimDg4sHvWf0bo9uXrfFazFi2uLtb3rSy deLEuv2vQ4qRscXtYrJdrmwbjVZgdbqcOTi+5vRm4NGxqwXUlLglZg7nUsycGDhq6miP1Ssl 2O55+fs9efi4OJvWd7gfxdPCHBmzcXY6mDsavFsX69XYtGx3MzJo81jJk3vFswZsHqbCsJMD I2rJaqXP6KelzblljM5uxuS2NzNmpzeDI0ebFHBq4NiW9SnKLqaMGRg0YP9c6WYPmvU/5m0/ hN1V2sWTm3qZJbSm2KU6jrWXyYpU5dazBTx1YNTMlm7HW1MmDuS1aPmcHRtNUtHkpsWYtW1k /2sxcl3BwMCmq7VZZdZyasHf2eM5MGLNHubm5i6m5ks6MVM0rqWb2LzU9CV21mpkk6majsau 1u5Y1VaParn2NrYul0SxRY+lCH1uj8H/b/b3PS6mSfvu6OC6IxeBa3HnNeDFxf2XO8p86EdR eJj6nFHWd7tdzk9zemxFhiEHE4XPC0OXJs9MRaX8LGYwQYUhUEaMRkpTMxMxMdc+Tti60zkr JT0C1kVJMoiuixGOPyz8z5nA/RZml0fJ8jjgl+LujtiN0Ru37ng2qfEl71tr+YV47X22yfme O2SZN8xU1NWgjtwvjESVVRMpLrdHuEWiDE5TEymPGlKqqaf4+3a9fsuvZM2TxvM+9yfjt34N M7tPfFmuNjalJ62SYpqyXYXeZtb9NLV9LNKUq2Y17YiytFZSI2sRbzGa7+GX0hHlhuEQ81mp dkTLeXKuAhh1IO+95/H27XOIO1SYRMoTMQZvsbih9G6PtD1MIpuTT6kwjrmERS6lz5yUKy2P g3FPeiI/0iI6WXf/UiiRHofupZy+RbNEu5Ky/7tnwwM35qUlEpbUSh+qD3P7tjsYD6iR2OZ/ WPjcz+WJ5PyZxZH6x6mbR9zVk+URgzSRI1QYIhKIuLrwMUiT+qTBD+7E1hqxZCTYyRdo+5jD RSX1rNx7FNUSlCxY2m9sb1mUZEWNDBdEciHJ8kRKX2oyXda7FJiKGvomyJj6XRUEaiMRg9yy nJzREci67FgLG5BuRExIlN4Hz+dIjFi4KGa6meinRRSSkqSmkqiRSlJYpJiVFlIUlKk9F2aI hmzMTL2WRZZSOTJSGfZUQ4vQ7nRNpmxM2VX6LKXSiUnilKVmDu3RYropdsYmaSMcFMkn8MV2 jNRSzNklKUrtFKatVpiMW+EQlMTEtpiaPAU8ko+hLRuVSyxg3LmrYyjVIaszgzZozXYsFkvJ Zqk3JZRvYslmBp2MTFgxav8OJYuzGEszpsUpxKSk4tjms1bDNqnJhXoQcLmjZnKNxm/hLuZI 78kXhdKPzJWS2NEjKDEYTKSZikNyEmDvZIyhD0pS+DZHalDNMpQxVGYP3sR1IhsdajJ6ma7A wRHmuRSI+lJKUEpLqXWEpKRJYuxSy/4h2vQxSO5HYp2qZsFMUKTY6zuiJcBgxIzeiNXaX8oj i5mKmba85gmUoMhq3MXeyeN1O1yebi0RG43QRuZ7UpEpQlKOLYdTFKSUSiJbEuLf1MWKF0R6 UlljQzcyGTc7lI5uwpHM5sUoSlVCMY7EsnJKlG1Ys6oMEqzFIqEpdhiOjFTFqoSaskSZJQyE YMyxq76UZKZMG1xbi5gScRSI1bUShdaNExGCSKcmcP/UaIyTBiiMzJFpfOuswKUi5ZSyS0pS Ukp1zERSd5gs8kZpSjRG1g0ZpRJMIpJHpsxQ9J8yWqF0MUxCT2qCzEN7cuulKMUKiDVRKy66 OCOKXklEP2Uda5dFklJRLBxR2oRKSzvREOFOERZLAF3k2LouYREZxCySWShZCyhShHiiUmqJ Qs8W5EfQ4Hg/t7MH8vAlJHrapUZHxLOPnseqINiI5Nrqdo8Hg2xHudFMzaRKIlESiPEhlDJ8 ZY3pWiEphKSV0qRZSiWojLixeIO9DqRLRdJL50tVlN6keh9bg5sDE2vAMGhipol885HJKUt2 Cnauhm0EPI9a7JgRk0Kjcei8FktixZ2pl0Sos6JZMGJZZgxUeCymaXJZisikmKUUwWzdjJil LFi7PTOl2kt6JSbm83lLLRghqp3JRg2FHwZMdyPWYEXEbGRzWWbAwd6o6lmrBEtxSyGDQ0Rq yLNV0UluUYmaXNkwZMSyUvDS7JiQ78jVFo4JdDm0dbg3M0kaJJSsiEWJIzbGDtEpRilGazM2 wzZSmRC65yFmjlKNTFTRsIUfw636Lou6Nr4211GRTI5uxokbUtGKNyUeoRtbmrF8uUdSV0oc lJcJao5mLOkMUi43PdSIi9bs4YzCJSltauho2pYLLOTFgslyR8R/LeQwQH+LuSKcKEhQklAQ AA== --=-=-=-- From gcc-patches-return-37798-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:17:55 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10390 invoked by alias); 1 Jul 2001 14:17:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10353 invoked from network); 1 Jul 2001 14:17:49 -0000 Received: from unknown (HELO new-smtp2.ihug.com.au) (203.109.250.28) by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:17:49 -0000 Received: from ihug.com.au (IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193]) by new-smtp2.ihug.com.au (8.9.3/8.9.3) with ESMTP id AAA24832; Mon, 2 Jul 2001 00:17:38 +1000 X-Authentication-Warning: new-smtp2.ihug.com.au: Host IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193] claimed to be ihug.com.au Received: (from rich@localhost) by ihug.com.au (8.11.0/8.11.0) id f61ERVV02850; Mon, 2 Jul 2001 00:27:31 +1000 To: gcc-patches@gcc.gnu.org Cc: pfeifer@dbai.tuwien.ac.at Subject: PATCH: gcc-3.0.html From: Rich Churcher Date: 02 Jul 2001 00:27:31 +1000 Message-ID: Lines: 28 User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 2001-07-02 Rich Churcher * Tiny patch to add links to mirror sites in similar fashion to gcc-2.95.3.html Index: gcc-3.0.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.0/gcc-3.0.html,v retrieving revision 1.3 diff -c -3 -p -r1.3 gcc-3.0.html *** gcc-3.0.html 2001/06/18 13:08:46 1.3 --- gcc-3.0.html 2001/07/01 14:16:23 *************** is what makes GCC successful.

*** 29,34 **** --- 29,37 ----

And finally, we can't in good conscience fail to mention some caveats to using GCC 3.0.

+

Find a GNU mirror site
+ Find a GCC mirror site

+

For additional information about GCC please refer to the GCC project web site or contact the GCC development mailing list.

-- Cheers, Rich. From gcc-patches-return-37799-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:21:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11126 invoked by alias); 1 Jul 2001 14:21:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11092 invoked from network); 1 Jul 2001 14:21:31 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:21:31 -0000 Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA29891; Sun, 1 Jul 2001 07:21:28 -0700 (PDT) Received: (from aoliva@localhost) by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f61ELRl10255; Sun, 1 Jul 2001 11:21:27 -0300 To: Michael Elizabeth Chastain Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] build failure, gcc 3.0, native hppa2.0w-hp-hpux11.00, ltconfig References: <200106301349.GAA20411@bosch.cygnus.com> From: Alexandre Oliva Organization: GCC Team, Red Hat Date: 01 Jul 2001 11:21:27 -0300 In-Reply-To: <200106301349.GAA20411@bosch.cygnus.com> (Michael Elizabeth Chastain's message of "Sat, 30 Jun 2001 06:49:41 -0700") Message-ID: Lines: 27 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jun 30, 2001, Michael Elizabeth Chastain wrote: > Do you really mean multi-language-branch in libtool? That's the branch from which I took the last snapshot for GCC. > Gary Vaughan said that he merged MLB to HEAD last weekend. I'm way behind in libtool mailing lists, unfortunately. I have no idea of how stable the result of the merge is so far. > I can work in either MLB branch, HEAD branch, or both. Both would be the best thing, if you don't mind. As soon as it gets installed in the libtool CVS tree (it'll be acknowledged by whoever installs the patch), feel free to install it in GCC CVS too. > Maybe it's a function of what $(CONFIG_SHELL) is, or what patch level their > operating system is. Most likely. -- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ Red Hat GCC Developer aoliva@{cygnus.com, redhat.com} CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} Free Software Evangelist *Please* write to mailing lists, not to me From gcc-patches-return-37800-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:48:16 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19059 invoked by alias); 1 Jul 2001 14:48:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19039 invoked from network); 1 Jul 2001 14:48:15 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:48:15 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61ElPI13649; Sun, 1 Jul 2001 16:47:31 +0200 (MET DST) Date: Sun, 1 Jul 2001 16:47:25 +0200 (CEST) From: Gerald Pfeifer To: Rich Churcher cc: Subject: Re: PATCH: faq.html In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 2 Jul 2001, Rich Churcher wrote: > 2001-07-02 Rich Churcher > > * Sundry formatting fixes. Thanks. I broke some overly long lines resulting from this patch and fixed a typo ("cofigure") and installed the updated patch below. Gerald Index: faq.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/faq.html,v retrieving revision 1.163 diff -u -3 -p -r1.163 faq.html --- faq.html 2001/06/16 11:03:00 1.163 +++ faq.html 2001/07/01 14:46:33 @@ -261,41 +261,52 @@ compiler and available in /usr/local/bin to be the older gcc2 compiler and also available in /usr/local/bin.

The easiest way to do this is to configure the new GCC with ---prefix=/usr/local/gcc -and the older gcc2 with --prefix=/usr/local/gcc2. Build and install both -compilers. Then make a symlink from /usr/local/bin/gcc to -/usr/local/gcc/bin/gcc and from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. -Create similar links for the "g++", "c++" and "g77" compiler drivers.

+--prefix=/usr/local/gcc and the older gcc2 with +--prefix=/usr/local/gcc2. Build and install both +compilers. Then make a symlink from /usr/local/bin/gcc +to /usr/local/gcc/bin/gcc and from +/usr/local/bin/gcc2 to +/usr/local/gcc2/bin/gcc. Create similar links for the +"g++", "c++" and "g77" compiler drivers.

An alternative to using symlinks is to configure with a ---program-transform-name option. This option specifies a sed command to -process installed program names with. Using it you can, for instance, -have all the new GCC programs installed as "new-gcc" and the like. You -will still have to specify different --prefix options for new GCC and -old GCC, because it is only the executable program names that are -transformed. The difference is that you (as administrator) do not have -to set up symlinks, but must specify additional directories in your (as -a user) PATH. A complication with --program-transform-name is that the +--program-transform-name option. This option specifies a +sed command to process installed program names with. Using it you can, +for instance, have all the new GCC programs installed as "new-gcc" and +the like. You will still have to specify different +--prefix options for new GCC and old GCC, because it is +only the executable program names that are transformed. The difference +is that you (as administrator) do not have to set up symlinks, but +must specify additional directories in your (as a user) PATH. A +complication with --program-transform-name is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to prefix "new-" to the -new GCC installed programs -"--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'". With the above ---prefix option, that will install the new GCC programs into -/usr/local/gcc/bin with names prefixed by "new-". You can use ---program-transform-name if you have multiple versions of GCC, and -wish to be sure about which version you are invoking.

+new GCC installed programs: +
+--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,' +
+With the above --prefix option, that will install the new +GCC programs into /usr/local/gcc/bin with names prefixed +by "new-". You can use --program-transform-name if you +have multiple versions of GCC, and wish to be sure about which version +you are invoking.

-

If you use --prefix, GCC may have difficulty locating a GNU +

If you use --prefix, GCC may have difficulty locating a GNU assembler or linker on your system, GCC can not find GNU as/GNU ld explains how to deal with this.

-

Another option that may be easier is to use the --program-prefix= or ---program-suffix= options to configure. So if you're installing GCC -2.95.2 and don't want to disturb the current version of GCC in -/usr/local/bin/, you could do 'configure --program-suffix=-2.95.2 -'. This should result in GCC being installed -as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc.

+

Another option that may be easier is to use the +--program-prefix= or --program-suffix= +options to configure. So if you're installing GCC 2.95.2 and don't +want to disturb the current version of GCC in +/usr/local/bin/, you could do +

+configure --program-suffix=-2.95.2 <other configure options> +
+This should result in GCC being installed as +/usr/local/bin/gcc-2.95.2 instead of +/usr/local/bin/gcc.


Dynamic linker is unable to find GCC libraries

@@ -303,7 +314,7 @@ as /usr/local/bin/gcc-2.95.2 instead of

This problem manifests itself by programs not finding shared libraries they depend on when the programs are started. Note this problem often manifests itself with failures in the libio/libstdc++ -tests after configuring with --enable-shared and building GCC.

+tests after configuring with --enable-shared and building GCC.

GCC does not specify a runpath so that the dynamic linker can find dynamic libraries at runtime.

@@ -317,9 +328,9 @@ NFS server goes down.

programs are going to hang no matter what you do. The problem is programs that do not require the directories.

-

SunOS effectively always passed a -R option for every -L option; -this was a bad idea, and so it was removed for Solaris. We should -not recreate it.

+

SunOS effectively always passed a -R option for every +-L option; this was a bad idea, and so it was removed for +Solaris. We should not recreate it.

However, if you feel you really need such an option to be passed automatically to the linker, you may add it to the GCC specs file. From gcc-patches-return-37801-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 15:14:18 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24380 invoked by alias); 1 Jul 2001 15:14:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24360 invoked from network); 1 Jul 2001 15:14:17 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 15:14:17 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61FDaI14130; Sun, 1 Jul 2001 17:13:37 +0200 (MET DST) Date: Sun, 1 Jul 2001 17:13:35 +0200 (CEST) From: Gerald Pfeifer To: Rich Churcher cc: Subject: Re: PATCH: gcc-3.0.html In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 2 Jul 2001, Rich Churcher wrote: > * Tiny patch to add links to mirror sites in similar fashion to > gcc-2.95.3.html I hope you don't mind, but based on your suggestion, I installed the following patch instead, which also refers to our own mirror sites as well as CVS. Gerald Index: gcc-3.0.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.0/gcc-3.0.html,v retrieving revision 1.3 diff -u -3 -p -r1.3 gcc-3.0.html --- gcc-3.0.html 2001/06/18 13:08:46 1.3 +++ gcc-3.0.html 2001/07/01 15:12:41 @@ -33,5 +33,9 @@ is what makes GCC successful.

GCC project web site or contact the GCC development mailing list.

+

To obtain GCC please use our mirror sites, +one of the GNU mirror sites, +or our CVS server.

+ From gcc-patches-return-37802-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 15:34:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28794 invoked by alias); 1 Jul 2001 15:34:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28741 invoked from network); 1 Jul 2001 15:34:42 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 1 Jul 2001 15:34:42 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GjBY-00063K-00; Sun, 01 Jul 2001 16:30:56 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15GjBX-0004V4-00; Sun, 01 Jul 2001 16:30:55 +0100 Date: Sun, 1 Jul 2001 16:30:53 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Toon Moene cc: , Subject: Re: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bit file sizes. In-Reply-To: <3B3F234B.9C269F8B@moene.indiv.nluug.nl> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Toon Moene wrote: > The following patch [attached] survived a make bootstrap / make check > for C and Fortran on i686-pc-linux-gnu. I installed it on the trunk. This patch causes bootstrap to fail for me on i686-pc-linux-gnu: In file included from ../../../../gcc-cvs/libf2c/libI77/close.c:3: ../../../../gcc-cvs/libf2c/libI77/fio.h:37: parse error before "off_t" Older versions of glibc had a bug which made declare off_t. This bug is now fixed in recent versions; you need to include a suitable header to declare off_t, such as . -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37803-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 15:36:09 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29687 invoked by alias); 1 Jul 2001 15:36:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29667 invoked from network); 1 Jul 2001 15:36:08 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 15:36:08 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61FZvI14771; Sun, 1 Jul 2001 17:35:58 +0200 (MET DST) Date: Sun, 1 Jul 2001 17:35:56 +0200 (CEST) From: Gerald Pfeifer To: cc: Subject: Re: caveat wrt c++ debugging In-Reply-To: <200106141635.f5EGZ6L01368@vexpert.dbai.tuwien.ac.at> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 14 Jun 2001 johnston@vectaport.com wrote: > - adds a caveat about the current state of debugging C++ code > generated by gcc-3.0 with the latest version of gdb. Thanks! I updated your patch a bit and installed the version below! (As a minor note, please try to keep line lengths below 76 characters. And when refering to "current" or "now" we should always specify an actual date.) Thanks, Gerald Index: caveats.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.0/caveats.html,v retrieving revision 1.3 diff -u -3 -p -r1.3 caveats.html --- caveats.html 2001/06/13 07:02:13 1.3 +++ caveats.html 2001/07/01 15:32:34 @@ -35,9 +35,14 @@ libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach, ostream::form, and istream::gets. Here are workaround hints for: ostream::form, - filebuf::at -tach. + filebuf::attach. +
  • The new C++ ABI is not yet fully supported by current (as of + 2001-07-01) releases and development versions of GDB, or any earlier + versions. There is a problem setting breakpoints by line number, and + other related issues that have been fixed in GCC 3.0 but not yet handled + in GDB: + http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
  • From gcc-patches-return-37804-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 15:54:16 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6692 invoked by alias); 1 Jul 2001 15:54:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6650 invoked from network); 1 Jul 2001 15:54:10 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 1 Jul 2001 15:54:10 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA10095; Sun, 1 Jul 01 11:58:20 EDT Date: Sun, 1 Jul 01 11:58:20 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107011558.AA10095@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Fix detection of new LABEL_REF The code in cse.c that tries to return 1 from cse_main if a new LABEL_REF is added isn't quite correct in that it doesn't handle the case where a LABEL_REF is moved from one insn to another and the original insn is deleted. The most straightforward way is simply to look for LABEL_REFs in the insn, which I did. Bootstrapped on ia32-Linux: the test case comes up bootstrapping GNAT. Sun Jul 1 11:53:52 2001 Richard Kenner * cse.c (new_label_ref): Variable deleted. (insert): Remove set of new_label_ref. (check_for_label_ref): New function. (cse_basic_block): Don't check new_label_ref; call check_for_label_ref. *** cse.c 2001/05/17 18:46:57 1.186 --- cse.c 2001/07/01 15:40:15 *************** static int cse_jumps_altered; *** 387,394 **** static int recorded_label_ref; - /* Says which LABEL_REF was put in the hash table. Used to see if we need - to set the above flag. */ - static rtx new_label_ref; - /* canon_hash stores 1 in do_not_record if it notices a reference to CC0, PC, or some other volatile --- 387,390 ---- *************** static void cse_set_around_loop PARAMS ( *** 693,696 **** --- 689,693 ---- static rtx cse_basic_block PARAMS ((rtx, rtx, struct branch_path *, int)); static void count_reg_usage PARAMS ((rtx, int *, rtx, int)); + static int check_for_label_ref PARAMS ((rtx *, void *)); extern void dump_class PARAMS ((struct table_elt*)); static struct cse_reg_info * get_cse_reg_info PARAMS ((unsigned int)); *************** insert (x, classp, hash, mode) *** 1581,1590 **** } - /* If X is a label, show we recorded it. */ - if (GET_CODE (x) == LABEL_REF - || (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS - && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF)) - new_label_ref = x; - /* Put an element for X into the right hash bucket. */ --- 1579,1582 ---- *************** cse_basic_block (from, to, next_branch, *** 7291,7304 **** } - new_label_ref = 0; cse_insn (insn, libcall_insn); ! /* If this insn uses a LABEL_REF and there isn't a REG_LABEL ! note for it, we must rerun jump since it needs to place the ! note. If this is a LABEL_REF for a CODE_LABEL that isn't in ! the insn chain, don't do this since no REG_LABEL will be added. */ ! if (new_label_ref != 0 && INSN_UID (XEXP (new_label_ref, 0)) != 0 ! && reg_mentioned_p (new_label_ref, PATTERN (insn)) ! && ! find_reg_note (insn, REG_LABEL, XEXP (new_label_ref, 0))) recorded_label_ref = 1; } --- 7284,7294 ---- } cse_insn (insn, libcall_insn); ! /* If we haven't already found an insn where we added a LABEL_REF, ! check this one. */ ! if (GET_CODE (insn) == INSN && ! recorded_label_ref ! && for_each_rtx (&PATTERN (insn), check_for_label_ref, ! (void *) insn)) recorded_label_ref = 1; } *************** cse_basic_block (from, to, next_branch, *** 7407,7410 **** --- 7397,7419 ---- return to ? NEXT_INSN (to) : 0; + } + + /* Called via for_each_rtx to see if an insn is using a LABEL_REF for which + there isn't a REG_DEAD note. Return one if so. DATA is the insn. */ + + static int + check_for_label_ref (rtl, data) + rtx *rtl; + void *data; + { + rtx insn = (rtx) data; + + /* If this insn uses a LABEL_REF and there isn't a REG_LABEL note for it, + we must rerun jump since it needs to place the note. If this is a + LABEL_REF for a CODE_LABEL that isn't in the insn chain, don't do this + since no REG_LABEL will be added. */ + return (GET_CODE (*rtl) == LABEL_REF + && INSN_UID (XEXP (*rtl, 0)) != 0 + && ! find_reg_note (insn, REG_LABEL, XEXP (*rtl, 0))); } From gcc-patches-return-37805-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 17:01:52 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25679 invoked by alias); 1 Jul 2001 17:01:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25640 invoked from network); 1 Jul 2001 17:01:50 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.160.54.213) by sourceware.cygnus.com with SMTP; 1 Jul 2001 17:01:50 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id KAA32715; Sun, 1 Jul 2001 10:01:05 -0700 Date: Sun, 1 Jul 2001 10:01:05 -0700 Message-Id: <200107011701.KAA32715@oz.codesourcery.com> X-Authentication-Warning: oz.codesourcery.com: oldham set sender to oldham@codesourcery.com using -f From: Jeffrey Oldham To: bkoz@redhat.com cc: gcc-patches@gcc.gnu.org Subject: Re: [v3] locale::_Impl tweaks Reply-to: oldham@codesourcery.com For i686-pc-linux-gnu gcc 3.1, libstdc++-v3 tests 22_locale/numpunct_char_members.cc and 22_locale/members.cc started failing in my nightly builds after your patch. Are you seeing the same errors? Thanks, Jeffrey D. Oldham oldham@codesourcery.com spawn /nfs/oz/home/oldham/gcc/gcc3/objdir/gcc/g++ -B/nfs/oz/home/oldham/gcc/gcc3/objdir/gcc/ -nostdinc++ -L/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/src -L/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/src/.libs -B/nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/bin/ -B/nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/lib/ -isystem /nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/include -ggdb3 -DDEBUG_ASSERT -ffunction-sections -fdata-sections -nostdinc++ -I/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/include -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/std -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/c_std -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/libsupc++ -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/libio -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/backwards -I/nf! s/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/ext /nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite/22_locale/numpunct_char_members.cc -DDEBUG_ASSERT -lm -o ./numpunct_char_members PASS: 22_locale/numpunct_char_members.cc (test for excess errors) spawn [open ...] numpunct_char_members: /nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite/22_locale/numpunct_char_members.cc:84: void test01(): Assertion `dp2 != dp3' failed. FAIL: 22_locale/numpunct_char_members.cc execution test spawn /nfs/oz/home/oldham/gcc/gcc3/objdir/gcc/g++ -B/nfs/oz/home/oldham/gcc/gcc3/objdir/gcc/ -nostdinc++ -L/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/src -L/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/src/.libs -B/nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/bin/ -B/nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/lib/ -isystem /nfs/oz/home/oldham/gcc-install/gcc3/i686-pc-linux-gnu/include -ggdb3 -DDEBUG_ASSERT -ffunction-sections -fdata-sections -nostdinc++ -I/nfs/oz/home/oldham/gcc/gcc3/objdir/i686-pc-linux-gnu/libstdc++-v3/include -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/std -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/c_std -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/libsupc++ -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/libio -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite -I/nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/backwards -I/nf! s/oz/home/oldham/gcc/gcc3/libstdc++-v3/include/ext /nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite/22_locale/numpunct_char_members.cc -DDEBUG_ASSERT -lm -o ./numpunct_char_members PASS: 22_locale/numpunct_char_members.cc (test for excess errors) spawn [open ...] numpunct_char_members: /nfs/oz/home/oldham/gcc/gcc3/libstdc++-v3/testsuite/22_locale/numpunct_char_members.cc:84: void test01(): Assertion `dp2 != dp3' failed. FAIL: 22_locale/numpunct_char_members.cc execution test From gcc-patches-return-37806-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 17:47:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4556 invoked by alias); 1 Jul 2001 17:47:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4518 invoked from network); 1 Jul 2001 17:47:44 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 1 Jul 2001 17:47:44 -0000 Received: from bosch.cygnus.com (bosch.cygnus.com [205.180.230.231]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id KAA08946; Sun, 1 Jul 2001 10:47:43 -0700 (PDT) From: Michael Elizabeth Chastain Received: (chastain@localhost) by bosch.cygnus.com (8.9.3/8.6.4) id JAA25630; Sun, 1 Jul 2001 09:48:51 -0700 Date: Sun, 1 Jul 2001 09:48:51 -0700 Message-Id: <200107011648.JAA25630@bosch.cygnus.com> To: aoliva@redhat.com, chastain@cygnus.com Subject: Re: [PATCH] build failure, gcc 3.0, native hppa2.0w-hp-hpux11.00, ltconfig Cc: gcc-patches@gcc.gnu.org Okay, I checked out cvs libtool HEAD. In order to build it, I need autoconf 2.50 and automake 1.4p4 plus one patch. So I downloaded autoconf 2.50, configured it, built it, and ran "make check". "make check" failed. Argh. Now I gotta throw off an autoconf bug report too, and see if I can ignore or work around the problem, so I can build the cvs version of libtool (on two branches), so I can submit a patch to libtool, so that I can submit a patch to gcc (probably two branches as well). This feels like an initiation ritual. :) At least gnu m4 1.4 is working fine. MichaelC From gcc-patches-return-37807-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 17:50:26 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7925 invoked by alias); 1 Jul 2001 17:50:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7544 invoked from network); 1 Jul 2001 17:50:20 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 1 Jul 2001 17:50:20 -0000 Received: from lucon.org (lake.in.lucon.org [192.168.0.2]) by ocean.lucon.org (Postfix) with ESMTP id BF6E0125BA; Sun, 1 Jul 2001 10:50:18 -0700 (PDT) Received: by lucon.org (Postfix, from userid 1000) id 457A9EC23; Sun, 1 Jul 2001 10:50:18 -0700 (PDT) Date: Sun, 1 Jul 2001 10:50:17 -0700 From: "H . J . Lu" To: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701105017.A14237@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i This patch detects if there is a system shared libgcc in /lib or /usr/lib. If it detects one, the shared libgcc will be installed $(libsubdir) so that it won't override the system one by accident. I also added --release/-dumprelease since I found --version couldn't tell the different releases of the same version. It can be used to install libgcc_s.so into /lib # cp `gcc --print-file-name=libgcc_s.so.1` /lib/libgcc_s-`gcc --release`.so # ln -sf libgcc_s-`gcc --release`.so /lib/libgcc_s.so.1 so that there is always a libgcc_s.so.1 available at any time. H.J. --- 2001-07-01 H.J. Lu (hjl@gnu.org) * configure.in (slibdir): Set according to if the shared libgcc library is a system shared library. * configure: Rebuild. * gcc.c (compiler_release): New string for the compiler release. (option_map): Add --release/-dumprelease. (display_help): Add -dumprelease. (process_command): Initialize compiler_release and handle -dumprelease. --- gcc/configure.in.glibc Wed Jun 13 13:36:24 2001 +++ gcc/configure.in Sun Jul 1 10:01:13 2001 @@ -1945,14 +1945,33 @@ AC_ARG_ENABLE(version-specific-runtime-l AC_ARG_WITH(slibdir, [ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], -slibdir="$with_slibdir", +slibdir="$with_slibdir",[ if test "${enable_version_specific_runtime_libs+set}" = set; then slibdir='$(libsubdir)' elif test "$host" != "$target"; then slibdir='$(build_tooldir)/lib' else slibdir='$(libdir)' -fi) + if test "$build" = "$target"; then + # For systems where there is the shared libgcc in /lib or /usr/lib, + # we assume it is a system library come from the system vendor, we + # install our shared libgcc into $(libsubdir). We only check the + # system shared libgcc for the native build. + # FIXME: Need to check if the system shared libgcc library is + # really ok. + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then + slibdir='$(libsubdir)' + fi + else + # For the native compiler built by canadian cross build, we install + # our shared libgcc into /lib if it is used as the system compiler. + case $target in + *-linux*) + slibdir="/lib" + ;; + esac + fi +fi]) AC_SUBST(slibdir) # Nothing to do for FLOAT_H, float_format already handled. --- gcc/gcc.c.glibc Tue Jun 12 14:38:51 2001 +++ gcc/gcc.c Sun Jul 1 09:34:02 2001 @@ -157,6 +157,10 @@ static int save_temps_flag; static const char *compiler_version; +/* The compiler release. */ + +static const char *compiler_release; + /* The target version specified with -V */ static const char *spec_version = DEFAULT_TARGET_VERSION; @@ -898,6 +902,7 @@ struct option_map option_map[] = {"--user-dependencies", "-MM", 0}, {"--verbose", "-v", 0}, {"--version", "-dumpversion", 0}, + {"--release", "-dumprelease", 0}, {"--warn-", "-W", "*j"}, {"--write-dependencies", "-MD", 0}, {"--write-user-dependencies", "-MMD", 0}, @@ -2897,6 +2902,7 @@ display_help () fputs (_(" (Use '-v --help' to display command line options of sub-processes)\n"), stdout); fputs (_(" -dumpspecs Display all of the built in spec strings\n"), stdout); fputs (_(" -dumpversion Display the version of the compiler\n"), stdout); + fputs (_(" -dumprelease Display the release of the compiler\n"), stdout); fputs (_(" -dumpmachine Display the compiler's target processor\n"), stdout); fputs (_(" -print-search-dirs Display the directories in the compiler's search path\n"), stdout); fputs (_(" -print-libgcc-file-name Display the name of the compiler's companion library\n"), stdout); @@ -3022,7 +3028,7 @@ process_command (argc, argv) n_infiles = 0; added_libraries = 0; - /* Figure compiler version from version string. */ + /* Figure out compiler version from version string. */ compiler_version = temp1 = xstrdup (version_string); @@ -3035,6 +3041,27 @@ process_command (argc, argv) } } + /* Figure compiler release from version string. */ + compiler_release = temp1 = xstrdup (version_string); + + for (; *temp1; ++temp1) + { + if (ISSPACE ((unsigned char) *temp1)) + *temp1 = '-'; + else if (*temp1 == '(') + { + *temp1 = '\0'; + break; + } + } + for (--temp1; *temp1; --temp1) + { + if (*temp1 == '-') + *temp1 = '\0'; + else + break; + } + /* Set up the default search paths. If there is no GCC_EXEC_PREFIX, see if we can create it from the pathname specified in argv[0]. */ @@ -3200,6 +3227,11 @@ process_command (argc, argv) else if (! strcmp (argv[i], "-dumpversion")) { printf ("%s\n", spec_version); + exit (0); + } + else if (! strcmp (argv[i], "-dumprelease")) + { + printf ("%s\n", compiler_release); exit (0); } else if (! strcmp (argv[i], "-dumpmachine")) From gcc-patches-return-37808-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 17:58:34 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10851 invoked by alias); 1 Jul 2001 17:58:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10815 invoked from network); 1 Jul 2001 17:58:28 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 1 Jul 2001 17:58:28 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GlUD-0006vk-00; Sun, 01 Jul 2001 18:58:21 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15GlU7-0006xN-00; Sun, 01 Jul 2001 18:58:15 +0100 Date: Sun, 1 Jul 2001 18:58:13 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: "H . J . Lu" cc: Subject: Re: PATCH: Handle the shared libgcc is a system library In-Reply-To: <20010701105017.A14237@lucon.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, H . J . Lu wrote: > * configure.in (slibdir): Set according to if the shared libgcc > library is a system shared library. > * configure: Rebuild. > > * gcc.c (compiler_release): New string for the compiler > release. > (option_map): Add --release/-dumprelease. > (display_help): Add -dumprelease. > (process_command): Initialize compiler_release and handle > -dumprelease. Don't send patches without proper documentation - in this case, in invoke.texi for the -dumprelease option you're adding, and in install.texi under --slibdir where it says the default is libdir. contribute.html clearly tells you that patches without documentation aren't acceptable; they just waste everyone's time trying to reverse engineer from the code what the intended behaviour is. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37809-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:02:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11772 invoked by alias); 1 Jul 2001 18:02:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11751 invoked from network); 1 Jul 2001 18:02:12 -0000 Received: from unknown (HELO mail.kdt.de) (195.8.224.4) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:02:12 -0000 Received: from arthur.inka.de (arthur.kdt.de [195.8.250.5]) by mail.kdt.de (8.11.1/8.11.0) with ESMTP id f61I29l03035 for ; Sun, 1 Jul 2001 20:02:09 +0200 Received: from gromit.moeb ([192.168.27.3] ident=postfix) by arthur.inka.de with esmtp (Exim 3.30 #1) id 15GlXS-0004nO-00 for gcc-patches@gcc.gnu.org; Sun, 01 Jul 2001 20:01:42 +0200 Received: by gromit.moeb (Postfix, from userid 207) id B2FAE1EA44; Sun, 1 Jul 2001 20:01:41 +0200 (CEST) To: gcc-patches@gcc.gnu.org Subject: Fix warnings in ssa-dce.c From: Andreas Jaeger Date: Sun, 01 Jul 2001 20:01:41 +0200 Message-ID: Lines: 55 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii I just got on i686-linux the following warnings: /cvs/gcc/gcc/ssa-dce.c: In function `note_inherently_necessary_set': /cvs/gcc/gcc/ssa-dce.c:340: warning: unused parameter `set' /cvs/gcc/gcc/ssa-dce.c: In function `find_inherently_necessary': /cvs/gcc/gcc/ssa-dce.c:367: warning: unused variable `pattern' Ok to commit the appended patch? It passed bootstrap on i686-linux. Andreas 2001-07-01 Andreas Jaeger * ssa-dce.c (note_inherently_necessary_set): Add unused attribute. (find_inherently_necessary): Remove unused variable. ============================================================ Index: gcc/ssa-dce.c --- gcc/ssa-dce.c 2001/06/29 20:35:53 1.5 +++ gcc/ssa-dce.c 2001/07/01 13:02:23 @@ -1,5 +1,5 @@ /* Dead-code elimination pass for the GNU compiler. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Jeffrey D. Oldham . This file is part of GNU CC. @@ -333,11 +333,11 @@ /* Called via note_stores for each store in an insn. Note whether or not a particular store is inherently necessary. Store a - nonzero value in inherently_necessary_p if such a storeis found. */ + nonzero value in inherently_necessary_p if such a store is found. */ static void note_inherently_necessary_set (dest, set, data) - rtx set; + rtx set ATTRIBUTE_UNUSED; rtx dest; void *data; { @@ -364,7 +364,6 @@ find_inherently_necessary (x) rtx x; { - rtx pattern; if (x == NULL_RTX) return 0; else if (inherently_necessary_register (x)) -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj From gcc-patches-return-37810-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:02:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12042 invoked by alias); 1 Jul 2001 18:02:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11941 invoked from network); 1 Jul 2001 18:02:15 -0000 Received: from unknown (HELO mail.kdt.de) (195.8.224.4) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:02:15 -0000 Received: from arthur.inka.de (arthur.kdt.de [195.8.250.5]) by mail.kdt.de (8.11.1/8.11.0) with ESMTP id f61I2Bl03050 for ; Sun, 1 Jul 2001 20:02:11 +0200 Received: from gromit.moeb ([192.168.27.3] ident=postfix) by arthur.inka.de with esmtp (Exim 3.30 #1) id 15GlXK-0004nN-00 for gcc-patches@gcc.gnu.org; Sun, 01 Jul 2001 20:01:34 +0200 Received: by gromit.moeb (Postfix, from userid 207) id E00F81EA44; Sun, 1 Jul 2001 20:01:32 +0200 (CEST) Mail-Copies-To: never To: gcc-patches@gcc.gnu.org Subject: Fix warning in insn-recog.c From: Andreas Jaeger Date: Sun, 01 Jul 2001 20:01:32 +0200 Message-ID: Lines: 43 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Compiling for i686-linux I get: insn-recog.c: In function `split_2': insn-recog.c:47859: warning: implicit declaration of function `operands_match_p' I propose to include reload.h. Ok to commit the appended patch? It passed bootstrap on i686-linux. Andreas 2001-07-01 Andreas Jaeger * genrecog.c (write_header): Include reload.h for prototypes in insn-recog.c. ============================================================ Index: gcc/genrecog.c --- gcc/genrecog.c 2001/05/22 06:46:20 1.99 +++ gcc/genrecog.c 2001/07/01 12:52:44 @@ -1,6 +1,6 @@ /* Generate code from machine description to recognize rtl as insns. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998, - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -2378,6 +2378,7 @@ #include \"hard-reg-set.h\"\n\ #include \"resource.h\"\n\ #include \"toplev.h\"\n\ +#include \"reload.h\"\n\ \n"); puts ("\n\ -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj From gcc-patches-return-37811-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:04:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12770 invoked by alias); 1 Jul 2001 18:04:53 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12736 invoked from network); 1 Jul 2001 18:04:52 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:04:52 -0000 Received: from lucon.org (lake.in.lucon.org [192.168.0.2]) by ocean.lucon.org (Postfix) with ESMTP id B05FF125BA; Sun, 1 Jul 2001 11:04:51 -0700 (PDT) Received: by lucon.org (Postfix, from userid 1000) id 1BC4AEC27; Sun, 1 Jul 2001 11:04:50 -0700 (PDT) Date: Sun, 1 Jul 2001 11:04:50 -0700 From: "H . J . Lu" To: "Joseph S. Myers" Cc: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701110450.A20327@lucon.org> References: <20010701105017.A14237@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from jsm28@cam.ac.uk on Sun, Jul 01, 2001 at 06:58:13PM +0100 On Sun, Jul 01, 2001 at 06:58:13PM +0100, Joseph S. Myers wrote: > On Sun, 1 Jul 2001, H . J . Lu wrote: > > > * configure.in (slibdir): Set according to if the shared libgcc > > library is a system shared library. > > * configure: Rebuild. > > > > * gcc.c (compiler_release): New string for the compiler > > release. > > (option_map): Add --release/-dumprelease. > > (display_help): Add -dumprelease. > > (process_command): Initialize compiler_release and handle > > -dumprelease. > > Don't send patches without proper documentation - in this case, in > invoke.texi for the -dumprelease option you're adding, and in install.texi > under --slibdir where it says the default is libdir. contribute.html > clearly tells you that patches without documentation aren't acceptable; > they just waste everyone's time trying to reverse engineer from the code > what the intended behaviour is. I won't waste my time on documentation if my patch won't even be considered. I will add patches only if my patch itself looks acceptable. BTW, I have been applying this patch for almost 10 months. It is for FAIL: gcc.misc-tests/mg.c What happened to it? H.J. ---- 2000-09-10 Michael Chamberlain * gcc.misc-tests/mg.exp (compiler_output): Support tcl 8.3.1. Index: gcc/testsuite/gcc.misc-tests/mg.exp =================================================================== RCS file: /work/cvs/gnu/egcs/gcc/testsuite/gcc.misc-tests/mg.exp,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 mg.exp --- gcc/testsuite/gcc.misc-tests/mg.exp 2000/08/07 01:35:22 1.1.1.1 +++ gcc/testsuite/gcc.misc-tests/mg.exp 2000/09/11 00:18:50 @@ -23,5 +23,5 @@ load_lib mike-gcc.exp prebase set actions none-of-the-above -set compiler_output "mg.o ?: .*mg.c \[ \\\n\]*nonexist.h" +set compiler_output "mg.o ?: .*mg.c \[ \\\\\n\]*nonexist.h" postbase mg.c "" "" "-MM -MG" From gcc-patches-return-37812-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:07:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13325 invoked by alias); 1 Jul 2001 18:07:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13302 invoked from network); 1 Jul 2001 18:07:12 -0000 Received: from unknown (HELO monkey.daikokuya.demon.co.uk) (158.152.184.26) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:07:12 -0000 Received: from neil by monkey.daikokuya.demon.co.uk with local (Exim 3.22 #1 (Debian)) id 15GlcU-00045O-00; Sun, 01 Jul 2001 19:06:54 +0100 Date: Sun, 1 Jul 2001 19:06:53 +0100 From: Neil Booth To: Stan Shebs Cc: Zack Weinberg , gcc-patches@gcc.gnu.org Subject: Re: Objective C lexer - small cleanup Message-ID: <20010701190653.A12236@daikokuya.demon.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3B3CBC44.710F35F6@apple.com> User-Agent: Mutt/1.3.18i Stan Shebs wrote:- > > It's my understanding that macro expansion after @ is only wanted for > > string constants. Stan? > > That's right. Ah, OK. I didn't realise that; things are simpler than I thought. Yes, we should make '@' a leading character for ObjC, then. Neil. From gcc-patches-return-37813-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:17:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14822 invoked by alias); 1 Jul 2001 18:17:53 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14802 invoked from network); 1 Jul 2001 18:17:52 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:17:52 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f61Hvop01805; Sun, 1 Jul 2001 10:57:50 -0700 Date: Sun, 01 Jul 2001 10:57:49 -0700 From: Mark Mitchell To: Ziemowit Laski , "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 Message-ID: <16950000.994010269@warlock.codesourcery.com> In-Reply-To: <200106291910.MAA15591@scv3.apple.com> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Friday, June 29, 2001 12:10:22 PM -0700 Ziemowit Laski wrote: > Ok, here is a new, "leaner and meaner" version of the Pascal string patch > that I submitted on June 15. Per Zack Weinberg's suggestion, I removed > all modifications in cpplib sources, and moved \p handling to > lex_string(). Also, I've added a blurb in extend.texi describing the > usage of Pascal literals. I am not in favor on a technical basis. Too much complication for too little win. Stan often points out that there are political issues here, too, regarding Apple maintaining it's own version of GCC. However, if there is going to be an FSF mandate to incorporate Apple changes for the sake of eliminating the Apple fork, then we need to get that message from the FSF; it's not for us to judge as GCC maintainers. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37814-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:20:14 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15558 invoked by alias); 1 Jul 2001 18:20:14 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15519 invoked from network); 1 Jul 2001 18:20:11 -0000 Received: from unknown (HELO navy.csi.cam.ac.uk) (131.111.8.49) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:20:11 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by navy.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GlpD-0006tV-00; Sun, 01 Jul 2001 19:20:03 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Glp7-0007SZ-00; Sun, 01 Jul 2001 19:19:57 +0100 Date: Sun, 1 Jul 2001 19:19:55 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: "H . J . Lu" cc: Subject: Re: PATCH: Handle the shared libgcc is a system library In-Reply-To: <20010701110450.A20327@lucon.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, H . J . Lu wrote: > I won't waste my time on documentation if my patch won't even be > considered. I will add patches only if my patch itself looks > acceptable. That's the wrong order in which to do things. If you don't know whether a patch to make a user visible change will be acceptable, you should write the documentation and post the patches, so we can get a clear concept of what you intend to do - which can only be done from the documentation in the context of the manual, since that shows what it a salient feature users would be able to rely on and what is an implementation accident. If the feedback is positive, then write the testcases, then the actual code. But documentation and testcases should come before code, and you shouldn't send code without documentation, when documentation would be appropriate. Doing otherwise is just selfish, saving your time at the expense of 300 subscribers to gcc-patches (plus probably many more people reading through gateways, local expanders, the web archives, etc.). -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37815-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:26:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17664 invoked by alias); 1 Jul 2001 18:26:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17635 invoked from network); 1 Jul 2001 18:26:27 -0000 Received: from unknown (HELO monkey.daikokuya.demon.co.uk) (158.152.184.26) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:26:27 -0000 Received: from neil by monkey.daikokuya.demon.co.uk with local (Exim 3.22 #1 (Debian)) id 15GlvE-00058c-00; Sun, 01 Jul 2001 19:26:16 +0100 Date: Sun, 1 Jul 2001 19:26:16 +0100 From: Neil Booth To: Stan Shebs Cc: Zack Weinberg , gcc-patches@gcc.gnu.org Subject: Re: Objective C lexer - small cleanup Message-ID: <20010701192616.C12236@daikokuya.demon.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010701190653.A12236@daikokuya.demon.co.uk> User-Agent: Mutt/1.3.18i Neil Booth wrote:- > Stan Shebs wrote:- > > > > It's my understanding that macro expansion after @ is only wanted for > > > string constants. Stan? > > > > That's right. > > Ah, OK. I didn't realise that; things are simpler than I thought. > Yes, we should make '@' a leading character for ObjC, then. Doh. You've confused me now. My excuse is I've been away for the weekend. Neil. From gcc-patches-return-37816-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:30:25 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18563 invoked by alias); 1 Jul 2001 18:30:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18529 invoked from network); 1 Jul 2001 18:30:21 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:30:21 -0000 Received: from lucon.org (lake.in.lucon.org [192.168.0.2]) by ocean.lucon.org (Postfix) with ESMTP id D5022125BA; Sun, 1 Jul 2001 11:30:19 -0700 (PDT) Received: by lucon.org (Postfix, from userid 1000) id 2BD95EC27; Sun, 1 Jul 2001 11:30:18 -0700 (PDT) Date: Sun, 1 Jul 2001 11:30:18 -0700 From: "H . J . Lu" To: "Joseph S. Myers" Cc: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701113018.A7391@lucon.org> References: <20010701110450.A20327@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from jsm28@cam.ac.uk on Sun, Jul 01, 2001 at 07:19:55PM +0100 On Sun, Jul 01, 2001 at 07:19:55PM +0100, Joseph S. Myers wrote: > On Sun, 1 Jul 2001, H . J . Lu wrote: > > > I won't waste my time on documentation if my patch won't even be > > considered. I will add patches only if my patch itself looks > > acceptable. > > That's the wrong order in which to do things. If you don't know whether a > patch to make a user visible change will be acceptable, you should write Give me a break. We have discussed this issuse many times before. I have put enough comments in my patch. Anyone who cares about it can tell what my patch does. I keep the number of files my patch touches as small as possible on purpose, just in case that I have keep it around for months if not for years. I can add the changes to documentations when we are ready to apply my patch. H.J. From gcc-patches-return-37817-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:31:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19127 invoked by alias); 1 Jul 2001 18:31:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19107 invoked from network); 1 Jul 2001 18:31:18 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:31:18 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f61IVBH05546; Sun, 1 Jul 2001 11:31:12 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 11:31:11 -0700 From: "Zack Weinberg" Date: Sun, 1 Jul 2001 11:31:11 -0700 To: Andreas Jaeger Cc: gcc-patches@gcc.gnu.org Subject: Re: Fix warning in insn-recog.c Message-ID: <20010701113111.A18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.18i On Sun, Jul 01, 2001 at 08:01:32PM +0200, Andreas Jaeger wrote: > > Compiling for i686-linux I get: > > insn-recog.c: In function `split_2': > insn-recog.c:47859: warning: implicit declaration of function `operands_match_p' > > I propose to include reload.h. You also need to adjust the dependencies of insn-recog.o in the Makefile. zw From gcc-patches-return-37818-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:32:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19592 invoked by alias); 1 Jul 2001 18:32:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19567 invoked from network); 1 Jul 2001 18:32:08 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:32:08 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f61IW6H05569; Sun, 1 Jul 2001 11:32:06 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 11:32:06 -0700 From: "Zack Weinberg" Date: Sun, 1 Jul 2001 11:32:06 -0700 To: "H . J . Lu" Cc: gcc-patches@gcc.gnu.org Subject: misc-tests/mg.exp Message-ID: <20010701113206.B18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010701110450.A20327@lucon.org> User-Agent: Mutt/1.3.18i On Sun, Jul 01, 2001 at 11:04:50AM -0700, H . J . Lu wrote: > > BTW, I have been applying this patch for almost 10 months. It is for > > FAIL: gcc.misc-tests/mg.c > > What happened to it? Does the modified mg.exp still work with older versions of Tcl? zw From gcc-patches-return-37819-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:39:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 22828 invoked by alias); 1 Jul 2001 18:39:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22786 invoked from network); 1 Jul 2001 18:39:30 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:39:30 -0000 Received: from lucon.org (lake.in.lucon.org [192.168.0.2]) by ocean.lucon.org (Postfix) with ESMTP id 259DF125BA; Sun, 1 Jul 2001 11:39:29 -0700 (PDT) Received: by lucon.org (Postfix, from userid 1000) id DF89CEC27; Sun, 1 Jul 2001 11:39:28 -0700 (PDT) Date: Sun, 1 Jul 2001 11:39:28 -0700 From: "H . J . Lu" To: Zack Weinberg Cc: gcc-patches@gcc.gnu.org Subject: Re: misc-tests/mg.exp Message-ID: <20010701113928.A3845@lucon.org> References: <20010701110450.A20327@lucon.org> <20010701113206.B18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010701113206.B18369@stanford.edu>; from zackw@stanford.edu on Sun, Jul 01, 2001 at 11:32:06AM -0700 On Sun, Jul 01, 2001 at 11:32:06AM -0700, Zack Weinberg wrote: > On Sun, Jul 01, 2001 at 11:04:50AM -0700, H . J . Lu wrote: > > > > BTW, I have been applying this patch for almost 10 months. It is for > > > > FAIL: gcc.misc-tests/mg.c > > > > What happened to it? > > Does the modified mg.exp still work with older versions of Tcl? I no longer have the old versions of tcl. But according to http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00353.html the answer is yes. I don't believe it is that hard to verify it on a machine withe an older tcl. H.J. From gcc-patches-return-37820-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:41:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23520 invoked by alias); 1 Jul 2001 18:41:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23478 invoked from network); 1 Jul 2001 18:40:59 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:40:59 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Gm9I-0007De-00; Sun, 01 Jul 2001 19:40:48 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Gm9D-0007uF-00; Sun, 01 Jul 2001 19:40:43 +0100 Date: Sun, 1 Jul 2001 19:40:41 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: "H . J . Lu" cc: Subject: Re: PATCH: Handle the shared libgcc is a system library In-Reply-To: <20010701113018.A7391@lucon.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, H . J . Lu wrote: > Give me a break. We have discussed this issuse many times before. I > have put enough comments in my patch. Anyone who cares about it can > tell what my patch does. I keep the number of files my patch touches > as small as possible on purpose, just in case that I have keep it > around for months if not for years. I can add the changes to > documentations when we are ready to apply my patch. contribute.html clearly states the requirements for patches. If you think you should be able to submit patches without documentation then bring your proposal for changes to the requirements for patches up with the SC. Telling what your patch does is not the same thing as telling what the public interface (which users would be able to rely on, and which we'd need to maintain and preserve in future releases) would be, and what would be an implementation detail and subject to change. People are more likely to care about your patches if you make them easy to understand, and that means following the instructions. As you should see from the first sentence of them, without following the instructions a patch can't be properly evaluated: Every patch must have several pieces of information before we can properly evaluate it. * A description of the bug and how your patch fixes this bug. For new features a description of the feature and your implementation. * If the patch adds a new command line option, the patch must also add documentation for that option to the GCC manual. Similarly, if it changes the behavior of an existing command line option or other documented behavior, the patch must update the documentation. * It is strongly recommended the patch should add testcases for any new features added and any bugs fixed to the testsuite, if not already there. (You will of course have tested any new features you added, so this is simply a matter of writing your tests in a suitable form for inclusion in the testsuite.) * A ChangeLog entry as plaintext; see the various ChangeLog files for format and content. Note that, unlike some other projects, we do require ChangeLogs also for documentation (i.e., .texi files). They are not required for updates to the web pages. * A list of targets where the patch survived a bootstrap of GCC. A bootstrap on least one host is required for any non-trivial change. A full GCC testsuite run is also required. With your patch, provide a list of hosts where the GCC testsuite was run, including an analysis of any regressions. Documentation changes do not require a bootstrap, but must pass make info and make dvi. * The patch itself. If you are accessing the CVS repository at gcc.gnu.org, use "cvs update; cvs diff -c3p"; else, use "diff -c3p OLD NEW" or "diff -up OLD NEW". If your version of diff does not support these options, then get the latest version of GNU diff. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37821-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:47:49 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24776 invoked by alias); 1 Jul 2001 18:47:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24756 invoked from network); 1 Jul 2001 18:47:48 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:47:48 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f61IlgH05917; Sun, 1 Jul 2001 11:47:43 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 11:47:42 -0700 Date: Sun, 1 Jul 2001 11:47:42 -0700 From: "Zack Weinberg" To: Neil Booth Cc: Stan Shebs , gcc-patches@gcc.gnu.org Subject: Re: Objective C lexer - small cleanup Message-ID: <20010701114742.C18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010701190653.A12236@daikokuya.demon.co.uk> User-Agent: Mutt/1.3.18i I've now applied the original patch. Also, I found a place in cpplib.c where we were doing an unnecessary test for leading '@' in identifiers (which never happens, since we've decided that that doesn't work). Bootstrapped i686-linux. A word about references to the C standard: "6.10.8.4" is ambiguous. It could mean paragraph 4 of section 6.10.8, or all of section 6.10.8.4. I prefer to indicate that the last digit is a paragraph number, "6.10.8p4". The C++ standard nicely avoids this problem by giving all the sections names. -- zw Actually, we have scientifically determined that Heisenberg did indeed sleep exactly here. However, we have no idea whatsoever just how fast asleep he was. -- Dave Aronson * cpplib.c (lex_macro_node): Remove unnecessary check for leading '@' on identifier. Clarify control flow and commentary. =================================================================== Index: cpplib.c --- cpplib.c 2001/05/27 18:06:00 1.253 +++ cpplib.c 2001/07/01 18:45:01 @@ -438,14 +438,17 @@ lex_macro_node (pfile) cpp_reader *pfile; { cpp_token token; + cpp_hashnode *node; /* Lex the macro name directly. */ _cpp_lex_token (pfile, &token); /* The token immediately after #define must be an identifier. That - identifier is not allowed to be "defined". See predefined macro - names (6.10.8.4). In C++, it is not allowed to be any of the - macro names (which are keywords in C++) either. */ + identifier may not be "defined", per C99 6.10.8p4. + In C++, it may not be any of the "named operators" either, + per C++98 [lex.digraph], [lex.key]. + Finally, the identifier may not have been poisoned. (In that case + the lexer has issued the error message for us.) */ if (token.type != CPP_NAME) { @@ -454,25 +457,26 @@ lex_macro_node (pfile) pfile->directive->name); else if (token.flags & NAMED_OP) cpp_error (pfile, - "\"%s\" cannot be used as a macro name as it is an operator in C++", + "\"%s\" cannot be used as a macro name as it is an operator in C++", NODE_NAME (token.val.node)); else cpp_error (pfile, "macro names must be identifiers"); + + return 0; } - else - { - cpp_hashnode *node = token.val.node; - /* In Objective C, some keywords begin with '@', but general - identifiers do not, and you're not allowed to #define them. */ - if (node == pfile->spec_nodes.n_defined || NODE_NAME (node)[0] == '@') - cpp_error (pfile, "\"%s\" cannot be used as a macro name", - NODE_NAME (node)); - else if (!(node->flags & NODE_POISONED)) - return node; + node = token.val.node; + if (node->flags & NODE_POISONED) + return 0; + + if (node == pfile->spec_nodes.n_defined) + { + cpp_error (pfile, "\"%s\" cannot be used as a macro name", + NODE_NAME (node)); + return 0; } - return 0; + return node; } /* Process a #define directive. Most work is done in cppmacro.c. */ From gcc-patches-return-37822-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 18:56:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30444 invoked by alias); 1 Jul 2001 18:56:53 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30399 invoked from network); 1 Jul 2001 18:56:52 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 1 Jul 2001 18:56:52 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f61Iup414850; Sun, 1 Jul 2001 11:56:51 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 11:56:51 -0700 Date: Sun, 1 Jul 2001 11:56:51 -0700 From: "Zack Weinberg" To: "H . J . Lu" Cc: gcc-patches@gcc.gnu.org Subject: Re: misc-tests/mg.exp Message-ID: <20010701115651.D18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010701113928.A3845@lucon.org> User-Agent: Mutt/1.3.18i On Sun, Jul 01, 2001 at 11:39:28AM -0700, H . J . Lu wrote: > On Sun, Jul 01, 2001 at 11:32:06AM -0700, Zack Weinberg wrote: > > On Sun, Jul 01, 2001 at 11:04:50AM -0700, H . J . Lu wrote: > > > > > > BTW, I have been applying this patch for almost 10 months. It is for > > > > > > FAIL: gcc.misc-tests/mg.c > > > > > > What happened to it? > > > > Does the modified mg.exp still work with older versions of Tcl? > > I no longer have the old versions of tcl. But according to > > http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00353.html > > the answer is yes. I don't believe it is that hard to verify it on > a machine withe an older tcl. Thanks. The explanation in that message is good enough for me; I've applied the patch. -- zw But then one day I came up with a radical new paradigm for my business... I decided that from now on I would only sell boring stuff that people actually need. -- Garry Trudeau, _Doonesbury_ From gcc-patches-return-37823-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 19:33:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6806 invoked by alias); 1 Jul 2001 19:33:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6709 invoked from network); 1 Jul 2001 19:33:51 -0000 Received: from unknown (HELO nevyn.them.org) (12.44.186.158) by sourceware.cygnus.com with SMTP; 1 Jul 2001 19:33:51 -0000 Received: from drow by nevyn.them.org with local (Exim 3.22 #1 (Debian)) id 15Gmyj-0004iv-00; Sun, 01 Jul 2001 12:33:57 -0700 Date: Sun, 1 Jul 2001 12:33:57 -0700 From: Daniel Jacobowitz To: "H . J . Lu" Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701123357.A18030@nevyn.them.org> Mail-Followup-To: "H . J . Lu" , gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library References: <20010701105017.A14237@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.16i In-Reply-To: <20010701105017.A14237@lucon.org>; from hjl@lucon.org on Sun, Jul 01, 2001 at 10:50:17AM -0700 On Sun, Jul 01, 2001 at 10:50:17AM -0700, H . J . Lu wrote: > This patch detects if there is a system shared libgcc in /lib or > /usr/lib. If it detects one, the shared libgcc will be installed > $(libsubdir) so that it won't override the system one by accident. > > I also added --release/-dumprelease since I found --version couldn't > tell the different releases of the same version. It can be used to > install libgcc_s.so into /lib > > # cp `gcc --print-file-name=libgcc_s.so.1` /lib/libgcc_s-`gcc --release`.so > # ln -sf libgcc_s-`gcc --release`.so /lib/libgcc_s.so.1 > > so that there is always a libgcc_s.so.1 available at any time. Some comments.... > + if test "$build" = "$target"; then $build = $target is not the right test. I've built cross compilers where $build = $target != $host. Sure, it's perverse, but that's life, and that's supported. > + # For systems where there is the shared libgcc in /lib or /usr/lib, > + # we assume it is a system library come from the system vendor, we > + # install our shared libgcc into $(libsubdir). We only check the > + # system shared libgcc for the native build. > + # FIXME: Need to check if the system shared libgcc library is > + # really ok. > + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then > + slibdir='$(libsubdir)' > + fi First of all, I think you want to check the version with the SONAME here. Installing a libgcc_s.so.2 someday, if for some reason that should happen, shouldn't be affected. Also, the .so link is often in a development package while the .so.1 link is really a system library. Second of all, this introduces a gratuitous random behavior that I really don't like. SOMETIMES gcc will install the library in /lib? And sometimes it won't? Especially with: > + else > + # For the native compiler built by canadian cross build, we install > + # our shared libgcc into /lib if it is used as the system compiler. > + case $target in > + *-linux*) > + slibdir="/lib" > + ;; > + esac > + fi So if I do a host-x-host cross, it'll automatically go into /lib, but not otherwise? And I regularly build compilers that are not meant to be installed on the system that builds them. Existance checks in /lib on the build system are worse than useless here. There's dozens of different build systems that build from the same spec file. And even worse, if you install libgcc_s in $(libsubdir), it will be linked against but not found by the dynamic linker. That's never going to be the right solution. If you really want to do automagic configuration based on the build system, at least provide an option to cleanly ignore your magic. Something like --with-install-system-libgcc. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer From gcc-patches-return-37824-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 19:38:42 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9754 invoked by alias); 1 Jul 2001 19:38:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9723 invoked from network); 1 Jul 2001 19:38:29 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 1 Jul 2001 19:38:29 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61JbtI19859; Sun, 1 Jul 2001 21:37:56 +0200 (MET DST) Date: Sun, 1 Jul 2001 21:37:54 +0200 (CEST) From: Gerald Pfeifer To: Rainer Orth cc: Subject: Re: 3.0 PATCH: More fixes to install.texi In-Reply-To: <15146.26850.48801.822814@xayide.TechFak.Uni-Bielefeld.DE> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Fri, 15 Jun 2001, Rainer Orth wrote: > * doc/install.texi: Various spelling and markup fixes. > (Installing GCC): Component specific installation instructions are > gone. > Fix reference. > Warn about removing old install dir in the presence of shared libs. > (Configuration): Invoke with options target to match configure > --help. > Consistently refer to gas, gld pathnames. > Invert --enable-multilib documentation. > Remove references to old compiler versions. This is fine for both branches. > -If you have built GNU CC previously in the same directory for a > +If you have built GCC previously in the same directory for a If you have previously built GCC in the same... > +Note that the bootstrap compiler and the resulting GCC must be link > +compatible, else the bootstrap will fail with linker errors about > +incompatible object file formats. Several multilibbed targets are multilibed? > -you'll only get static Objective C libraries. @samp{libf2c} and > +you'll only get static Objective-C libraries. @samp{libf2c} and you will only get... Excellent proofreading and fixing work! Gerald From gcc-patches-return-37825-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 19:51:48 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17085 invoked by alias); 1 Jul 2001 19:51:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17050 invoked from network); 1 Jul 2001 19:51:46 -0000 Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38) by sourceware.cygnus.com with SMTP; 1 Jul 2001 19:51:46 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GnFn-0006mx-00; Sun, 01 Jul 2001 20:51:35 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15GnFn-0001GF-00; Sun, 01 Jul 2001 20:51:35 +0100 Date: Sun, 1 Jul 2001 20:51:27 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Gerald Pfeifer cc: Rainer Orth , Subject: Re: 3.0 PATCH: More fixes to install.texi In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Gerald Pfeifer wrote: > On Fri, 15 Jun 2001, Rainer Orth wrote: > > * doc/install.texi: Various spelling and markup fixes. > > (Installing GCC): Component specific installation instructions are > > gone. > > Fix reference. > > Warn about removing old install dir in the presence of shared libs. > > (Configuration): Invoke with options target to match configure > > --help. > > Consistently refer to gas, gld pathnames. > > Invert --enable-multilib documentation. > > Remove references to old compiler versions. > > This is fine for both branches. Note that a lot of this patch (e.g. changes GNU CC to GCC, Objective C to Objective-C) has already been covered in other patches or may conflict with them - so could you post the exact patch you end up committing to gcc-patches? -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37826-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:02:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18735 invoked by alias); 1 Jul 2001 20:02:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18691 invoked from network); 1 Jul 2001 20:02:20 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (213.122.254.54) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:02:20 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id VAA02461; Sun, 1 Jul 2001 21:01:59 +0100 Message-ID: <3B3F81B7.5727694C@codesourcery.com> Date: Sun, 01 Jul 2001 21:01:59 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org CC: mark@codesourcery.com Subject: [C++ patch]: reorganize tree inlining Content-Type: multipart/mixed; boundary="------------8DA9734EC6B3C08622A1F2F0" This is a multi-part message in MIME format. --------------8DA9734EC6B3C08622A1F2F0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, this patch reorganizes the tree based inlining by breaking out the inliner into a separate function (inline_into_function), and leaving optimize_function to call the different tree optimizer functions (of which there is only one at the moment). It also adds a new ast dump, just after inlining. This is in preparation to attacking the inliner heuristics. booted & tested on i686-pc-linux-gnu, ok? nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------8DA9734EC6B3C08622A1F2F0 Content-Type: application/octet-stream; name="optimize1.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="optimize1.patch" MjAwMS0wNy0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIG9wdGltaXplLmMgKGlubGluZV9pbnRvX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLCBi cm9rZW4gb3V0CglvZiAuLi4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IC4uLiBoZXJlLiBDYWxs IGl0LiBEb24ndCBpbmxpbmUgaWYgaXQgaXMKCWEgdGh1bmsuCgkoZHVtcF9mdW5jdGlvbik6 IFByaW50IG5hbWUgb2YgZHVtcCBmbGFnIGNhdXNpbmcgdGhpcyBkdW1wLgoJKiBzZW1hbnRp Y3MuYyAoZXhwYW5kX2JvZHkpOiBNb3ZlIHRodW5rIGlubGluZSBjaGVjayB0bwoJb3B0aW1p emVfZnVuY3Rpb24uCgoyMDAxLTA3LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rl c291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoVERJX2lubGluZWQpOiBOZXcgYXN0IGR1 bXAgcGhhc2UuCgkoZHVtcF9mbGFnX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkqIGMtZHVtcC5j IChkdW1wX2ZpbGVzKTogQWRkIGlubGluZWQgcGhhc2UuCgkoZHVtcF9mbGFnX25hbWUpOiBE ZWZpbmUuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZkdW1wLWFzdC1pbmxpbmVkKTogRG9jdW1l bnQuCgpJbmRleDogY3Avb3B0aW1pemUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L2djYy9lZ2NzL2djYy9jcC9vcHRpbWl6ZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcz CmRpZmYgLWMgLTMgLXAgLXIxLjczIG9wdGltaXplLmMKKioqIG9wdGltaXplLmMJMjAwMS8w Ni8wNSAwODowMzo0NQkxLjczCi0tLSBvcHRpbWl6ZS5jCTIwMDEvMDYvMjkgMTQ6NTg6MTcK KioqKioqKioqKioqKioqIHR5cGVkZWYgc3RydWN0IGlubGluZV9kYXRhCioqKiA3OCw4NCAq KioqCiAgICBpbnQgaW5saW5lZF9zdG10czsKICAgIC8qIFdlIHVzZSB0aGUgc2FtZSBtZWNo YW5pc20gdG8gYnVpbGQgY2xvbmVzIHRoYXQgd2UgZG8gdG8gcGVyZm9ybQogICAgICAgaW5s aW5pbmcuICBIb3dldmVyLCB0aGVyZSBhcmUgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIG5lZWQg dG8KISAgICAgIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhvc2UgdHdvIHNpdHVhdGlvbnMuICBU aGlzIGZsYWcgaXMgdHJ1ZSBuaWYKICAgICAgIHdlIGFyZSBjbG9uaW5nLCByYXRoZXIgdGhh biBpbmxpbmluZy4gICovCiAgICBib29sIGNsb25pbmdfcDsKICAgIC8qIEhhc2ggdGFibGUg dXNlZCB0byBwcmV2ZW50IHdhbGtfdHJlZSBmcm9tIHZpc2l0aW5nIHRoZSBzYW1lIG5vZGUK LS0tIDc4LDg0IC0tLS0KICAgIGludCBpbmxpbmVkX3N0bXRzOwogICAgLyogV2UgdXNlIHRo ZSBzYW1lIG1lY2hhbmlzbSB0byBidWlsZCBjbG9uZXMgdGhhdCB3ZSBkbyB0byBwZXJmb3Jt CiAgICAgICBpbmxpbmluZy4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZldyBwbGFjZXMgd2hl cmUgd2UgbmVlZCB0bwohICAgICAgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aG9zZSB0d28gc2l0 dWF0aW9ucy4gIFRoaXMgZmxhZyBpcyB0cnVlIGlmCiAgICAgICB3ZSBhcmUgY2xvbmluZywg cmF0aGVyIHRoYW4gaW5saW5pbmcuICAqLwogICAgYm9vbCBjbG9uaW5nX3A7CiAgICAvKiBI YXNoIHRhYmxlIHVzZWQgdG8gcHJldmVudCB3YWxrX3RyZWUgZnJvbSB2aXNpdGluZyB0aGUg c2FtZSBub2RlCioqKioqKioqKioqKioqKiBzdGF0aWMgaW50IGlubGluYWJsZV9mdW5jdGlv bl9wIFBBUkFNUyAoCioqKiA5OCwxMDMgKioqKgotLS0gOTgsMTA0IC0tLS0KICBzdGF0aWMg dHJlZSByZW1hcF9kZWNsIFBBUkFNUyAoKHRyZWUsIGlubGluZV9kYXRhICopKTsKICBzdGF0 aWMgdm9pZCByZW1hcF9ibG9jayBQQVJBTVMgKCh0cmVlLCB0cmVlLCBpbmxpbmVfZGF0YSAq KSk7CiAgc3RhdGljIHZvaWQgY29weV9zY29wZV9zdG10IFBBUkFNUyAoKHRyZWUgKiwgaW50 ICosIGlubGluZV9kYXRhICopKTsKKyBzdGF0aWMgdm9pZCBpbmxpbmVfaW50b19mdW5jdGlv biBQQVJBTVMgKCh0cmVlKSk7CiAgc3RhdGljIHRyZWUgY2FsbHNfc2V0am1wX3IgUEFSQU1T ICgodHJlZSAqLCBpbnQgKiwgdm9pZCAqKSk7CiAgc3RhdGljIHZvaWQgdXBkYXRlX2Nsb25l ZF9wYXJtIFBBUkFNUyAoKHRyZWUsIHRyZWUpKTsKICBzdGF0aWMgdm9pZCBkdW1wX2Z1bmN0 aW9uIFBBUkFNUyAoKGVudW0gdHJlZV9kdW1wX2luZGV4LCB0cmVlKSk7CioqKioqKioqKioq KioqKiBleHBhbmRfY2FsbHNfaW5saW5lICh0cCwgaWQpCioqKiA5MzQsOTM5ICoqKioKLS0t IDkzNSwxMDAzIC0tLS0KICAgIHdhbGtfdHJlZSAodHAsIGV4cGFuZF9jYWxsX2lubGluZSwg aWQsIGlkLT50cmVlX3BydW5lcik7CiAgfQogIAorIC8qIEV4cGFuZCBjYWxscyB0byBpbmxp bmUgZnVuY3Rpb25zLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorIGlubGluZV9pbnRvX2Z1bmN0 aW9uIChmbikKKyAgICAgIHRyZWUgZm47CisgeworICAgaW5saW5lX2RhdGEgaWQ7CisgICB0 cmVlIHByZXZfZm47CisgICBzdHJ1Y3Qgc2F2ZWRfc2NvcGUgKnM7CisgICAKKyAgIC8qIENs ZWFyIG91dCBJRC4gICovCisgICBtZW1zZXQgKCZpZCwgMCwgc2l6ZW9mIChpZCkpOworIAor ICAgLyogRG9uJ3QgYWxsb3cgcmVjdXJzaW9uIGludG8gRk4uICAqLworICAgVkFSUkFZX1RS RUVfSU5JVCAoaWQuZm5zLCAzMiwgImZucyIpOworICAgVkFSUkFZX1BVU0hfVFJFRSAoaWQu Zm5zLCBmbik7CisgICAvKiBPciBhbnkgZnVuY3Rpb25zIHRoYXQgYXJlbid0IGZpbmlzaGVk IHlldC4gICovCisgICBwcmV2X2ZuID0gTlVMTF9UUkVFOworICAgaWYgKGN1cnJlbnRfZnVu Y3Rpb25fZGVjbCkKKyAgICAgeworICAgICAgIFZBUlJBWV9QVVNIX1RSRUUgKGlkLmZucywg Y3VycmVudF9mdW5jdGlvbl9kZWNsKTsKKyAgICAgICBwcmV2X2ZuID0gY3VycmVudF9mdW5j dGlvbl9kZWNsOworICAgICB9CisgICBmb3IgKHMgPSBzY29wZV9jaGFpbjsgczsgcyA9IHMt PnByZXYpCisgICAgIGlmIChzLT5mdW5jdGlvbl9kZWNsICYmIHMtPmZ1bmN0aW9uX2RlY2wg IT0gcHJldl9mbikKKyAgICAgICB7CisgCVZBUlJBWV9QVVNIX1RSRUUgKGlkLmZucywgcy0+ ZnVuY3Rpb25fZGVjbCk7CisgCXByZXZfZm4gPSBzLT5mdW5jdGlvbl9kZWNsOworICAgICAg IH0KKyAgIAorICAgLyogQ3JlYXRlIHRoZSBzdGFjayBvZiBUQVJHRVRfRVhQUnMuICAqLwor ICAgVkFSUkFZX1RSRUVfSU5JVCAoaWQudGFyZ2V0X2V4cHJzLCAzMiwgInRhcmdldF9leHBy cyIpOworIAorICAgLyogQ3JlYXRlIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGlzIGNhbGwg d2lsbCBpbmxpbmUuICAqLworICAgVkFSUkFZX1RSRUVfSU5JVCAoaWQuaW5saW5lZF9mbnMs IDMyLCAiaW5saW5lZF9mbnMiKTsKKyAKKyAgIC8qIEtlZXAgdHJhY2sgb2YgdGhlIGxvdy13 YXRlciBtYXJrLCBpLmUuLCB0aGUgcG9pbnQgd2hlcmUgdGhlIGZpcnN0CisgICAgICByZWFs IGlubGluaW5nIGlzIHJlcHJlc2VudGVkIGluIElELkZOUy4gICovCisgICBpZC5maXJzdF9p bmxpbmVkX2ZuID0gVkFSUkFZX0FDVElWRV9TSVpFIChpZC5mbnMpOworIAorICAgLyogUmVw bGFjZSBhbGwgY2FsbHMgdG8gaW5saW5lIGZ1bmN0aW9ucyB3aXRoIHRoZSBib2RpZXMgb2Yg dGhvc2UKKyAgICAgIGZ1bmN0aW9ucy4gICovCisgICBpZC50cmVlX3BydW5lciA9IGh0YWJf Y3JlYXRlICgzNywgaHRhYl9oYXNoX3BvaW50ZXIsCisgCQkJCWh0YWJfZXFfcG9pbnRlciwg TlVMTCk7CisgICBleHBhbmRfY2FsbHNfaW5saW5lICgmREVDTF9TQVZFRF9UUkVFIChmbiks ICZpZCk7CisgCisgICAvKiBDbGVhbiB1cC4gICovCisgICBodGFiX2RlbGV0ZSAoaWQudHJl ZV9wcnVuZXIpOworICAgVkFSUkFZX0ZSRUUgKGlkLmZucyk7CisgICBWQVJSQVlfRlJFRSAo aWQudGFyZ2V0X2V4cHJzKTsKKyAgIGlmIChERUNMX0xBTkdfU1BFQ0lGSUMgKGZuKSkKKyAg ICAgeworICAgICAgIHRyZWUgaWZuID0gbWFrZV90cmVlX3ZlYyAoVkFSUkFZX0FDVElWRV9T SVpFIChpZC5pbmxpbmVkX2ZucykpOworICAgICAgIAorICAgICAgIG1lbWNweSAoJlRSRUVf VkVDX0VMVCAoaWZuLCAwKSwgJlZBUlJBWV9UUkVFIChpZC5pbmxpbmVkX2ZucywgMCksCisg CSAgICAgIFZBUlJBWV9BQ1RJVkVfU0laRSAoaWQuaW5saW5lZF9mbnMpICogc2l6ZW9mICh0 cmVlKSk7CisgICAgICAgREVDTF9JTkxJTkVEX0ZOUyAoZm4pID0gaWZuOworICAgICB9Cisg ICBWQVJSQVlfRlJFRSAoaWQuaW5saW5lZF9mbnMpOworICAgCisgICBkdW1wX2Z1bmN0aW9u IChURElfaW5saW5lZCwgZm4pOworIH0KKyAKICAvKiBPcHRpbWl6ZSB0aGUgYm9keSBvZiBG Ti4gKi8KICAKICB2b2lkCioqKioqKioqKioqKioqKiBvcHRpbWl6ZV9mdW5jdGlvbiAoZm4p CioqKiA5NTIsMTAxNiAqKioqCiAgICAgICBtdXN0IHByb3RlY3Qgb3Vyc2VsdmVzLCBqdXN0 IGFzIHdlIGRvIHdoaWxlIGJ1aWxkaW5nIHVwIHRoZSBib2R5CiAgICAgICBvZiB0aGUgZnVu Y3Rpb24uICAqLwogICAgKytmdW5jdGlvbl9kZXB0aDsKLSAKLSAgIC8qIEV4cGFuZCBjYWxs cyB0byBpbmxpbmUgZnVuY3Rpb25zLiAgKi8KLSAgIGlmIChmbGFnX2lubGluZV90cmVlcykK LSAgICAgewotICAgICAgIGlubGluZV9kYXRhIGlkOwotICAgICAgIHRyZWUgcHJldl9mbjsK LSAgICAgICBzdHJ1Y3Qgc2F2ZWRfc2NvcGUgKnM7Ci0gCi0gICAgICAgLyogQ2xlYXIgb3V0 IElELiAgKi8KLSAgICAgICBtZW1zZXQgKCZpZCwgMCwgc2l6ZW9mIChpZCkpOwotIAotICAg ICAgIC8qIERvbid0IGFsbG93IHJlY3Vyc2lvbiBpbnRvIEZOLiAgKi8KLSAgICAgICBWQVJS QVlfVFJFRV9JTklUIChpZC5mbnMsIDMyLCAiZm5zIik7Ci0gICAgICAgVkFSUkFZX1BVU0hf VFJFRSAoaWQuZm5zLCBmbik7Ci0gICAgICAgLyogT3IgYW55IGZ1bmN0aW9ucyB0aGF0IGFy ZW4ndCBmaW5pc2hlZCB5ZXQuICAqLwotICAgICAgIHByZXZfZm4gPSBOVUxMX1RSRUU7Ci0g ICAgICAgaWYgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKLSAJewotIAkgIFZBUlJBWV9QVVNI X1RSRUUgKGlkLmZucywgY3VycmVudF9mdW5jdGlvbl9kZWNsKTsKLSAJICBwcmV2X2ZuID0g Y3VycmVudF9mdW5jdGlvbl9kZWNsOwotIAl9Ci0gICAgICAgZm9yIChzID0gc2NvcGVfY2hh aW47IHM7IHMgPSBzLT5wcmV2KQotIAlpZiAocy0+ZnVuY3Rpb25fZGVjbCAmJiBzLT5mdW5j dGlvbl9kZWNsICE9IHByZXZfZm4pCi0gCSAgewotIAkgICAgVkFSUkFZX1BVU0hfVFJFRSAo aWQuZm5zLCBzLT5mdW5jdGlvbl9kZWNsKTsKLSAJICAgIHByZXZfZm4gPSBzLT5mdW5jdGlv bl9kZWNsOwotIAkgIH0KLSAKLSAgICAgICAvKiBDcmVhdGUgdGhlIHN0YWNrIG9mIFRBUkdF VF9FWFBScy4gICovCi0gICAgICAgVkFSUkFZX1RSRUVfSU5JVCAoaWQudGFyZ2V0X2V4cHJz LCAzMiwgInRhcmdldF9leHBycyIpOwotIAotICAgICAgIC8qIENyZWF0ZSB0aGUgbGlzdCBv ZiBmdW5jdGlvbnMgdGhpcyBjYWxsIHdpbGwgaW5saW5lLiAgKi8KLSAgICAgICBWQVJSQVlf VFJFRV9JTklUIChpZC5pbmxpbmVkX2ZucywgMzIsICJpbmxpbmVkX2ZucyIpOwotIAotICAg ICAgIC8qIEtlZXAgdHJhY2sgb2YgdGhlIGxvdy13YXRlciBtYXJrLCBpLmUuLCB0aGUgcG9p bnQgd2hlcmUKLSAJIHRoZSBmaXJzdCByZWFsIGlubGluaW5nIGlzIHJlcHJlc2VudGVkIGlu IElELkZOUy4gICovCi0gICAgICAgaWQuZmlyc3RfaW5saW5lZF9mbiA9IFZBUlJBWV9BQ1RJ VkVfU0laRSAoaWQuZm5zKTsKLSAKLSAgICAgICAvKiBSZXBsYWNlIGFsbCBjYWxscyB0byBp bmxpbmUgZnVuY3Rpb25zIHdpdGggdGhlIGJvZGllcyBvZiB0aG9zZQotIAkgZnVuY3Rpb25z LiAgKi8KLSAgICAgICBpZC50cmVlX3BydW5lciA9IGh0YWJfY3JlYXRlICgzNywgaHRhYl9o YXNoX3BvaW50ZXIsCi0gCQkJCSAgICBodGFiX2VxX3BvaW50ZXIsIE5VTEwpOwotICAgICAg IGV4cGFuZF9jYWxsc19pbmxpbmUgKCZERUNMX1NBVkVEX1RSRUUgKGZuKSwgJmlkKTsKLSAK LSAgICAgICAvKiBDbGVhbiB1cC4gICovCi0gICAgICAgaHRhYl9kZWxldGUgKGlkLnRyZWVf cHJ1bmVyKTsKLSAgICAgICBWQVJSQVlfRlJFRSAoaWQuZm5zKTsKLSAgICAgICBWQVJSQVlf RlJFRSAoaWQudGFyZ2V0X2V4cHJzKTsKLSAgICAgICBpZiAoREVDTF9MQU5HX1NQRUNJRklD IChmbikpCi0gCXsKLSAJICB0cmVlIGlmbiA9IG1ha2VfdHJlZV92ZWMgKFZBUlJBWV9BQ1RJ VkVfU0laRSAoaWQuaW5saW5lZF9mbnMpKTsKICAKISAJICBtZW1jcHkgKCZUUkVFX1ZFQ19F TFQgKGlmbiwgMCksICZWQVJSQVlfVFJFRSAoaWQuaW5saW5lZF9mbnMsIDApLAohIAkJICBW QVJSQVlfQUNUSVZFX1NJWkUgKGlkLmlubGluZWRfZm5zKSAqIHNpemVvZiAodHJlZSkpOwoh IAkgIERFQ0xfSU5MSU5FRF9GTlMgKGZuKSA9IGlmbjsKISAJfQohICAgICAgIFZBUlJBWV9G UkVFIChpZC5pbmxpbmVkX2Zucyk7CiEgICAgIH0KISAKICAgIC8qIFVuZG8gdGhlIGNhbGwg dG8gZ2djX3B1c2hfY29udGV4dCBhYm92ZS4gICovCiAgICAtLWZ1bmN0aW9uX2RlcHRoOwog ICAgCi0tLSAxMDE2LDEwMzAgLS0tLQogICAgICAgbXVzdCBwcm90ZWN0IG91cnNlbHZlcywg anVzdCBhcyB3ZSBkbyB3aGlsZSBidWlsZGluZyB1cCB0aGUgYm9keQogICAgICAgb2YgdGhl IGZ1bmN0aW9uLiAgKi8KICAgICsrZnVuY3Rpb25fZGVwdGg7CiAgCiEgICBpZiAoZmxhZ19p bmxpbmVfdHJlZXMKISAgICAgICAvKiBXZSBkbyBub3QgaW5saW5lIHRodW5rcywgYXMgKGEp IHRoZSBiYWNrZW5kIHRyaWVzIHRvIG9wdGltaXplCiEgICAgICAgICAgdGhlIGNhbGwgdG8g dGhlIHRodW5rZWUsIChiKSB0cmVlIGJhc2VkIGlubGluaW5nIGJyZWFrcyB0aGF0CiEgICAg ICAgICAgb3B0aW1pemF0aW9uLCAoYykgdmlydHVhbCBmdW5jdGlvbnMgYXJlIHJhcmVseSBp bmxpbmVhYmxlLAohICAgICAgICAgIGFuZCAoZCkgQVNNX09VVFBVVF9NSV9USFVOSyBpcyB0 aGVyZSB0byBEVFJUIGFueXdheS4gICovCiEgICAgICAgJiYgIURFQ0xfVEhVTktfUCAoZm4p KQohICAgICBpbmxpbmVfaW50b19mdW5jdGlvbiAoZm4pOwohICAgCiAgICAvKiBVbmRvIHRo ZSBjYWxsIHRvIGdnY19wdXNoX2NvbnRleHQgYWJvdmUuICAqLwogICAgLS1mdW5jdGlvbl9k ZXB0aDsKICAgIAoqKioqKioqKioqKioqKiogZHVtcF9mdW5jdGlvbiAocGhhc2UsIGZuKQoq KiogMTI0NiwxMjUyICoqKioKICAgICAgewogICAgICAgIGZwcmludGYgKHN0cmVhbSwgIlxu OzsgRnVuY3Rpb24gJXMiLAogIAkgICAgICAgZGVjbF9hc19zdHJpbmcgKGZuLCBURkZfREVD TF9TUEVDSUZJRVJTKSk7CiEgICAgICAgZnByaW50ZiAoc3RyZWFtLCAiICglcykiLCBkZWNs X2FzX3N0cmluZyAoREVDTF9BU1NFTUJMRVJfTkFNRSAoZm4pLCAwKSk7CiAgICAgICAgZnBy aW50ZiAoc3RyZWFtLCAiXG5cbiIpOwogICAgICAgIAogICAgICAgIGR1bXBfbm9kZSAoZm4s IFRERl9TTElNIHwgZmxhZ3MsIHN0cmVhbSk7Ci0tLSAxMjYwLDEyNjggLS0tLQogICAgICB7 CiAgICAgICAgZnByaW50ZiAoc3RyZWFtLCAiXG47OyBGdW5jdGlvbiAlcyIsCiAgCSAgICAg ICBkZWNsX2FzX3N0cmluZyAoZm4sIFRGRl9ERUNMX1NQRUNJRklFUlMpKTsKISAgICAgICBm cHJpbnRmIChzdHJlYW0sICIgKCVzKVxuIiwKISAJICAgICAgIGRlY2xfYXNfc3RyaW5nIChE RUNMX0FTU0VNQkxFUl9OQU1FIChmbiksIDApKTsKISAgICAgICBmcHJpbnRmIChzdHJlYW0s ICI7OyBlbmFibGVkIGJ5IC0lcyIsIGR1bXBfZmxhZ19uYW1lIChwaGFzZSkpOwogICAgICAg IGZwcmludGYgKHN0cmVhbSwgIlxuXG4iKTsKICAgICAgICAKICAgICAgICBkdW1wX25vZGUg KGZuLCBUREZfU0xJTSB8IGZsYWdzLCBzdHJlYW0pOwpJbmRleDogY3Avc2VtYW50aWNzLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvY3Avc2VtYW50aWNz LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjE0CmRpZmYgLWMgLTMgLXAgLXIxLjIxNCBz ZW1hbnRpY3MuYwoqKiogc2VtYW50aWNzLmMJMjAwMS8wNi8xOCAxNjoxNToxMgkxLjIxNAot LS0gc2VtYW50aWNzLmMJMjAwMS8wNi8yOSAxNDo1ODoxOAoqKioqKioqKioqKioqKiogZXhw YW5kX2JvZHkgKGZuKQoqKiogMjQwOCwyNDIwICoqKioKICAKICAgIHRpbWV2YXJfcHVzaCAo VFZfSU5URUdSQVRJT04pOwogIAohICAgLyogT3B0aW1pemUgdGhlIGJvZHkgb2YgdGhlIGZ1 bmN0aW9uIGJlZm9yZSBleHBhbmRpbmcgaXQuICBXZSBkbyBub3QKISAgICAgIG9wdGltaXpl IHRodW5rcywgYXMgKDEpIHRoZSBiYWNrZW5kIHRyaWVzIHRvIG9wdGltaXplIHRoZSBjYWxs IHRvCiEgICAgICB0aGUgdGh1bmtlZSwgKGIpIHRoZSB0cmVlIGJhc2VkIGlubGluZXIgYnJl YWtzIHRoYXQgb3B0aW1pemF0aW9uLAohICAgICAgKGMpIHZpcnR1YWwgZnVuY3Rpb25zIGFy ZSByYXJlbHkgaW5saW5lYWJsZSwgYW5kIChkKQohICAgICAgQVNNX09VVFBVVF9NSV9USFVO SyBpcyB0aGVyZSB0byBEVFJUIGFueXdheS4gICovCiEgICBpZiAoIURFQ0xfVEhVTktfUCAo Zm4pKQohICAgICBvcHRpbWl6ZV9mdW5jdGlvbiAoZm4pOwogIAogICAgdGltZXZhcl9wb3Ag KFRWX0lOVEVHUkFUSU9OKTsKICAgIHRpbWV2YXJfcHVzaCAoVFZfRVhQQU5EKTsKLS0tIDI0 MDgsMjQxNSAtLS0tCiAgCiAgICB0aW1ldmFyX3B1c2ggKFRWX0lOVEVHUkFUSU9OKTsKICAK ISAgIC8qIE9wdGltaXplIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBiZWZvcmUgZXhwYW5k aW5nIGl0LiAgKi8KISAgIG9wdGltaXplX2Z1bmN0aW9uIChmbik7CiAgCiAgICB0aW1ldmFy X3BvcCAoVFZfSU5URUdSQVRJT04pOwogICAgdGltZXZhcl9wdXNoIChUVl9FWFBBTkQpOwpJ bmRleDogYy1jb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2Nz L2djYy9jLWNvbW1vbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjc1CmRpZmYgLWMgLTMg LXAgLXIxLjc1IGMtY29tbW9uLmgKKioqIGMtY29tbW9uLmgJMjAwMS8wNi8xOCAxNjoxNTow MQkxLjc1Ci0tLSBjLWNvbW1vbi5oCTIwMDEvMDYvMjkgMTQ6NTg6MTkKKioqKioqKioqKioq KioqIGVudW0gdHJlZV9kdW1wX2luZGV4CioqKiA4MTQsODIxICoqKioKICB7CiAgICBURElf YWxsLAkJCS8qIGR1bXAgdGhlIHdob2xlIHRyYW5zbGF0aW9uIHVuaXQgKi8KICAgIFRESV9v cmlnaW5hbCwJCQkvKiBkdW1wIGVhY2ggZnVuY3Rpb24gYmVmb3JlIG9wdGltaXppbmcgaXQg Ki8KISAgIFRESV9vcHRpbWl6ZWQsCQkJLyogZHVtcCBlYWNoIGZ1bmN0aW9uIGFmdGVyIG9w dGltaXppbmcgaXQgKi8KICAgIFRESV9jbGFzcywJCQkvKiBkdW1wIGNsYXNzIGhlaXJhcmNo eSAqLwogICAgVERJX2VuZAogIH07CiAgCi0tLSA4MTQsODIzIC0tLS0KICB7CiAgICBURElf YWxsLAkJCS8qIGR1bXAgdGhlIHdob2xlIHRyYW5zbGF0aW9uIHVuaXQgKi8KICAgIFRESV9v cmlnaW5hbCwJCQkvKiBkdW1wIGVhY2ggZnVuY3Rpb24gYmVmb3JlIG9wdGltaXppbmcgaXQg Ki8KISAgIFRESV9vcHRpbWl6ZWQsCQkvKiBkdW1wIGVhY2ggZnVuY3Rpb24gYWZ0ZXIgb3B0 aW1pemluZyBpdCAqLwogICAgVERJX2NsYXNzLAkJCS8qIGR1bXAgY2xhc3MgaGVpcmFyY2h5 ICovCisgICBURElfaW5saW5lZCwJCQkvKiBkdW1wIGVhY2ggZnVuY3Rpb24gYWZ0ZXIgaW5s aW5pbmcKKyAJCQkJICAgd2l0aGluIGl0LiAqLwogICAgVERJX2VuZAogIH07CiAgCioqKioq KioqKioqKioqKiBleHRlcm4gRklMRSAqZHVtcF9iZWdpbgkJCVBBUkFNUyAoKGVudW0gCioq KiA4MzksODQ0ICoqKioKLS0tIDg0MSw4NDcgLS0tLQogIGV4dGVybiB2b2lkIGR1bXBfZW5k CQkJUEFSQU1TICgoZW51bSB0cmVlX2R1bXBfaW5kZXgsIEZJTEUgKikpOwogIGV4dGVybiB2 b2lkIGR1bXBfbm9kZQkJCVBBUkFNUyAoKHRyZWUsIGludCwgRklMRSAqKSk7CiAgZXh0ZXJu IGludCBkdW1wX3N3aXRjaF9wICAgICAgICAgICAgICAgIFBBUkFNUyAoKGNvbnN0IGNoYXIg KikpOworIGV4dGVybiBjb25zdCBjaGFyICpkdW1wX2ZsYWdfbmFtZQlQQVJBTVMgKChlbnVt IHRyZWVfZHVtcF9pbmRleCkpOwogIAogIC8qIEluZm9ybWF0aW9uIHJlY29yZGVkIGFib3V0 IGVhY2ggZmlsZSBleGFtaW5lZCBkdXJpbmcgY29tcGlsYXRpb24uICAqLwogIApJbmRleDog ZG9jL2ludm9rZS50ZXhpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3Mv Z2NjL2RvYy9pbnZva2UudGV4aSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApkaWZmIC1j IC0zIC1wIC1yMS4yNCBpbnZva2UudGV4aQoqKiogaW52b2tlLnRleGkJMjAwMS8wNi8yNyAx NTowNDoxNQkxLjI0Ci0tLSBpbnZva2UudGV4aQkyMDAxLzA2LzI5IDE0OjU4OjI0CioqKioq KioqKioqKioqKiBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgoqKiogMjM5LDI0NCAqKioq Ci0tLSAyMzksMjQ1IC0tLS0KICAtYSAgLWF4ICAtZEB2YXJ7bGV0dGVyc30gIC1kdW1wc3Bl Y3MgIC1kdW1wbWFjaGluZSAgLWR1bXB2ZXJzaW9uIEBnb2wKICAtZmR1bXAtdW5udW1iZXJl ZCAtZmR1bXAtdHJhbnNsYXRpb24tdW5pdEBye1t9LUB2YXJ7bn1AcntdfSAtZmR1bXAtY2xh c3MtaGllcmFyY2h5QHJ7W30tQHZhcntufUBye119IEBnb2wKICAtZmR1bXAtYXN0LW9yaWdp bmFsQHJ7W30tQHZhcntufUBye119IC1mZHVtcC1hc3Qtb3B0aW1pemVkQHJ7W30tQHZhcntu fUBye119IEBnb2wKKyAtZmR1bXAtYXN0LWlubGluZWRAcntbfS1AdmFye259QHJ7XX0gQGdv bAogIC1mbWVtLXJlcG9ydCAgLWZwcmV0ZW5kLWZsb2F0IEBnb2wKICAtZnByb2ZpbGUtYXJj cyAgLWZ0ZXN0LWNvdmVyYWdlICAtZnRpbWUtcmVwb3J0IEBnb2wKICAtZyAgLWdAdmFye2xl dmVsfSAgLWdjb2ZmICAtZ2R3YXJmICAtZ2R3YXJmLTEgIC1nZHdhcmYtMSsgIC1nZHdhcmYt MiBAZ29sCioqKioqKioqKioqKioqKiBUaGUgZm9sbG93aW5nIHRyZWUgZHVtcHMgYXJlIHBv c3NpYmxlOgoqKiogMzAyOSwzMDM0ICoqKioKLS0tIDMwMzAsMzAzOCAtLS0tCiAgRHVtcCBi ZWZvcmUgYW55IHRyZWUgYmFzZWQgb3B0aW1pemF0aW9uLCB0byBAZmlsZXtAdmFye2ZpbGV9 Lm9yaWdpbmFsfS4KICBAaXRlbSBvcHRpbWl6ZWQKICBEdW1wIGFmdGVyIGFsbCB0cmVlIGJh c2VkIG9wdGltaXphdGlvbiwgdG8gQGZpbGV7QHZhcntmaWxlfS5vcHRpbWl6ZWR9LgorIEBp dGVtIGlubGluZWQKKyBEdW1wIGFmdGVyIGlubGluaW5nIHdpdGhpbiB0aGUgYm9keSBvZiB0 aGUgZnVuY3Rpb24sIHRvCisgQGZpbGV7QHZhcntmaWxlfS5pbmxpbmVkfS4KICBAZW5kIHRh YmxlCiAgCiAgQGl0ZW0gLWZwcmV0ZW5kLWZsb2F0CkluZGV4OiBjLWR1bXAuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2djYy9jLWR1bXAuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS40CmRpZmYgLWMgLTMgLXAgLXIxLjQgYy1kdW1wLmMKKioqIGMtZHVt cC5jCTIwMDEvMDYvMDUgMDg6MDM6NDQJMS40Ci0tLSBjLWR1bXAuYwkyMDAxLzA3LzAxIDE5 OjQ0OjU3CioqKioqKioqKioqKioqKiBzdGF0aWMgc3RydWN0IGR1bXBfZmlsZV9pbmZvIGR1 bXBfZmlsZXNbCioqKiA4MDIsODA3ICoqKioKLS0tIDgwMiw4MDggLS0tLQogICAgeyIub3Jp Z2luYWwiLCAiZHVtcC1hc3Qtb3JpZ2luYWwiLCAwLCAwfSwKICAgIHsiLm9wdGltaXplZCIs ICJkdW1wLWFzdC1vcHRpbWl6ZWQiLCAwLCAwfSwKICAgIHsiLmNsYXNzIiwgImR1bXAtY2xh c3MtaGllcmFyY2h5IiwgMCwgMH0sCisgICB7Ii5pbmxpbmVkIiwgImR1bXAtYXN0LWlubGlu ZWQiLCAwLCAwfSwKICB9OwogIAogIC8qIEJlZ2luIGEgdHJlZSBkdW1wIGZvciBQSEFTRS4g U3RvcmVzIGFueSB1c2VyIHN1cHBsaWVkIGZsYWcgaW4KKioqKioqKioqKioqKioqIGR1bXBf YmVnaW4gKHBoYXNlLCBmbGFnX3B0cikKKioqIDgzNSw4NTAgKioqKgogIAogIC8qIFJldHVy bnMgbm9uLXplcm8gaWYgdHJlZSBkdW1wIFBIQVNFIGlzIGVuYWJsZWQuICovCiAgCiEgaW50 IGR1bXBfZW5hYmxlZF9wIChwaGFzZSkKICAgICAgIGVudW0gdHJlZV9kdW1wX2luZGV4IHBo YXNlOwogIHsKICAgIHJldHVybiBkdW1wX2ZpbGVzW3BoYXNlXS5zdGF0ZTsKICB9CiAgCiAg LyogRmluaXNoIGEgdHJlZSBkdW1wIGZvciBQSEFTRS4gU1RSRUFNIGlzIHRoZSBzdHJlYW0g Y3JlYXRlZCBieQogICAgIGR1bXBfYmVnaW4uICovCiAgCiEgdm9pZCBkdW1wX2VuZCAocGhh c2UsIHN0cmVhbSkKICAgICAgIGVudW0gdHJlZV9kdW1wX2luZGV4IHBoYXNlIEFUVFJJQlVU RV9VTlVTRUQ7CiAgICAgICBGSUxFICpzdHJlYW07CiAgewotLS0gODM2LDg2MiAtLS0tCiAg CiAgLyogUmV0dXJucyBub24temVybyBpZiB0cmVlIGR1bXAgUEhBU0UgaXMgZW5hYmxlZC4g Ki8KICAKISBpbnQKISBkdW1wX2VuYWJsZWRfcCAocGhhc2UpCiAgICAgICBlbnVtIHRyZWVf ZHVtcF9pbmRleCBwaGFzZTsKICB7CiAgICByZXR1cm4gZHVtcF9maWxlc1twaGFzZV0uc3Rh dGU7CiAgfQogIAorIC8qIFJldHVybnMgdGhlIHN3aXRjaCBuYW1lIG9mIFBIQVNFLiAqLwor IAorIGNvbnN0IGNoYXIgKgorIGR1bXBfZmxhZ19uYW1lIChwaGFzZSkKKyAgICAgIGVudW0g dHJlZV9kdW1wX2luZGV4IHBoYXNlOworIHsKKyAgIHJldHVybiBkdW1wX2ZpbGVzW3BoYXNl XS5zd3RjaDsKKyB9CisgCiAgLyogRmluaXNoIGEgdHJlZSBkdW1wIGZvciBQSEFTRS4gU1RS RUFNIGlzIHRoZSBzdHJlYW0gY3JlYXRlZCBieQogICAgIGR1bXBfYmVnaW4uICovCiAgCiEg dm9pZAohIGR1bXBfZW5kIChwaGFzZSwgc3RyZWFtKQogICAgICAgZW51bSB0cmVlX2R1bXBf aW5kZXggcGhhc2UgQVRUUklCVVRFX1VOVVNFRDsKICAgICAgIEZJTEUgKnN0cmVhbTsKICB7 CioqKioqKioqKioqKioqKiB2b2lkIGR1bXBfZW5kIChwaGFzZSwgc3RyZWFtKQoqKiogODU0 LDg2MCAqKioqCiAgLyogUGFyc2UgQVJHIGFzIGEgZHVtcCBzd2l0Y2guIFJldHVybiBub24t emVybyBpZiBpdCBpcywgYW5kIHN0b3JlIHRoZQogICAgIHJlbGV2YW50IGRldGFpbHMgaW4g dGhlIGR1bXBfZmlsZXMgYXJyYXkuICovCiAgCiEgaW50IGR1bXBfc3dpdGNoX3AgKGFyZykK ICAgICAgIGNvbnN0IGNoYXIgKmFyZzsKICB7CiAgICB1bnNpZ25lZCBpeDsKLS0tIDg2Niw4 NzMgLS0tLQogIC8qIFBhcnNlIEFSRyBhcyBhIGR1bXAgc3dpdGNoLiBSZXR1cm4gbm9uLXpl cm8gaWYgaXQgaXMsIGFuZCBzdG9yZSB0aGUKICAgICByZWxldmFudCBkZXRhaWxzIGluIHRo ZSBkdW1wX2ZpbGVzIGFycmF5LiAqLwogIAohIGludAohIGR1bXBfc3dpdGNoX3AgKGFyZykK ICAgICAgIGNvbnN0IGNoYXIgKmFyZzsKICB7CiAgICB1bnNpZ25lZCBpeDsK --------------8DA9734EC6B3C08622A1F2F0-- From gcc-patches-return-37827-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:11:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21264 invoked by alias); 1 Jul 2001 20:11:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21224 invoked from network); 1 Jul 2001 20:11:35 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (213.122.254.54) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:11:35 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id VAA02477; Sun, 1 Jul 2001 21:11:08 +0100 Message-ID: <3B3F83DC.F43ED016@codesourcery.com> Date: Sun, 01 Jul 2001 21:11:08 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: DJ Delorie CC: gcc-patches@gcc.gnu.org, aoliva@redhat.com Subject: Re: Unreviewed patch: Makefile adds duplicate system include References: <3B3C7903.60F34733@codesourcery.com> <200106291807.OAA06211@greed.delorie.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit DJ Delorie wrote: > > > here's a patch for gcc's Makefile.in which removes an extraneous > > '-isystem ./include' flag, as that's added automatically by dint of the > > '-B ./' flag. > > I would prefer not relying on -B for anything other than it's original > purpose of finding the compiler driver programs. Its other uses have > become IMHO a convoluted mess of hacks. While keeping the -isystem > may be a needless redundancy, it makes the intention of the Makefile > much clearer. So, is there a particular problem that this patch > solves, or is it just removing a redundancy? If the latter, I'd > rather not change it. my soon-to-be-installed patch which detects changing the search order of systemt directories triggers on this during a build. This is annoying, but I think harmless in this case. It'd be nice to get rid of it. invoke.texi documents that -B foo/ causes -isystem foo/include to be given to the preprocessor. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-37828-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:39:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26545 invoked by alias); 1 Jul 2001 20:39:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26497 invoked from network); 1 Jul 2001 20:39:16 -0000 Received: from unknown (HELO laptop.moene.indiv.nluug.nl) (195.109.255.217) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:39:16 -0000 Received: from local ([127.0.0.1] helo=moene.indiv.nluug.nl) by laptop.moene.indiv.nluug.nl with esmtp (Exim 3.12 #1 (Debian)) id 15GnhW-0006Yt-00; Sun, 01 Jul 2001 22:20:15 +0200 Message-ID: <3B3F85FD.5E4F97E1@moene.indiv.nluug.nl> Date: Sun, 01 Jul 2001 22:20:13 +0200 From: Toon Moene Organization: Moene Computational Physics, Maartensdijk, The Netherlands X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: "Joseph S. Myers" CC: gcc-patches@gcc.gnu.org, gcc-bugs@gcc.gnu.org Subject: Re: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bitfile sizes. References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit "Joseph S. Myers" wrote: > On Sun, 1 Jul 2001, Toon Moene wrote: > > > The following patch [attached] survived a make bootstrap / make check > > for C and Fortran on i686-pc-linux-gnu. I installed it on the trunk. > > This patch causes bootstrap to fail for me on i686-pc-linux-gnu: > > In file included from ../../../../gcc-cvs/libf2c/libI77/close.c:3: > ../../../../gcc-cvs/libf2c/libI77/fio.h:37: parse error before "off_t" > > Older versions of glibc had a bug which made declare off_t. > This bug is now fixed in recent versions; you need to include a suitable > header to declare off_t, such as . OK. I fixed this by including in fio.h. Bootstrapped and checked (C and Fortran only) on i686-pc-linux-gnu. Thanks for testing. -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction) From gcc-patches-return-37829-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:40:21 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28069 invoked by alias); 1 Jul 2001 20:40:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27868 invoked from network); 1 Jul 2001 20:40:17 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:40:17 -0000 Received: from lucon.org (lake.in.lucon.org [192.168.0.2]) by ocean.lucon.org (Postfix) with ESMTP id CD601125BA; Sun, 1 Jul 2001 13:40:16 -0700 (PDT) Received: by lucon.org (Postfix, from userid 1000) id 3CA3EEC29; Sun, 1 Jul 2001 13:40:16 -0700 (PDT) Date: Sun, 1 Jul 2001 13:40:16 -0700 From: "H . J . Lu" To: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701134015.B10426@lucon.org> References: <20010701105017.A14237@lucon.org> <20010701123357.A18030@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010701123357.A18030@nevyn.them.org>; from dmj+@andrew.cmu.edu on Sun, Jul 01, 2001 at 12:33:57PM -0700 On Sun, Jul 01, 2001 at 12:33:57PM -0700, Daniel Jacobowitz wrote: > Some comments.... > > > + if test "$build" = "$target"; then > > $build = $target is not the right test. I've built cross compilers > where $build = $target != $host. Sure, it's perverse, but that's life, > and that's supported. A few lines above, there is elif test "$host" != "$target"; then slibdir='$(build_tooldir)/lib' else slibdir='$(libdir)' if test "$build" = "$target"; then At this point, $host = $target. When $build = $target != $host, you are building a cross compiler, slibdir is set to $(build_tooldir)/lib. > > > + # For systems where there is the shared libgcc in /lib or /usr/lib, > > + # we assume it is a system library come from the system vendor, we > > + # install our shared libgcc into $(libsubdir). We only check the > > + # system shared libgcc for the native build. > > + # FIXME: Need to check if the system shared libgcc library is > > + # really ok. > > + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then > > + slibdir='$(libsubdir)' > > + fi > > First of all, I think you want to check the version with the SONAME > here. Installing a libgcc_s.so.2 someday, if for some reason that > should happen, shouldn't be affected. Also, the .so link is often in a SONAME only exists in ELF. the gcc developers have promised that libgcc_s.so.1 will be here to stay. If there is a libgcc_s.so.2, we may have a bigger problem than where libgcc_s.so.2 should be installed. > > > + else > > + # For the native compiler built by canadian cross build, we install > > + # our shared libgcc into /lib if it is used as the system compiler. > > + case $target in > > + *-linux*) > > + slibdir="/lib" > > + ;; > > + esac > > + fi > > So if I do a host-x-host cross, it'll automatically go into /lib, but > not otherwise? It won't automatically go anywhere. I don't think many people will do # make install for a canadian cross build. The possible usage is # make install prefix=/var/tmp/gcc # rm -f /var/tmp/gcc/lib/libgcc_s.so # ln -s ../../lib/libgcc_s.so.1 /var/tmp/gcc/usr/lib/libgcc_s.so In any case, you have to do some packaging than # make install for a canadian cross build. > > And I regularly build compilers that are not meant to be installed on > the system that builds them. Existance checks in /lib on the build > system are worse than useless here. There's dozens of different build > systems that build from the same spec file. Well, it can be called cross build. It is handled differently. > > And even worse, if you install libgcc_s in $(libsubdir), it will be > linked against but not found by the dynamic linker. That's never going > to be the right solution. > Why? It only gets installed in $(libsubdir) if there is a system shared libgcc. > > If you really want to do automagic configuration based on the build > system, at least provide an option to cleanly ignore your magic. > Something like --with-install-system-libgcc. I am not sure if gcc is ever designed for such a thing. When you do # ./configure # make bootstrap # make install it assumes $build = $host = $target. If you want to do those 3 steps on different machines, It may not work right since ./configure may detect somethings which don't exist or aren't true on other machines. You are better off with cross compile. H.J. From gcc-patches-return-37830-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:44:49 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29941 invoked by alias); 1 Jul 2001 20:44:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29920 invoked from network); 1 Jul 2001 20:44:49 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:44:49 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f61KOmp24181; Sun, 1 Jul 2001 13:24:48 -0700 Date: Sun, 01 Jul 2001 13:24:45 -0700 From: Mark Mitchell To: Nathan Sidwell , "gcc-patches@gcc.gnu.org" Subject: Re: [C++ patch]: reorganize tree inlining Message-ID: <6760000.994019085@warlock.codesourcery.com> In-Reply-To: <3B3F81B7.5727694C@codesourcery.com> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Sunday, July 01, 2001 09:01:59 PM +0100 Nathan Sidwell wrote: > Hi, > this patch reorganizes the tree based inlining by breaking out the > inliner into a separate function (inline_into_function) That function needs to document its parameter, and it wasn't obvious to me what it did at first. How about expand_inline_calls, perhaps? Ok, with those changes. Thanks, -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37831-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:51:17 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2765 invoked by alias); 1 Jul 2001 20:51:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2640 invoked from network); 1 Jul 2001 20:51:13 -0000 Received: from unknown (HELO gandalf.codesourcery.com) (66.60.148.227) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:51:13 -0000 Received: from localhost (IDENT:mitchell@localhost [127.0.0.1]) by gandalf.codesourcery.com (8.9.3/8.9.3) with ESMTP id NAA01957 for ; Sun, 1 Jul 2001 13:51:31 -0700 To: gcc-patches@gcc.gnu.org Subject: PATCH: Fix PR2938 X-Mailer: Mew version 1.94b25 on Emacs 20.7 / Mule 4.0 (HANANOEN) X-URL: http://www.codesourcery.com Organization: CodeSourcery, LLC From: Mark Mitchell Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20010701135131U.mitchell@codesourcery.com> Date: Sun, 01 Jul 2001 13:51:31 -0700 X-Dispatcher: imput version 990425(IM115) Lines: 71 I tried to fix this problem before the GCC 3.0 release, but failed. Here is the real fix, with a nice small test-case. Bootstrapped and tested on i686-pc-linux-gnu. Applied to branch and mainline. Thanks, -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com 2001-07-01 Mark Mitchell * expr.c (expand_expr, case ARRAY_REF): Correct check for side-effects in the value of an array element. Index: expr.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/expr.c,v retrieving revision 1.295.2.18 diff -c -p -r1.295.2.18 expr.c *** expr.c 2001/06/27 12:13:40 1.295.2.18 --- expr.c 2001/07/01 20:41:33 *************** expand_expr (exp, target, tmode, modifie *** 6766,6772 **** elem = TREE_CHAIN (elem)) ; ! if (elem && !TREE_SIDE_EFFECTS (elem)) return expand_expr (fold (TREE_VALUE (elem)), target, tmode, ro_modifier); } --- 6766,6772 ---- elem = TREE_CHAIN (elem)) ; ! if (elem && !TREE_SIDE_EFFECTS (TREE_VALUE (elem))) return expand_expr (fold (TREE_VALUE (elem)), target, tmode, ro_modifier); } Index: testsuite/g++.old-deja/g++.other/array5.C =================================================================== RCS file: array5.C diff -N array5.C *** /dev/null Tue May 5 13:32:27 1998 --- array5.C Sun Jul 1 13:41:36 2001 *************** *** 0 **** --- 1,20 ---- + // Special g++ Options: -O1 + + int count = 0; + + double foo () { + count++; + return 0; + }; + + double bar () { + const double x[1] = { foo() }; + return x[0]; + }; + + int main () + { + bar(); + if (count != 1) + return 1; + }; From gcc-patches-return-37832-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 20:58:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4937 invoked by alias); 1 Jul 2001 20:58:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4903 invoked from network); 1 Jul 2001 20:58:04 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 1 Jul 2001 20:58:04 -0000 Received: from greed.delorie.com (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id NAA19114; Sun, 1 Jul 2001 13:58:03 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.9.3/8.9.3) id QAA21156; Sun, 1 Jul 2001 16:58:02 -0400 Date: Sun, 1 Jul 2001 16:58:02 -0400 Message-Id: <200107012058.QAA21156@greed.delorie.com> From: DJ Delorie To: nathan@codesourcery.com CC: gcc-patches@gcc.gnu.org, aoliva@redhat.com In-reply-to: <3B3F83DC.F43ED016@codesourcery.com> (message from Nathan Sidwell on Sun, 01 Jul 2001 21:11:08 +0100) Subject: Re: Unreviewed patch: Makefile adds duplicate system include References: <3B3C7903.60F34733@codesourcery.com> <200106291807.OAA06211@greed.delorie.com> <3B3F83DC.F43ED016@codesourcery.com> > invoke.texi documents that -B foo/ causes -isystem foo/include to be > given to the preprocessor. I didn't say it was undocumented. I said it was a mess. Not the documentation, but the way -B is used for many things. From gcc-patches-return-37833-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 21:10:34 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10334 invoked by alias); 1 Jul 2001 21:10:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10221 invoked from network); 1 Jul 2001 21:10:28 -0000 Received: from unknown (HELO nevyn.them.org) (12.44.186.158) by sourceware.cygnus.com with SMTP; 1 Jul 2001 21:10:28 -0000 Received: from drow by nevyn.them.org with local (Exim 3.22 #1 (Debian)) id 15GoUD-0005XO-00; Sun, 01 Jul 2001 14:10:33 -0700 Date: Sun, 1 Jul 2001 14:10:33 -0700 From: Daniel Jacobowitz To: "H . J . Lu" Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701141033.A21140@nevyn.them.org> Mail-Followup-To: "H . J . Lu" , gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library References: <20010701105017.A14237@lucon.org> <20010701123357.A18030@nevyn.them.org> <20010701134015.B10426@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.16i In-Reply-To: <20010701134015.B10426@lucon.org>; from hjl@lucon.org on Sun, Jul 01, 2001 at 01:40:16PM -0700 On Sun, Jul 01, 2001 at 01:40:16PM -0700, H . J . Lu wrote: > On Sun, Jul 01, 2001 at 12:33:57PM -0700, Daniel Jacobowitz wrote: > > Some comments.... > > > > > + if test "$build" = "$target"; then > > > > $build = $target is not the right test. I've built cross compilers > > where $build = $target != $host. Sure, it's perverse, but that's life, > > and that's supported. > > A few lines above, there is > > elif test "$host" != "$target"; then > slibdir='$(build_tooldir)/lib' > else > slibdir='$(libdir)' > if test "$build" = "$target"; then > > At this point, $host = $target. When $build = $target != $host, you > are building a cross compiler, slibdir is set to $(build_tooldir)/lib. Sorry. That's what I get for not looking at the surrounding hundred lines of context. > > > + # For systems where there is the shared libgcc in /lib or /usr/lib, > > > + # we assume it is a system library come from the system vendor, we > > > + # install our shared libgcc into $(libsubdir). We only check the > > > + # system shared libgcc for the native build. > > > + # FIXME: Need to check if the system shared libgcc library is > > > + # really ok. > > > + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then > > > + slibdir='$(libsubdir)' > > > + fi > > > > First of all, I think you want to check the version with the SONAME > > here. Installing a libgcc_s.so.2 someday, if for some reason that > > should happen, shouldn't be affected. Also, the .so link is often in a > > SONAME only exists in ELF. the gcc developers have promised that > libgcc_s.so.1 will be here to stay. If there is a libgcc_s.so.2, > we may have a bigger problem than where libgcc_s.so.2 should be > installed. Read the rest of the paragraph. The .so link may not be installed, even if the system libgcc is. > > > + else > > > + # For the native compiler built by canadian cross build, we install > > > + # our shared libgcc into /lib if it is used as the system compiler. > > > + case $target in > > > + *-linux*) > > > + slibdir="/lib" > > > + ;; > > > + esac > > > + fi > > > > So if I do a host-x-host cross, it'll automatically go into /lib, but > > not otherwise? > > It won't automatically go anywhere. I don't think many people will do > > # make install > > for a canadian cross build. The possible usage is > > # make install prefix=/var/tmp/gcc > # rm -f /var/tmp/gcc/lib/libgcc_s.so > # ln -s ../../lib/libgcc_s.so.1 /var/tmp/gcc/usr/lib/libgcc_s.so > > In any case, you have to do some packaging than > > # make install > > for a canadian cross build. Certainly. But it should be the same packaging that you have to do for a native build on the $host=$target system, whenever possible. > > And even worse, if you install libgcc_s in $(libsubdir), it will be > > linked against but not found by the dynamic linker. That's never going > > to be the right solution. > > > > Why? It only gets installed in $(libsubdir) if there is a system > shared libgcc. If you're going to take this stance, why install it at all? The one in $(libsubdir) will be found at link time but not at run time, which is bad news. If you want the system copy to be found at run time, find it at link time also. > > If you really want to do automagic configuration based on the build > > system, at least provide an option to cleanly ignore your magic. > > Something like --with-install-system-libgcc. > > I am not sure if gcc is ever designed for such a thing. When you do > > # ./configure > # make bootstrap > # make install > > it assumes $build = $host = $target. If you want to do those 3 steps on > different machines, It may not work right since ./configure may detect > somethings which don't exist or aren't true on other machines. You are > better off with cross compile. Huh? Of course. I specify host and target quite explicitly. Sometimes, I build native ($host=$target) compilers for our embedded x86 platforms on an x68 Debian host. I don't want it picking up anything about the build machine, and while it's a losing fight I'm keeping up the effort. It's especially challenging because programs built by the "cross compiler" will run on the build system, and keeping autoconf in the right frame of mind is hard enough. But $build != $host. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer From gcc-patches-return-37834-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 21:20:41 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13302 invoked by alias); 1 Jul 2001 21:20:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13191 invoked from network); 1 Jul 2001 21:20:33 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (213.1.95.31) by sourceware.cygnus.com with SMTP; 1 Jul 2001 21:20:33 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id WAA02582; Sun, 1 Jul 2001 22:19:53 +0100 Message-ID: <3B3F93F8.FC5B7E7E@codesourcery.com> Date: Sun, 01 Jul 2001 22:19:52 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: "Joseph S. Myers" CC: gcc-patches , zackw , mark Subject: Re: system include directories References: Content-Type: multipart/mixed; boundary="------------D9E697E2597926C10EBC2BC0" This is a multi-part message in MIME format. --------------D9E697E2597926C10EBC2BC0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit "Joseph S. Myers" wrote: > > On Wed, 9 May 2001, Nathan Sidwell wrote: > > > + const char *non = other->sysp ? "" : "non-"; > > > + _(" as it is aliased to %ssystem directory \"%s\""), > > This "%ssystem" usage won't work properly with i18n. As a minimum you > would need to use _ around the "non-" string, but better to use two > separate strings with "system" and "non-system". > > The documentation in gcc.texi under "Use of @samp{-I/usr/include} may > cause trouble." needs updating. I'd suggest not telling people how to > specify include directories manually, but rather telling them "don't do > that" and saying that GCC will warn if you try. Is this patch what you had in mind? nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------D9E697E2597926C10EBC2BC0 Content-Type: application/octet-stream; name="include-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="include-2.patch" MjAwMS0wNy0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIGNwcGluaXQuYyAocmVtb3ZlX2R1cF9kaXJzKTogSW5mb3JtIGlmIGEgc3lzdGVtIGlu Y2x1ZGUKICAgICAgICBkaXJlY3RvcnkgaXMgYmVpbmcgcmVvcmRlcmVkLgoJKiBkb2MvaW52 b2tlLnRleGkgKERpcmVjdG9yeSBPcHRpb25zKTogR0NDIHdhcm5zIGlmIHlvdSBoaWRlIGEK CXN5c3RlbSBpbmNsdWRlLgoJKiBkb2MvZ2NjLnRleGkgKEludGVyb3BlcmF0aW9uKTogUmVt b3ZlIGluZm9ybWF0aW9uIGFib3V0CgktSS91c3IvaW5jbHVkZS4KCkluZGV4OiBjcHBpbml0 LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvY3BwaW5pdC5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2MApkaWZmIC1jIC0zIC1wIC1yMS4xNjAgY3Bw aW5pdC5jCioqKiBjcHBpbml0LmMJMjAwMS8wNi8wOSAyMjo1NTo0OAkxLjE2MAotLS0gY3Bw aW5pdC5jCTIwMDEvMDcvMDEgMjE6MDM6MDcKKioqKioqKioqKioqKioqIGFwcGVuZF9pbmNs dWRlX2NoYWluIChwZmlsZSwgZGlyLCBwYXRoLCAKKioqIDI2NCwyNjkgKioqKgotLS0gMjY0 LDI3MCAtLS0tCiAgLyogSGFuZGxlIGEgZHVwbGljYXRlZCBpbmNsdWRlIHBhdGguICBQUkVW IGlzIHRoZSBsaW5rIGluIHRoZSBjaGFpbgogICAgIGJlZm9yZSB0aGUgZHVwbGljYXRlLiAg VGhlIGR1cGxpY2F0ZSBpcyByZW1vdmVkIGZyb20gdGhlIGNoYWluIGFuZAogICAgIGZyZWVk LiAgUmV0dXJucyBQUkVWLiAgKi8KKyAKICBzdHJ1Y3Qgc2VhcmNoX3BhdGggKgogIHJlbW92 ZV9kdXBfZGlyIChwZmlsZSwgcHJldikKICAgICAgIGNwcF9yZWFkZXIgKnBmaWxlOwoqKioq KioqKioqKioqKiogcmVtb3ZlX2R1cF9kaXIgKHBmaWxlLCBwcmV2KQoqKiogMjg1LDI5MCAq KioqCi0tLSAyODYsMjkyIC0tLS0KICAgICBjaGFpbiwgb3IgTlVMTCBpZiB0aGUgY2hhaW4g aXMgZW1wdHkuICBUaGlzIGFsZ29yaXRobSBpcyBxdWFkcmF0aWMKICAgICBpbiB0aGUgbnVt YmVyIG9mIC1JIHN3aXRjaGVzLCB3aGljaCBpcyBhY2NlcHRhYmxlIHNpbmNlIHRoZXJlCiAg ICAgYXJlbid0IHVzdWFsbHkgdGhhdCBtYW55IG9mIHRoZW0uICAqLworIAogIHN0cnVjdCBz ZWFyY2hfcGF0aCAqCiAgcmVtb3ZlX2R1cF9kaXJzIChwZmlsZSwgaGVhZCkKICAgICAgIGNw cF9yZWFkZXIgKnBmaWxlOwoqKioqKioqKioqKioqKiogcmVtb3ZlX2R1cF9kaXJzIChwZmls ZSwgaGVhZCkKKioqIDI5NywzMDIgKioqKgotLS0gMjk5LDMyMSAtLS0tCiAgICAgICAgZm9y IChvdGhlciA9IGhlYWQ7IG90aGVyICE9IGN1cjsgb3RoZXIgPSBvdGhlci0+bmV4dCkKICAg ICAgICAgIGlmIChJTk9fVF9FUSAoY3VyLT5pbm8sIG90aGVyLT5pbm8pICYmIGN1ci0+ZGV2 ID09IG90aGVyLT5kZXYpCiAgCSAgeworIAkgICAgaWYgKGN1ci0+c3lzcCkKKyAJICAgICAg eworIAkJY29uc3QgY2hhciAqbm9uID0gb3RoZXItPnN5c3AgPyAiIiA6ICJub24tIjsKKyAJ CQorIAkJY3BwX3dhcm5pbmcgKHBmaWxlLAorIAkJCSAgICAgXygiY2hhbmdpbmcgc2VhcmNo IG9yZGVyIGZvciBzeXN0ZW0gZGlyZWN0b3J5IFwiJXNcIiIpLAorIAkJCSAgICAgY3VyLT5u YW1lKTsKKyAJCWlmIChzdHJjbXAgKGN1ci0+bmFtZSwgb3RoZXItPm5hbWUpKQorIAkJICBj cHBfd2FybmluZyAocGZpbGUsIG90aGVyLT5zeXNwCisgCQkJICAgICAgID8gXygiICBhcyBp dCBpcyBhbGlhc2VkIHRvIHN5c3RlbSBkaXJlY3RvcnkgXCIlc1wiIikKKyAJCQkgICAgICAg OiBfKCIgIGFzIGl0IGlzIGFsaWFzZWQgdG8gbm9uLXN5c3RlbSBkaXJlY3RvcnkgXCIlc1wi IiksCisgCQkJICAgICAgIG90aGVyLT5uYW1lKTsKKyAJCWVsc2UKKyAJCSAgY3BwX3dhcm5p bmcgKHBmaWxlLCBvdGhlci0+c3lzcAorIAkJCSAgICAgICA/IF8oIiAgYXMgaXQgaGFzIGFs cmVhZHkgYmVlbiBzcGVjaWZpZWQgYXMgYSBzeXN0ZW0gZGlyZWN0b3J5IikKKyAJCQkgICAg ICAgOiBfKCIgIGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3BlY2lmaWVkIGFzIGEgbm9uLXN5 c3RlbSBkaXJlY3RvcnkiKSk7CisgCSAgICAgIH0KICAJICAgIGN1ciA9IHJlbW92ZV9kdXBf ZGlyIChwZmlsZSwgcHJldik7CiAgCSAgICBicmVhazsKICAJICB9CioqKioqKioqKioqKioq KiBtZXJnZV9pbmNsdWRlX2NoYWlucyAocGZpbGUpCioqKiAzNzAsMzc1ICoqKioKLS0tIDM4 OSwzOTUgLS0tLQogIAogIC8qIFNldHMgaW50ZXJuYWwgZmxhZ3MgY29ycmVjdGx5IGZvciBh IGdpdmVuIGxhbmd1YWdlLCBhbmQgZGVmaW5lcwogICAgIG1hY3JvcyBpZiBuZWNlc3Nhcnku ICAqLworIAogIHN0YXRpYyB2b2lkCiAgc2V0X2xhbmcgKHBmaWxlLCBsYW5nKQogICAgICAg Y3BwX3JlYWRlciAqcGZpbGU7CkluZGV4OiBkb2MvaW52b2tlLnRleGkKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvZG9jL2ludm9rZS50ZXhpLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjI2CmRpZmYgLWMgLTMgLXAgLXIxLjI2IGludm9rZS50ZXhpCioq KiBpbnZva2UudGV4aQkyMDAxLzA2LzMwIDA4OjQ2OjMxCTEuMjYKLS0tIGludm9rZS50ZXhp CTIwMDEvMDcvMDEgMjE6MDU6MjUKKioqKioqKioqKioqKioqIHRoZSBkaXJlY3RvcmllcyB5 b3UgaGF2ZSBzcGVjaWZpZWQgd2l0aCAKKioqIDM4NjcsMzg3NCAqKioqCiAgY3VycmVudCBk aXJlY3RvcnksIGlmIGFwcHJvcHJpYXRlKSBhcmUgc2VhcmNoZWQuICBAeHJlZntEaXJlY3Rv cnkKICBPcHRpb25zfSwgZm9yIGluZm9ybWF0aW9uIG9uIEBvcHRpb257LUl9LgogIAohIEJ5 IHVzaW5nIGJvdGggQG9wdGlvbnstbm9zdGRpbmN9IGFuZCBAb3B0aW9uey1JLX0sIHlvdSBj YW4gbGltaXQgdGhlIGluY2x1ZGUtZmlsZQohIHNlYXJjaCBwYXRoIHRvIG9ubHkgdGhvc2Ug ZGlyZWN0b3JpZXMgeW91IHNwZWNpZnkgZXhwbGljaXRseS4KICAKICBAaXRlbSAtcmVtYXAK ICBAb3BpbmRleCByZW1hcAotLS0gMzg2NywzODc0IC0tLS0KICBjdXJyZW50IGRpcmVjdG9y eSwgaWYgYXBwcm9wcmlhdGUpIGFyZSBzZWFyY2hlZC4gIEB4cmVme0RpcmVjdG9yeQogIE9w dGlvbnN9LCBmb3IgaW5mb3JtYXRpb24gb24gQG9wdGlvbnstSX0uCiAgCiEgQnkgdXNpbmcg Ym90aCBAb3B0aW9uey1ub3N0ZGluY30gYW5kIEBvcHRpb257LUktfSwgeW91IGNhbiBsaW1p dCB0aGUKISBpbmNsdWRlLWZpbGUgc2VhcmNoIHBhdGggdG8gb25seSB0aG9zZSBkaXJlY3Rv cmllcyB5b3Ugc3BlY2lmeSBleHBsaWNpdGx5LgogIAogIEBpdGVtIC1yZW1hcAogIEBvcGlu ZGV4IHJlbWFwCioqKioqKioqKioqKioqKiBub3QgdXNlIHRoaXMgb3B0aW9uIHRvIGFkZCBk aXJlY3RvcmllcyB0CioqKiA0MzUxLDQzNTYgKioqKgotLS0gNDM1MSw0MzYwIC0tLS0KICBz eXN0ZW0gaGVhZGVyIGZpbGVzICh1c2UgQG9wdGlvbnstaXN5c3RlbX0gZm9yIHRoYXQpLiAg SWYgeW91IHVzZSBtb3JlIHRoYW4KICBvbmUgQG9wdGlvbnstSX0gb3B0aW9uLCB0aGUgZGly ZWN0b3JpZXMgYXJlIHNjYW5uZWQgaW4gbGVmdC10by1yaWdodAogIG9yZGVyOyB0aGUgc3Rh bmRhcmQgc3lzdGVtIGRpcmVjdG9yaWVzIGNvbWUgYWZ0ZXIuCisgCisgR0NDIHdpbGwgZGV0 ZWN0IGFuZCB3YXJuIHlvdSwgaWYgYSBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkIHdpdGggYm90 aCB0aGUKKyBAb3B0aW9uey1JfSBhbmQgYWxzbyBpcyBhIHN5c3RlbSBzZWFyY2ggZGlyZWN0 b3J5IChlaXRoZXIgYnkgZGVmYXVsdCwgb3IKKyB3aXRoIEBvcHRpb257LWlzeXN0ZW19KS4K ICAKICBAaXRlbSAtSS0KICBAb3BpbmRleCBJLQpJbmRleDogZG9jL2djYy50ZXhpCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2RvYy9nY2MudGV4aSx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4yMwpkaWZmIC1jIC0zIC1wIC1yMS4yMyBnY2MudGV4aQoq KiogZ2NjLnRleGkJMjAwMS8wNi8yOSAyMjowNDo0MAkxLjIzCi0tLSBnY2MudGV4aQkyMDAx LzA3LzAxIDIxOjA3OjE4CioqKioqKioqKioqKioqKiBPbiBzb21lIEJTRCBzeXN0ZW1zLCBp bmNsdWRpbmcgc29tZSB2ZXJzCioqKiA2NzAsNzAyICoqKioKICBjYXVzZXMgc3RhdGljIHZh cmlhYmxlIGRlc3RydWN0b3JzIChjdXJyZW50bHkgdXNlZCBvbmx5IGluIEMrKykgbm90IHRv CiAgYmUgcnVuLgogIAotIEBpdGVtCi0gVXNlIG9mIEBvcHRpb257LUkvdXNyL2luY2x1ZGV9 IG1heSBjYXVzZSB0cm91YmxlLgotIAotIE1hbnkgc3lzdGVtcyBjb21lIHdpdGggaGVhZGVy IGZpbGVzIHRoYXQgd29uJ3Qgd29yayB3aXRoIEdDQyB1bmxlc3MKLSBjb3JyZWN0ZWQgYnkg QGNvZGV7Zml4aW5jbHVkZXN9LiAgVGhlIGNvcnJlY3RlZCBoZWFkZXIgZmlsZXMgZ28gaW4g YSBuZXcKLSBkaXJlY3Rvcnk7IEdDQyBzZWFyY2hlcyB0aGlzIGRpcmVjdG9yeSBiZWZvcmUg QGZpbGV7L3Vzci9pbmNsdWRlfS4KLSBJZiB5b3UgdXNlIEBvcHRpb257LUkvdXNyL2luY2x1 ZGV9LCB0aGlzIHRlbGxzIEdDQyB0byBzZWFyY2gKLSBAZmlsZXsvdXNyL2luY2x1ZGV9IGVh cmxpZXIgb24sIGJlZm9yZSB0aGUgY29ycmVjdGVkIGhlYWRlcnMuICBUaGUKLSByZXN1bHQg aXMgdGhhdCB5b3UgZ2V0IHRoZSB1bmNvcnJlY3RlZCBoZWFkZXIgZmlsZXMuCi0gCi0gSW5z dGVhZCwgeW91IHNob3VsZCB1c2UgdGhlc2Ugb3B0aW9ucyAod2hlbiBjb21waWxpbmcgQyBw cm9ncmFtcyk6Ci0gCi0gQHNtYWxsZXhhbXBsZQotIC1JL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9AdmFye3RhcmdldH0vQHZhcnt2ZXJzaW9ufS9pbmNsdWRlIC1JL3Vzci9pbmNsdWRlCi0g QGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBGb3IgQysrIHByb2dyYW1zLCBHQ0MgYWxzbyB1c2Vz IGEgc3BlY2lhbCBkaXJlY3RvcnkgdGhhdCBkZWZpbmVzIEMrKwotIGludGVyZmFjZXMgdG8g c3RhbmRhcmQgQyBzdWJyb3V0aW5lcy4gIFRoaXMgZGlyZWN0b3J5IGlzIG1lYW50IHRvIGJl Ci0gc2VhcmNoZWQgQGVtcGh7YmVmb3JlfSBvdGhlciBzdGFuZGFyZCBpbmNsdWRlIGRpcmVj dG9yaWVzLCBzbyB0aGF0IGl0Ci0gdGFrZXMgcHJlY2VkZW5jZS4gIElmIHlvdSBhcmUgY29t cGlsaW5nIEMrKyBwcm9ncmFtcyBhbmQgc3BlY2lmeWluZwotIGluY2x1ZGUgZGlyZWN0b3Jp ZXMgZXhwbGljaXRseSwgdXNlIHRoaXMgb3B0aW9uIGZpcnN0LCB0aGVuIHRoZSB0d28KLSBv cHRpb25zIGFib3ZlOgotIAotIEBleGFtcGxlCi0gLUkvdXNyL2xvY2FsL2xpYi9nKystaW5j bHVkZQotIEBlbmQgZXhhbXBsZQotIAogIEBpZ25vcmUKICBAY2luZGV4IEBjb2Rle3Zmb3Jr fSwgZm9yIHRoZSBTdW4tNAogIEBpdGVtCi0tLSA2NzAsNjc1IC0tLS0K --------------D9E697E2597926C10EBC2BC0-- From gcc-patches-return-37835-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 21:41:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19436 invoked by alias); 1 Jul 2001 21:41:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19387 invoked from network); 1 Jul 2001 21:40:55 -0000 Received: from unknown (HELO navy.csi.cam.ac.uk) (131.111.8.49) by sourceware.cygnus.com with SMTP; 1 Jul 2001 21:40:55 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by navy.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15GoxY-0000IM-00; Sun, 01 Jul 2001 22:40:52 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15GoxY-0003cd-00; Sun, 01 Jul 2001 22:40:52 +0100 Date: Sun, 1 Jul 2001 22:40:49 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Nathan Sidwell cc: gcc-patches , zackw Subject: Re: system include directories In-Reply-To: <3B3F93F8.FC5B7E7E@codesourcery.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Nathan Sidwell wrote: > > This "%ssystem" usage won't work properly with i18n. As a minimum you > > would need to use _ around the "non-" string, but better to use two > > separate strings with "system" and "non-system". > > > > The documentation in gcc.texi under "Use of @samp{-I/usr/include} may > > cause trouble." needs updating. I'd suggest not telling people how to > > specify include directories manually, but rather telling them "don't do > > that" and saying that GCC will warn if you try. > Is this patch what you had in mind? It seems better, but * You still have the variable "non", apparently no longer used. * The patch says "with both the @option{-I} ..."; this should be "with both the @option{-I} option ...". -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37836-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 21:45:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20799 invoked by alias); 1 Jul 2001 21:45:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20779 invoked from network); 1 Jul 2001 21:45:10 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 1 Jul 2001 21:45:10 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f61Lj1H10080; Sun, 1 Jul 2001 14:45:01 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 14:45:01 -0700 Date: Sun, 1 Jul 2001 14:45:01 -0700 From: "Zack Weinberg" To: Nathan Sidwell Cc: "Joseph S. Myers" , gcc-patches , mark Subject: Re: system include directories Message-ID: <20010701144501.G18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3B3F93F8.FC5B7E7E@codesourcery.com> User-Agent: Mutt/1.3.18i On Sun, Jul 01, 2001 at 10:19:52PM +0100, Nathan Sidwell wrote: > "Joseph S. Myers" wrote: > > > > This "%ssystem" usage won't work properly with i18n. As a minimum you > > would need to use _ around the "non-" string, but better to use two > > separate strings with "system" and "non-system". > > > > The documentation in gcc.texi under "Use of @samp{-I/usr/include} may > > cause trouble." needs updating. I'd suggest not telling people how to > > specify include directories manually, but rather telling them "don't do > > that" and saying that GCC will warn if you try. > Is this patch what you had in mind? We're making progress, but I still have some concerns:- > for (other = head; other != cur; other = other->next) > if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev) > { > + if (cur->sysp) > + { > + const char *non = other->sysp ? "" : "non-"; Unused variable left in... > + > + cpp_warning (pfile, > + _("changing search order for system directory \"%s\""), Don't need _() here. In fact, you shouldn't need any of them, I think gettext has the brains to extract the other strings despite their being inside a ?: expression. Take them all out, regenerate gcc.pot, and see if any of the strings are missing. > + cur->name); > + if (strcmp (cur->name, other->name)) > + cpp_warning (pfile, other->sysp > + ? _(" as it is aliased to system directory \"%s\"") > + : _(" as it is aliased to non-system directory \"%s\""), I-the-naive-user don't know what "aliased" means in this context. "as it is the same as" is probably better. > *************** merge_include_chains (pfile) > *** 370,375 **** > --- 389,395 ---- > > /* Sets internal flags correctly for a given language, and defines > macros if necessary. */ > + > static void > set_lang (pfile, lang) > cpp_reader *pfile; Gratuitous delta here. > *************** not use this option to add directories t > *** 4351,4356 **** > --- 4351,4360 ---- > system header files (use @option{-isystem} for that). If you use more than > one @option{-I} option, the directories are scanned in left-to-right > order; the standard system directories come after. > + > + GCC will detect and warn you, if a directory is specified with both the > + @option{-I} and also is a system search directory (either by default, or > + with @option{-isystem}). This wants a fair bit more explanation. If a standard system include directory, or a directory specified with @option{-isystem}, is also specified with @option{-I}, it will be searched only in the position requested by @option{-I}. Also, it will not be considered a system include directory. If that directory really does contain system headers, there is a good chance that they will break. For instance, if GCC's installation procedure edited the headers in @file{/usr/include} to fix bugs, @samp{-I/usr/include} will cause the original, buggy headers to be found instead of the corrected ones. GCC 3.0.1 and later will issue a warning when this happens. [change that to 3.1 if this is judged not necessary for the branch] You should also discuss this in cpp.texi. zw From gcc-patches-return-37837-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 22:10:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26366 invoked by alias); 1 Jul 2001 22:10:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26331 invoked from network); 1 Jul 2001 22:09:58 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (213.1.95.31) by sourceware.cygnus.com with SMTP; 1 Jul 2001 22:09:58 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id XAA02626; Sun, 1 Jul 2001 23:09:27 +0100 Message-ID: <3B3F9F96.DBDED962@codesourcery.com> Date: Sun, 01 Jul 2001 23:09:26 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: DJ Delorie CC: gcc-patches@gcc.gnu.org, aoliva@redhat.com Subject: Re: Unreviewed patch: Makefile adds duplicate system include References: <3B3C7903.60F34733@codesourcery.com> <200106291807.OAA06211@greed.delorie.com> <3B3F83DC.F43ED016@codesourcery.com> <200107012058.QAA21156@greed.delorie.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit DJ Delorie wrote: > > > invoke.texi documents that -B foo/ causes -isystem foo/include to be > > given to the preprocessor. > > I didn't say it was undocumented. I said it was a mess. Not the > documentation, but the way -B is used for many things. I'm not disagreeing. My point about the docs is that if it's doc'd it's much harder to change. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-37838-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 23:20:57 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9075 invoked by alias); 1 Jul 2001 23:20:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9038 invoked from network); 1 Jul 2001 23:20:54 -0000 Received: from unknown (HELO thief.cygnus.com) (205.180.231.32) by sourceware.cygnus.com with SMTP; 1 Jul 2001 23:20:54 -0000 Received: (from geoffk@localhost) by thief.cygnus.com (8.11.0/8.11.0) id f61NKsc01414; Sun, 1 Jul 2001 16:20:54 -0700 Date: Sun, 1 Jul 2001 16:20:54 -0700 From: Geoffrey Keating Message-Id: <200107012320.f61NKsc01414@thief.cygnus.com> To: gcc-patches@gcc.gnu.org Subject: FUNCTION_ARG documentation improvement Reply-To: geoffk@redhat.com This patch improves the FUNCTION_ARG macro's documentation by mentioning that it is also called to produce an operand for the call and call_value patterns. (I discovered this while making a new port. It took me a little while to work out why my call instructions had a USE of an argument-passing register...) Checked with 'make info' on x86 linux. -- Geoff Keating ===File ~/patches/gcc-functionargdoc.patch================== 2001-07-01 Geoffrey Keating * doc/tm.texi (FUNCTION_ARG): Document that the last call is special. Index: doc/tm.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/tm.texi,v retrieving revision 1.19 diff -p -u -p -r1.19 tm.texi --- tm.texi 2001/06/29 17:21:16 1.19 +++ tm.texi 2001/07/01 23:18:49 @@ -3215,6 +3215,10 @@ As a special exception the first @code{e RTX may have a first operand of zero. This indicates that the entire argument is also stored on the stack. +The last time this macro is called, it is called with @code{MODE == +VOIDmode}, and its result is passed to the @code{call} or @code{call_value} +pattern as operands 2 and 3 respectively. + @cindex @file{stdarg.h} and register arguments The usual way to make the ISO library @file{stdarg.h} work on a machine where some arguments are usually passed in registers, is to cause ============================================================ From gcc-patches-return-37839-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 23:26:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10479 invoked by alias); 1 Jul 2001 23:26:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10395 invoked from network); 1 Jul 2001 23:25:55 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 1 Jul 2001 23:25:55 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA11054; Sun, 1 Jul 01 19:30:06 EDT Date: Sun, 1 Jul 01 19:30:06 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107012330.AA11054@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Fix to EH bug caused by packed union issue It turns out that it was nowhere near as general as believed. About the *only* case where it mattered was that union. The key was that the handling of the "mode" attribute was incorrect in that it was always calling layout_decl, but that should not be called for a FIELD_DECL, which it was here. I think my code isn't quite doing what I wanted it to, and if it were, it would indeed cause incompatibilities with existing ABIs, but that part of my change is minor and now harmless, so I'll worry about fixing it later. Sun Jul 1 11:53:52 2001 Richard Kenner * c-common.c (decl_attributes, case A_MODE): Don't call layout_decl for FIELD_DECL. *** c-common.c 2001/06/22 19:18:56 1.238 --- c-common.c 2001/07/01 22:43:47 *************** decl_attributes (node, attributes, prefi *** 971,975 **** TREE_TYPE (decl) = type = typefm; DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = 0; ! layout_decl (decl, 0); } } --- 974,979 ---- TREE_TYPE (decl) = type = typefm; DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = 0; ! if (TREE_CODE (decl) != FIELD_DECL) ! layout_decl (decl, 0); } } From gcc-patches-return-37840-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 23:53:56 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19119 invoked by alias); 1 Jul 2001 23:53:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19080 invoked from network); 1 Jul 2001 23:53:52 -0000 Received: from unknown (HELO lilac.csi.cam.ac.uk) (131.111.8.44) by sourceware.cygnus.com with SMTP; 1 Jul 2001 23:53:52 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by lilac.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Gqyc-0002h1-00; Mon, 02 Jul 2001 00:50:06 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Gqyb-0006J3-00; Mon, 02 Jul 2001 00:50:05 +0100 Date: Mon, 2 Jul 2001 00:50:03 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Richard Kenner cc: Subject: Re: Fix to EH bug caused by packed union issue In-Reply-To: <10107012330.AA11054@vlsi1.ultra.nyu.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Richard Kenner wrote: > I think my code isn't quite doing what I wanted it to, and if it were, it > would indeed cause incompatibilities with existing ABIs, but that part of my > change is minor and now harmless, so I'll worry about fixing it later. > > Sun Jul 1 11:53:52 2001 Richard Kenner > > * c-common.c (decl_attributes, case A_MODE): Don't call layout_decl > for FIELD_DECL. Do you have a testcase for the bug this fixes? If so, could you add it to the testsuite? -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37841-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 00:01:35 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20437 invoked by alias); 2 Jul 2001 00:01:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20403 invoked from network); 2 Jul 2001 00:01:32 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 00:01:32 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA11131; Sun, 1 Jul 01 20:05:42 EDT Date: Sun, 1 Jul 01 20:05:42 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107020005.AA11131@vlsi1.ultra.nyu.edu> To: jsm28@cam.ac.uk Subject: Re: Fix to EH bug caused by packed union issue Cc: gcc-patches@gcc.gnu.org Do you have a testcase for the bug this fixes? If so, could you add it to the testsuite? It fixes numerous testcase failures on many machines, from what I understood about the original problem. I don't have one myself. From gcc-patches-return-37842-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 00:35:38 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28577 invoked by alias); 2 Jul 2001 00:35:38 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28542 invoked from network); 2 Jul 2001 00:35:35 -0000 Received: from unknown (HELO amsmta02-svc.chello.nl) (213.46.240.7) by sourceware.cygnus.com with SMTP; 2 Jul 2001 00:35:35 -0000 Received: from delius.kettenis.local ([213.46.72.245]) by amsmta02-svc.chello.nl (InterMail vK.4.03.02.00 201-232-124 license dd4a379df8e387594186908c65258374) with ESMTP id <20010702003512.BTKI10337.amsmta02-svc@delius.kettenis.local> for ; Mon, 2 Jul 2001 02:35:12 +0200 Received: (from kettenis@localhost) by delius.kettenis.local (8.10.1/8.10.1) id f620ZXo20661; Mon, 2 Jul 2001 02:35:33 +0200 Date: Mon, 2 Jul 2001 02:35:33 +0200 From: Mark Kettenis Message-Id: <200107020035.f620ZXo20661@delius.kettenis.local> To: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Handle the shared libgcc is a system library From: "H . J . Lu" Date: Sun, 1 Jul 2001 10:50:17 -0700 2001-07-01 H.J. Lu (hjl@gnu.org) * configure.in (slibdir): Set according to if the shared libgcc library is a system shared library. * configure: Rebuild. * gcc.c (compiler_release): New string for the compiler release. (option_map): Add --release/-dumprelease. (display_help): Add -dumprelease. (process_command): Initialize compiler_release and handle -dumprelease. I think I raised objections to an earlier incarnation of this patch before. The first part introduces some dark magic to choose where the shared libgcc is installed based on whether such a beast has already been installed or not. Daniel Jacobowitz already raised some objections to it, and frankly I fail to grasp why this stuff should be necessary. HJ says the second bit is necessary because: "--version couldn't tell the different releases of the same version". That of course, is only an issue when you're using snapshots, and installing a snapshot as your system compiler seems a bad idea to me anyway. Mark From gcc-patches-return-37843-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 01:15:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11229 invoked by alias); 2 Jul 2001 01:15:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11116 invoked from network); 2 Jul 2001 01:15:28 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 2 Jul 2001 01:15:28 -0000 Received: by ocean.lucon.org (Postfix, from userid 1000) id C85A8125BA; Sun, 1 Jul 2001 18:15:27 -0700 (PDT) Date: Sun, 1 Jul 2001 18:15:27 -0700 From: "H . J . Lu" To: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010701181527.E12277@lucon.org> References: <20010701105017.A14237@lucon.org> <20010701123357.A18030@nevyn.them.org> <20010701134015.B10426@lucon.org> <20010701141033.A21140@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010701141033.A21140@nevyn.them.org>; from dmj+@andrew.cmu.edu on Sun, Jul 01, 2001 at 02:10:33PM -0700 On Sun, Jul 01, 2001 at 02:10:33PM -0700, Daniel Jacobowitz wrote: > > SONAME only exists in ELF. the gcc developers have promised that > > libgcc_s.so.1 will be here to stay. If there is a libgcc_s.so.2, > > we may have a bigger problem than where libgcc_s.so.2 should be > > installed. > > Read the rest of the paragraph. The .so link may not be installed, > even if the system libgcc is. That is a good point. I think it should check libgcc_s.so.1, not libgcc_s.so. > > > > In any case, you have to do some packaging than > > > > # make install > > > > for a canadian cross build. > > Certainly. But it should be the same packaging that you have to do for > a native build on the $host=$target system, whenever possible. It is not always easy to do. I think /lib is an ok one for Linux. > > > > And even worse, if you install libgcc_s in $(libsubdir), it will be > > > linked against but not found by the dynamic linker. That's never going > > > to be the right solution. > > > > > > > Why? It only gets installed in $(libsubdir) if there is a system > > shared libgcc. > > If you're going to take this stance, why install it at all? The one in > $(libsubdir) will be found at link time but not at run time, which is > bad news. If you want the system copy to be found at run time, find it > at link time also. I don't think it is a bad news. It happens all the time with cross compiling. Also I have no idea what your libc.so.6 in glibc 2.2 looks like when I send you my binary compiled against my glibc 2.2. For all I know, you can have a link-time libc.so with all the functions of the empty bodies. Neither the static linker nor the dynamic linker will care. > > I am not sure if gcc is ever designed for such a thing. When you do > > > > # ./configure > > # make bootstrap > > # make install > > > > it assumes $build = $host = $target. If you want to do those 3 steps on > > different machines, It may not work right since ./configure may detect > > somethings which don't exist or aren't true on other machines. You are > > better off with cross compile. > > Huh? Of course. I specify host and target quite explicitly. It doesn't matter. The many features are detected by running programss on the build machine. > Sometimes, I build native ($host=$target) compilers for our embedded > x86 platforms on an x68 Debian host. I don't want it picking up > anything about the build machine, and while it's a losing fight I'm > keeping up the effort. It's especially challenging because programs > built by the "cross compiler" will run on the build system, and keeping > autoconf in the right frame of mind is hard enough. But $build != > $host. You must have done something different. I have no problems with cross compile, including weird ones like you described. On the other hand, it was me who wrote those cross compile stuff in gcc. I guess I know what I am doing :-). H.J. From gcc-patches-return-37844-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 02:48:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7158 invoked by alias); 2 Jul 2001 02:48:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6884 invoked from network); 2 Jul 2001 02:48:17 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 2 Jul 2001 02:48:17 -0000 Received: from murlibobo.cs.mu.OZ.AU (murlibobo.cs.mu.OZ.AU [128.250.29.17]) by mumnunah.cs.mu.OZ.AU with ESMTP id MAA10819; Mon, 2 Jul 2001 12:48:03 +1000 (EST) Received: (from fjh@localhost) by murlibobo.cs.mu.OZ.AU (8.8.5/8.7.3) id MAA22473; Mon, 2 Jul 2001 12:48:03 +1000 (EST) Date: Mon, 2 Jul 2001 12:48:03 +1000 From: Fergus Henderson To: Nathan Sidwell Cc: gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining Message-ID: <20010702124801.A11282@murlibobo.cs.mu.OZ.AU> References: <3B3F81B7.5727694C@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.95.1i In-Reply-To: <3B3F81B7.5727694C@codesourcery.com>; from Nathan Sidwell on Sun, Jul 01, 2001 at 09:01:59PM +0100 > 2001-07-01 Nathan Sidwell ... > --- invoke.texi 2001/06/29 14:58:24 > *************** in the following sections. > *** 239,244 **** > --- 239,245 ---- > -a -ax -d@var{letters} -dumpspecs -dumpmachine -dumpversion @gol > -fdump-unnumbered -fdump-translation-unit@r{[}-@var{n}@r{]} -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol > -fdump-ast-original@r{[}-@var{n}@r{]} -fdump-ast-optimized@r{[}-@var{n}@r{]} @gol > + -fdump-ast-inlined@r{[}-@var{n}@r{]} @gol > -fmem-report -fpretend-float @gol > -fprofile-arcs -ftest-coverage -ftime-report @gol > -g -g@var{level} -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2 @gol > *************** The following tree dumps are possible: > *** 3029,3034 **** > --- 3030,3038 ---- > Dump before any tree based optimization, to @file{@var{file}.original}. > @item optimized > Dump after all tree based optimization, to @file{@var{file}.optimized}. > + @item inlined > + Dump after inlining within the body of the function, to > + @file{@var{file}.inlined}. > @end table I think it would be nicer to put the documentation of `inlined' before the documentation for `optimized', i.e. to list the different stages in cronological order. It would also be nice to include stage numbers in the dump file names, e.g. @var{file}.01-original @var{file}.02-inlined @var{file}.03-optimized or maybe @var{file}.tree.01-original @var{file}.tree.02-inlined @var{file}.tree.03-optimized though perhaps that should be a separate change. Also it would be nice to document what optimizations are included in the `optimized' tree but not in the `inlined' tree. > Index: c-dump.c > =================================================================== > RCS file: /cvs/gcc/egcs/gcc/c-dump.c,v > retrieving revision 1.4 > diff -c -3 -p -r1.4 c-dump.c > *** c-dump.c 2001/06/05 08:03:44 1.4 > --- c-dump.c 2001/07/01 19:44:57 > *************** static struct dump_file_info dump_files[ > *** 802,807 **** > --- 802,808 ---- > {".original", "dump-ast-original", 0, 0}, > {".optimized", "dump-ast-optimized", 0, 0}, > {".class", "dump-class-hierarchy", 0, 0}, > + {".inlined", "dump-ast-inlined", 0, 0}, > }; Here too I'd prefer chronological order, although it's much less important here. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-37845-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 03:41:03 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13023 invoked by alias); 2 Jul 2001 03:41:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12991 invoked from network); 2 Jul 2001 03:40:59 -0000 Received: from unknown (HELO mail-out2.apple.com) (17.254.0.51) by sourceware.cygnus.com with SMTP; 2 Jul 2001 03:40:59 -0000 Received: from apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out2.apple.com (8.9.3/8.9.3) with ESMTP id UAA25775 for ; Sun, 1 Jul 2001 20:40:59 -0700 (PDT) Received: from scv2.apple.com (scv2.apple.com) by apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Sun, 1 Jul 2001 20:40:58 -0700 Received: from [198.144.204.33] (vpn-gh-40.apple.com [17.254.136.39]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id f623euw19227 for ; Sun, 1 Jul 2001 20:40:56 -0700 (PDT) Mime-Version: 1.0 X-Sender: ira@mail.apple.com Message-Id: Date: Sun, 1 Jul 2001 20:40:44 -0700 To: gcc-patches@gcc.gnu.org From: Ira Ruben Subject: PATCH: Fix incorrect comments for TEMPLATE_DECL Content-Type: text/plain; charset="us-ascii" The comments referring to DECL_RESULT for a TEMPLATE_DECL in cp/dp-tree.def should actually refer to DECL_TEMPLATE_RESULT. DECL_RESULT cannot be correct since that will fail for anything other than a FUNCTION_DECL. DECL_TEMPLATE_RESULT appears to be what was actually intended (e.g., see code for redeclaration_error_message() in cp/decl.c). This patch corrects the comments: 2001-07-01 Ira Ruben Fix incorrect comment referring to DECL_RESULT. * cp-tree.def (TEMPLATE_DECL) : DECL_RESELT should be DECL_TEMPLATE_RESULT. Index: cp-tree.def =================================================================== RCS file: /cvs/gcc/gcc/gcc/cp/cp-tree.def,v retrieving revision 1.58 diff -c -3 -p -r1.58 cp-tree.def *** cp-tree.def 2001/05/21 15:39:19 1.58 --- cp-tree.def 2001/07/02 03:25:37 *************** DEFTREECODE (EMPTY_CLASS_EXPR, "empty_cl *** 84,93 **** only done for functions so far For class template: DECL_INITIAL associated templates (methods &c) ! DECL_RESULT null For non-class templates: TREE_TYPE type of object to be constructed ! DECL_RESULT decl for object to be created (e.g., FUNCTION_DECL with tmpl parms used) */ DEFTREECODE (TEMPLATE_DECL, "template_decl", 'd', 0) --- 84,93 ---- only done for functions so far For class template: DECL_INITIAL associated templates (methods &c) ! DECL_TEMPLATE_RESULT null For non-class templates: TREE_TYPE type of object to be constructed ! DECL_TEMPLATE_RESULT decl for object to be created (e.g., FUNCTION_DECL with tmpl parms used) */ DEFTREECODE (TEMPLATE_DECL, "template_decl", 'd', 0) From gcc-patches-return-37846-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 06:05:17 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18723 invoked by alias); 2 Jul 2001 06:05:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18690 invoked from network); 2 Jul 2001 06:05:15 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 06:05:15 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f625i7p24418; Sun, 1 Jul 2001 22:44:07 -0700 Date: Sun, 01 Jul 2001 22:44:06 -0700 From: Mark Mitchell To: Gerald Pfeifer , Neil Booth cc: Zack Weinberg , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <321140000.994052646@warlock.codesourcery.com> In-Reply-To: X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Sunday, July 01, 2001 03:04:05 PM +0200 Gerald Pfeifer wrote: > On Sat, 16 Jun 2001, Neil Booth wrote: >> Should we keep regenerating the man pages on mainline, or do we only >> do that for a release? > > My feeling is that, if we have a generated file in our CVS repository, > it should be up-to-date all of the time. I agree. Also, I think that we should make this statement false by making the antecedent false for virtuall all files. I could even see getting rid of `configure' (shoot me, so there), but definitely the man pages. Kill 'em. Patch pre-approved. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37847-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 06:18:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24382 invoked by alias); 2 Jul 2001 06:18:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24310 invoked from network); 2 Jul 2001 06:18:09 -0000 Received: from unknown (HELO monkey.daikokuya.demon.co.uk) (158.152.184.26) by sourceware.cygnus.com with SMTP; 2 Jul 2001 06:18:09 -0000 Received: from neil by monkey.daikokuya.demon.co.uk with local (Exim 3.22 #1 (Debian)) id 15Gx1s-0006NV-00; Mon, 02 Jul 2001 07:17:52 +0100 Date: Mon, 2 Jul 2001 07:17:50 +0100 To: "H . J . Lu" Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010702071749.C23509@daikokuya.demon.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010701181527.E12277@lucon.org> User-Agent: Mutt/1.3.18i From: Neil Booth H . J . Lu wrote:- > On the other hand, it was me who wrote those cross compile stuff in > gcc. I guess I know what I am doing :-). In that case, would you be so kind as to fully document it for those of lesser knowledge like myself? Neil. From gcc-patches-return-37848-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 06:40:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1584 invoked by alias); 2 Jul 2001 06:40:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1551 invoked from network); 2 Jul 2001 06:40:00 -0000 Received: from unknown (HELO Cantor.suse.de) (213.95.15.193) by sourceware.cygnus.com with SMTP; 2 Jul 2001 06:40:00 -0000 Received: from Hermes.suse.de (Hermes.suse.de [213.95.15.136]) by Cantor.suse.de (Postfix) with ESMTP id 16BEB1E220; Mon, 2 Jul 2001 08:40:00 +0200 (MEST) X-Authentication-Warning: gee.suse.de: aj set sender to aj@suse.de using -f Mail-Copies-To: never To: "Zack Weinberg" Cc: gcc-patches@gcc.gnu.org Subject: Re: Fix warning in insn-recog.c References: <20010701113111.A18369@stanford.edu> From: Andreas Jaeger Date: Mon, 02 Jul 2001 08:39:58 +0200 In-Reply-To: <20010701113111.A18369@stanford.edu> ("Zack Weinberg"'s message of "Sun, 1 Jul 2001 11:31:11 -0700") Message-ID: Lines: 66 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.1 (Cuyahoga Valley) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii "Zack Weinberg" writes: > On Sun, Jul 01, 2001 at 08:01:32PM +0200, Andreas Jaeger wrote: >> >> Compiling for i686-linux I get: >> >> insn-recog.c: In function `split_2': >> insn-recog.c:47859: warning: implicit declaration of function `operands_match_p' >> >> I propose to include reload.h. > > You also need to adjust the dependencies of insn-recog.o in the > Makefile. Thanks for reminding me. Here's a complete patch. Ok to commit? Andreas 2001-07-02 Andreas Jaeger * Makefile.in (insn-recog.o): Add dependency on reload.h. * genrecog.c (write_header): Include reload.h for prototypes in insn-recog.c. ============================================================ Index: gcc/genrecog.c --- gcc/genrecog.c 2001/05/22 06:46:20 1.99 +++ gcc/genrecog.c 2001/07/01 12:52:44 @@ -1,6 +1,6 @@ /* Generate code from machine description to recognize rtl as insns. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998, - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -2378,6 +2378,7 @@ #include \"hard-reg-set.h\"\n\ #include \"resource.h\"\n\ #include \"toplev.h\"\n\ +#include \"reload.h\"\n\ \n"); puts ("\n\ ============================================================ Index: gcc/Makefile.in --- gcc/Makefile.in 2001/06/30 17:23:52 1.685 +++ gcc/Makefile.in 2001/07/02 06:39:51 @@ -1619,7 +1619,7 @@ insn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h $(RECOG_H) \ real.h output.h flags.h $(SYSTEM_H) function.h hard-reg-set.h resource.h \ - $(TM_P_H) toplev.h + $(TM_P_H) toplev.h reload.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-recog.c insn-recog.c: s-recog ; @true -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj From gcc-patches-return-37849-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 06:47:34 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4364 invoked by alias); 2 Jul 2001 06:47:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4317 invoked from network); 2 Jul 2001 06:47:33 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 06:47:33 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f626l4403167; Sun, 1 Jul 2001 23:47:04 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Sun, 1 Jul 2001 23:47:04 -0700 Date: Sun, 1 Jul 2001 23:47:04 -0700 From: "Zack Weinberg" To: Mark Mitchell Cc: Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <20010701234704.A24974@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <321140000.994052646@warlock.codesourcery.com> User-Agent: Mutt/1.3.18i > > My feeling is that, if we have a generated file in our CVS repository, > > it should be up-to-date all of the time. > > I agree. Also, I think that we should make this statement false > by making the antecedent false for virtuall all files. I could > even see getting rid of `configure' (shoot me, so there), but > definitely the man pages. Kill 'em. Patch pre-approved. Then they need to be generated into the snapshots. I can do that, except I've never been clear on how the snapshots are made, can someone enlighten me? -- zw I am a believer in free will. If my dog chooses to hate the whole human race except myself, it must be free to do so. -- Diana Wynne Jones, _Castle in the Air_ From gcc-patches-return-37850-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 07:01:41 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11326 invoked by alias); 2 Jul 2001 07:01:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11302 invoked from network); 2 Jul 2001 07:01:37 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 07:01:37 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f626f8p24485; Sun, 1 Jul 2001 23:41:08 -0700 Date: Sun, 01 Jul 2001 23:41:08 -0700 From: Mark Mitchell To: Zack Weinberg cc: Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <349530000.994056068@warlock.codesourcery.com> In-Reply-To: <20010701234704.A24974@stanford.edu> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Sunday, July 01, 2001 11:47:04 PM -0700 Zack Weinberg wrote: >> > My feeling is that, if we have a generated file in our CVS repository, >> > it should be up-to-date all of the time. >> >> I agree. Also, I think that we should make this statement false >> by making the antecedent false for virtuall all files. I could >> even see getting rid of `configure' (shoot me, so there), but >> definitely the man pages. Kill 'em. Patch pre-approved. > > Then they need to be generated into the snapshots. I can do that, > except I've never been clear on how the snapshots are made, can > someone enlighten me? They're currently made by a cronjob run as `law' (or maybe `gccadmin'?) on gcc.gnu.org. They *should* be made by the gcc_release script, which is designed to handle snapshots as wel as releases. However, there are some known not-finished-yet bits, I think -- although Joseph is now more up on it than I, probably. I would like the snapshot builds to be exactly like the release builds, except for version numbers, the directory where we place them, and a few other minor things -- but in terms of how we make the tarfiles it ought to be exactly the same. That way, we can have confidence in our packaging process without having to reexamine it before a release; we will just now that since the snapshots worked, the release will work too. As for man pages in particular, we should build man pages as part of a normal `make bootstrap'. In this context, the documentation is just another program we build when build the compiler. The fact that some documentation is now manually created by the gcc_release script represents lameness in our normal build process. And, if you build man pages as part of the build, and put them in the source directory, then the gcc_release script will automatically package them up for you in snapshots, since it does a full bootstrap and then tars up the source directory. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37851-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 07:20:22 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16901 invoked by alias); 2 Jul 2001 07:20:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16848 invoked from network); 2 Jul 2001 07:20:05 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 07:20:05 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f626wop24492; Sun, 1 Jul 2001 23:58:51 -0700 Date: Sun, 01 Jul 2001 23:58:48 -0700 From: Mark Mitchell To: Richard Kenner , "gcc-patches@gcc.gnu.org" Subject: Re: Fix to EH bug caused by packed union issue Message-ID: <354720000.994057128@warlock.codesourcery.com> In-Reply-To: <10107012330.AA11054@vlsi1.ultra.nyu.edu> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline \> > Sun Jul 1 11:53:52 2001 Richard Kenner > > * c-common.c (decl_attributes, case A_MODE): Don't call layout_decl > for FIELD_DECL. This can't be both correct and complete. Since `layout_decl' aborts for most kinds of decls -- but specifically does not abort for FIELD_DECL, one must assume it accepts FIELD_DECLs. So, if you're now asserting that it should not be called for *any* FIELD_DECLs, you need to change it to abort in that case too. If for *these* FIELD_DECLs you need an explanatory comment about why for other DECLs, but not FIELD_DECLs. And, if your original change could affect us in other cases where layout_decl is called with a FIELD_DECL (I'm pretty sure the C++ front-end does this), then we can still get burned. > I think my code isn't quite doing what I wanted it to, and if it were, it > would indeed cause incompatibilities with existing ABIs, but that part > of my change is minor and now harmless, so I'll worry about fixing it ? > > later. I don't think I can quite parse that sentence, but it's disturbing from context. The "I think" is troubling because if you're not sure, I'm not sure at all. And I'm worried that if someone were to fix it to do what you wanted it to, they might then break things. We absolutely cannot take changes with our ABI. If we cannot convince ourselves that a patch does not change the ABI, then we cannot have the patch. We are being lectured from all sides about the import of keeping the libgcc interface stable; think how appalled these people would be if were to change a data layout! Please revert the original change and this one and start over, beginning at the beginning, with what you are trying to achieve and how you want to achieve it, and let everyone comment on it, and then we'll decide what to do. Otherwise, I think you've just confused the issue further. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37852-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 07:30:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19104 invoked by alias); 2 Jul 2001 07:30:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19059 invoked from network); 2 Jul 2001 07:30:02 -0000 Received: from unknown (HELO lilac.csi.cam.ac.uk) (131.111.8.44) by sourceware.cygnus.com with SMTP; 2 Jul 2001 07:30:02 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by lilac.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Gy8V-0005Vs-00; Mon, 02 Jul 2001 08:28:47 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Gy8U-00079J-00; Mon, 02 Jul 2001 08:28:46 +0100 Date: Mon, 2 Jul 2001 08:28:44 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Mark Mitchell cc: Zack Weinberg , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates In-Reply-To: <349530000.994056068@warlock.codesourcery.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sun, 1 Jul 2001, Mark Mitchell wrote: > >> I agree. Also, I think that we should make this statement false > >> by making the antecedent false for virtuall all files. I could > >> even see getting rid of `configure' (shoot me, so there), but > >> definitely the man pages. Kill 'em. Patch pre-approved. For branch as well as mainline? This does of course mean that you'll need perl 5.6.1 (or the latest podlators - and preferably the latest podlators, when another release comes out fixing some problems with excess quotes appearing which show up in the GCC manpages) to generate releases. > > Then they need to be generated into the snapshots. I can do that, > > except I've never been clear on how the snapshots are made, can > > someone enlighten me? They don't need to go in snapshots if we arrange for them not to be installed when not present (as with info). > They're currently made by a cronjob run as `law' (or maybe `gccadmin'?) > on gcc.gnu.org. They *should* be made by the gcc_release script, > which is designed to handle snapshots as wel as releases. However, > there are some known not-finished-yet bits, I think -- although Joseph > is now more up on it than I, probably. Yes, it is currently run by law, and should be using gcc_release from gccadmin instead. Someone else should look at what other changes to gcc_release might be necessary to replace the old script (e.g., the facilities to announce the snapshot and update README may be needed). > As for man pages in particular, we should build man pages as > part of a normal `make bootstrap'. In this context, the documentation > is just another program we build when build the compiler. The fact > that some documentation is now manually created by the gcc_release > script represents lameness in our normal build process. And, if you > build man pages as part of the build, and put them in the source directory, > then the gcc_release script will automatically package them up for you in > snapshots, since it does a full bootstrap and then tars up the source > directory. One property of gcc_release -s is that it doesn't build the compiler and documentation - so people building snapshots will want to have more tools installed (or need them, in the case of bison) than those building releases, as now. This substantially reduces the size of snapshot diffs by not bulking them up with diffs to bison output files and split info files. (Also, contrib/gcc_update doesn't touch files that aren't in CVS - necessarily, for it to work with CVS checkouts - and these files are liable to cause many problems with patch conflicts if their timestamps get out of sync and they get regenerated by slightly different tool versions.) I don't know whether the load on gcc.gnu.org of a full build would be desirable, either. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37853-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 07:39:59 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21983 invoked by alias); 2 Jul 2001 07:39:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21956 invoked from network); 2 Jul 2001 07:39:58 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 07:39:58 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f627dP404378; Mon, 2 Jul 2001 00:39:25 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 00:39:25 -0700 Date: Mon, 2 Jul 2001 00:39:25 -0700 From: "Zack Weinberg" To: Mark Mitchell Cc: Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <20010702003925.B24974@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <349530000.994056068@warlock.codesourcery.com> User-Agent: Mutt/1.3.18i On Sun, Jul 01, 2001 at 11:41:08PM -0700, Mark Mitchell wrote: > > As for man pages in particular, we should build man pages as > part of a normal `make bootstrap'. In this context, the documentation > is just another program we build when build the compiler. Okay, I *think* this is as simple as the patch below. I didn't code the $(GENERATED_MANPAGES) stuff, though, so I'd appreciate if someone could vet this. -- zw I met a traveller from an antique land Who said: 'Your name is Ozymandias, king of kings, and I claim my five pounds!' -- Del Cotter * Makefile.in (doc): Depend on $(GENERATED_MANPAGES). * doc/.cvsignore: Add gcc.1, cpp.1, gcov.1. * doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed. =================================================================== Index: Makefile.in --- Makefile.in 2001/06/30 17:23:52 1.685 +++ Makefile.in 2001/07/02 07:38:38 @@ -2208,7 +2208,7 @@ stmp-fixproto: fixhdr.ready fixproto stm docdir = $(srcdir)/doc -doc: $(BUILD_INFO) gccbug +doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info $(docdir)/cpp.info: $(docdir)/cpp.texi =================================================================== Index: doc/.cvsignore --- doc/.cvsignore 2001/06/01 16:51:18 1.1 +++ doc/.cvsignore 2001/07/02 07:38:38 @@ -1,3 +1,6 @@ gcc.info* cpp.info* cppinternals.info* +gcc.1 +cpp.1 +gcov.1 From gcc-patches-return-37854-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 08:00:34 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 31958 invoked by alias); 2 Jul 2001 08:00:32 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31922 invoked from network); 2 Jul 2001 08:00:31 -0000 Received: from unknown (HELO lilac.csi.cam.ac.uk) (131.111.8.44) by sourceware.cygnus.com with SMTP; 2 Jul 2001 08:00:31 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by lilac.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Gyd8-0005qM-00; Mon, 02 Jul 2001 09:00:26 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Gyd8-0007nZ-00; Mon, 02 Jul 2001 09:00:26 +0100 Date: Mon, 2 Jul 2001 09:00:23 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Zack Weinberg cc: Mark Mitchell , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates In-Reply-To: <20010702003925.B24974@stanford.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Mon, 2 Jul 2001, Zack Weinberg wrote: > On Sun, Jul 01, 2001 at 11:41:08PM -0700, Mark Mitchell wrote: > > > > As for man pages in particular, we should build man pages as > > part of a normal `make bootstrap'. In this context, the documentation > > is just another program we build when build the compiler. > > Okay, I *think* this is as simple as the patch below. I didn't code > the $(GENERATED_MANPAGES) stuff, though, so I'd appreciate if someone > could vet this. You need to remove the entries for the manpages from contrib/gcc_update as well. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37855-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 09:42:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10096 invoked by alias); 2 Jul 2001 09:42:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10057 invoked from network); 2 Jul 2001 09:42:14 -0000 Received: from unknown (HELO atrey.karlin.mff.cuni.cz) (195.113.31.123) by sourceware.cygnus.com with SMTP; 2 Jul 2001 09:42:14 -0000 Received: (from hubicka@localhost) by atrey.karlin.mff.cuni.cz (8.9.3/8.9.3/Debian 8.9.3-21) id LAA04326; Mon, 2 Jul 2001 11:42:02 +0200 Date: Mon, 2 Jul 2001 11:42:02 +0200 From: Jan Hubicka To: Richard Henderson , Jan Hubicka , patches@x86-64.org, gcc-patches@gcc.gnu.org Subject: Re: [patches] flow based jump pass take 2 Message-ID: <20010702114202.E3390@atrey.karlin.mff.cuni.cz> References: <20010628113830.D4964@atrey.karlin.mff.cuni.cz> <20010628115354.F4964@atrey.karlin.mff.cuni.cz> <20010628121125.A16363@redhat.com> <20010629113323.C13501@atrey.karlin.mff.cuni.cz> <20010629083655.A17456@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.15i In-Reply-To: <20010629083655.A17456@redhat.com>; from rth@redhat.com on Fri, Jun 29, 2001 at 08:36:55AM -0700 > > At the moment I am shooting for corectness of the patch. There are some dark > > sides, such as USE and CLOBBER expressions. Old jump pass takes a lot of > > care to move them when restructuring flowgraph. I simply zap them and I am > > not sure this is good idea. > > Careful here -- I don't think jump was completely correct > either. I can't remember specifics at the moment; just a > feeling. Yes, I am trying to be curefull. Basically I don't change use/clobbers before reload, I consider them as an instructions. After reload I zap them. reorg is possible candidate for problems, I will try to investigate that beast but it is all greek for me. Honza > > > r~ From gcc-patches-return-37856-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 09:43:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10518 invoked by alias); 2 Jul 2001 09:43:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10483 invoked from network); 2 Jul 2001 09:43:13 -0000 Received: from unknown (HELO atrey.karlin.mff.cuni.cz) (195.113.31.123) by sourceware.cygnus.com with SMTP; 2 Jul 2001 09:43:13 -0000 Received: (from hubicka@localhost) by atrey.karlin.mff.cuni.cz (8.9.3/8.9.3/Debian 8.9.3-21) id LAA04447; Mon, 2 Jul 2001 11:43:02 +0200 Date: Mon, 2 Jul 2001 11:43:02 +0200 From: Jan Hubicka To: Richard Henderson , Jan Hubicka , gcc-patches@gcc.gnu.org, patches@x86-64.org Subject: Re: [patches] Re: Remove trivially dead instructions after try_optimize_cfg Message-ID: <20010702114302.F3390@atrey.karlin.mff.cuni.cz> References: <20010629150324.I13501@atrey.karlin.mff.cuni.cz> <20010629084643.D17456@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.15i In-Reply-To: <20010629084643.D17456@redhat.com>; from rth@redhat.com on Fri, Jun 29, 2001 at 08:46:43AM -0700 > On Fri, Jun 29, 2001 at 03:03:24PM +0200, Jan Hubicka wrote: > > * flow.c (jump_converted): New static variable. > > (try_redirect_by_replacing_jump): set. > > (try_optimize_cfg): Clear; call delete_trivially_dead_insns > > if true. > > I'm unconvinced this is needed. OK, lets ignore this for now. It is probably not needed. Still I will try to fix my patch for making delete_trivially_dead_insns flowgraph avare, as I need it to make flowgraph survive after loop pass. Honza > > > r~ From gcc-patches-return-37857-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 10:08:03 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24138 invoked by alias); 2 Jul 2001 10:08:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24100 invoked from network); 2 Jul 2001 10:07:57 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 10:07:57 -0000 Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id DAA25942; Mon, 2 Jul 2001 03:07:54 -0700 (PDT) Received: (from aoliva@localhost) by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f62A7qg14631; Mon, 2 Jul 2001 07:07:52 -0300 To: Michael Elizabeth Chastain Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] build failure, gcc 3.0, native hppa2.0w-hp-hpux11.00, ltconfig References: <200107011648.JAA25630@bosch.cygnus.com> From: Alexandre Oliva Organization: GCC Team, Red Hat Date: 02 Jul 2001 07:07:52 -0300 In-Reply-To: <200107011648.JAA25630@bosch.cygnus.com> (Michael Elizabeth Chastain's message of "Sun, 1 Jul 2001 09:48:51 -0700") Message-ID: Lines: 15 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jul 1, 2001, Michael Elizabeth Chastain wrote: > Okay, I checked out cvs libtool HEAD. In order to build it, I need > autoconf 2.50 and automake 1.4p4 plus one patch. Really? Try the branch; it shouldn't be that demanding. In fact, I'm surprised mainline is. Perhaps my silence in libtool matters for the past two weeks (I haven't even opened the libtool mail folders :-( has been interpreted as agreement :-( -- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ Red Hat GCC Developer aoliva@{cygnus.com, redhat.com} CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} Free Software Evangelist *Please* write to mailing lists, not to me From gcc-patches-return-37858-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 10:21:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26704 invoked by alias); 2 Jul 2001 10:20:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26654 invoked from network); 2 Jul 2001 10:20:52 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 10:20:52 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA12048; Mon, 2 Jul 01 06:25:00 EDT Date: Mon, 2 Jul 01 06:25:00 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107021025.AA12048@vlsi1.ultra.nyu.edu> To: mark@codesourcery.com Subject: Re: Fix to EH bug caused by packed union issue Cc: gcc-patches@gcc.gnu.org Since `layout_decl' aborts for most kinds of decls -- but specifically does not abort for FIELD_DECL, one must assume it accepts FIELD_DECLs. So, if you're now asserting that it should not be called for *any* FIELD_DECLs, you need to change it to abort in that case too. If for *these* FIELD_DECLs you need an explanatory comment about why for other DECLs, but not FIELD_DECLs. The issue is simply that layout_decl is called for FIELD_DECLs only as part of laying out the type they are in, not before. So I don't understand your comment. I don't think I can quite parse that sentence, but it's disturbing from context. The "I think" is troubling because if you're not sure, I'm not sure at all. And I'm worried that if someone were to fix it to do what you wanted it to, they might then break things. I'm *sure* it doesn't do what I wanted it to do. The only time it does anything is if layout_decl is called with a FIELD_DECL before the record is actually laid out and that's wrong anyway. Please revert the original change and this one and start over, beginning at the beginning, with what you are trying to achieve and how you want to achieve it, and let everyone comment on it, and then we'll decide what to do. All but one hunk of that patch is totally unrelated to this issue since it only adds a hook for a front-end and doesn't change anything for front ends that can't use it. I'll remove the one hunk in question. From gcc-patches-return-37859-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 10:30:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29506 invoked by alias); 2 Jul 2001 10:30:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29470 invoked from network); 2 Jul 2001 10:30:51 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 10:30:51 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA12093; Mon, 2 Jul 01 06:35:01 EDT Date: Mon, 2 Jul 01 06:35:01 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107021035.AA12093@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Revert problematic part of layout change This patch reverts the hunk in my stor-layout.c change that has a potential of changing the alignment of structs, though I don't believe it actually could at this point. Mon Jul 2 06:29:36 2001 Richard Kenner * stor-layout.c (layout_decl): Revert change to handling of alignment in packed types. *** stor-layout.c 2001/06/02 11:14:06 1.98 --- stor-layout.c 2001/07/02 10:24:51 *************** layout_decl (decl, known_align) *** 382,386 **** if (maximum_field_alignment != 0) DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment); ! else if (DECL_PACKED (decl) && known_align % DECL_ALIGN (decl) != 0) { DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT); --- 382,386 ---- if (maximum_field_alignment != 0) DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), maximum_field_alignment); ! else if (DECL_PACKED (decl)) { DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT); From gcc-patches-return-37860-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 11:01:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9670 invoked by alias); 2 Jul 2001 11:01:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9639 invoked from network); 2 Jul 2001 11:01:08 -0000 Received: from unknown (HELO fw-cam.cambridge.arm.com) (193.131.176.3) by sourceware.cygnus.com with SMTP; 2 Jul 2001 11:01:08 -0000 Received: by fw-cam.cambridge.arm.com; id MAA28197; Mon, 2 Jul 2001 12:01:00 +0100 (BST) Received: from unknown(172.16.1.2) by fw-cam.cambridge.arm.com via smap (V5.5) id xma027707; Mon, 2 Jul 01 12:00:27 +0100 Received: from cam-mail2.cambridge.arm.com (localhost [127.0.0.1]) by cam-admin0.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id MAA14100; Mon, 2 Jul 2001 12:00:32 +0100 (BST) Received: from sun18.cambridge.arm.com (sun18.cambridge.arm.com [172.16.2.18]) by cam-mail2.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id MAA27347; Mon, 2 Jul 2001 12:00:31 +0100 (BST) Message-Id: <200107021100.MAA27347@cam-mail2.cambridge.arm.com> X-Mailer: exmh version 2.0.2 2/24/98 To: "Zack Weinberg" cc: gcc-patches@gcc.gnu.org, Richard.Earnshaw@arm.com Reply-To: Richard.Earnshaw@arm.com Organization: ARM Ltd. X-Telephone: +44 1223 400569 (direct+voicemail), +44 1223 400400 (switchbd) X-Fax: +44 1223 400410 X-Address: ARM Ltd., 110 Fulbourn Road, Cherry Hinton, Cambridge CB1 9NJ. X-Url: http://www.arm.com/ Subject: Re: Some syntactic sugar for machine descriptions In-reply-to: Your message of "Sat, 30 Jun 2001 10:22:39 PDT." <20010630102239.B432@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 12:00:29 +0100 From: Richard Earnshaw * rtl.def (DEFINE_INSN, DEFINE_INSN_AND_SPLIT, DEFINE_PEEPHOLE): Change output-template slot to format 'T'. * rtl.h (XTMPL): New. * read-rtl.c (read_escape): New function. (read_quoted_string, read_braced_string): Use it. (read_rtx): Set star_if_braced from the format string. Use XTMPL where appropriate. * genoutput.c (gen_insn, gen_peephole): Use XTMPL to get the template string. Zack, This patch is breaking the ARM compiler. Specifically, it's missing code to handle format 'T' in print-rtl.c: print_rtx() gensupport.c: collect_insn_data () rtl.c: copy_rtx () R. From gcc-patches-return-37861-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 11:03:50 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10526 invoked by alias); 2 Jul 2001 11:03:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10504 invoked from network); 2 Jul 2001 11:03:47 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 2 Jul 2001 11:03:47 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f62B38I10118; Mon, 2 Jul 2001 13:03:13 +0200 (MET DST) Date: Mon, 2 Jul 2001 13:03:09 +0200 (CEST) From: Gerald Pfeifer To: "Joseph S. Myers" cc: , Rich Churcher Subject: Re: FAQ patch In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 14 Jun 2001, Joseph S. Myers wrote: > I've applied the following patch to make some minor improvements to the > FAQ, and to link to faq.html again from index.html. Thanks, both to Rich and you! > The FAQ could do with many more eyes on it trying to updating or > improve anything that by now is out of date. I'm planning to do that soon. Rich, if there are any outstanding patches or mails of yours which I haven't addressed in, say 24 hours, please drop me some pointer or resend, and I'll have a look ASAP. (I hope this did not happen, but I might have missed something while reducing my huge backlog.) Gerald From gcc-patches-return-37862-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 11:53:03 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30977 invoked by alias); 2 Jul 2001 11:53:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30926 invoked from network); 2 Jul 2001 11:52:56 -0000 Received: from unknown (HELO executor.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 2 Jul 2001 11:52:56 -0000 Received: from cuddles.cambridge.redhat.com (cuddles.cambridge.redhat.com [172.16.18.86]) by executor.cambridge.redhat.com (Postfix) with ESMTP id D3D83ABAF8; Mon, 2 Jul 2001 12:52:50 +0100 (BST) Received: (from aph@localhost) by cuddles.cambridge.redhat.com (8.11.0/8.11.0) id f62BqkT13940; Mon, 2 Jul 2001 12:52:46 +0100 X-Authentication-Warning: cuddles.cambridge.redhat.com: aph set sender to aph@cambridge.redhat.com using -f From: Andrew Haley MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15168.24718.136064.153618@cuddles.cambridge.redhat.com> Date: Mon, 2 Jul 2001 12:52:46 +0100 (BST) To: Geoff Keating Cc: gcc-patches@gcc.gnu.org Subject: Re: Patches awaiting approval In-Reply-To: References: <15164.37960.61881.324145.cygnus.gcc@cuddles.cambridge.redhat.com> X-Mailer: VM 6.75 under Emacs 20.7.1 Geoff Keating writes: > aph@cambridge.redhat.com (Andrew Haley) writes: > > > I'm still waiting approval/rejection for the pateches below. > ... > > > > Andrew. > > > > http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01355.html > > this patch doesn't seem right. Why isn't there a BARRIER after (or > before, I forget which is correct) the jump table? There is a barrier after the jump table; there is not a barrier between the jump and the jump table. Control cannot pass through the point after the jump, so I could easily add a barrier there. > > http://gcc.gnu.org/ml/gcc/2001-06/msg01434.html > > It would be better to fix up the notes, too, but I guess this is OK. Thanks. Andrew. From gcc-patches-return-37863-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 12:00:44 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2946 invoked by alias); 2 Jul 2001 12:00:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2850 invoked from network); 2 Jul 2001 12:00:38 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 2 Jul 2001 12:00:38 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id FAA17660; Mon, 2 Jul 2001 05:17:29 -0700 To: Andrew Haley CC: gcc-patches@gcc.gnu.org Subject: Re: Patches awaiting approval References: <15164.37960.61881.324145.cygnus.gcc@cuddles.cambridge.redhat.com> <15168.24718.136064.153618@cuddles.cambridge.redhat.com> From: Geoff Keating Date: 02 Jul 2001 05:16:29 -0700 In-Reply-To: Andrew Haley's message of "Mon, 2 Jul 2001 12:52:46 +0100 (BST)" Message-ID: Lines: 24 X-Mailer: Gnus v5.5/Emacs 20.3 Andrew Haley writes: > Geoff Keating writes: > > aph@cambridge.redhat.com (Andrew Haley) writes: > > > > > I'm still waiting approval/rejection for the pateches below. > > ... > > > > > > Andrew. > > > > > > http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01355.html > > > > this patch doesn't seem right. Why isn't there a BARRIER after (or > > before, I forget which is correct) the jump table? > > There is a barrier after the jump table; there is not a barrier > between the jump and the jump table. Control cannot pass through the > point after the jump, so I could easily add a barrier there. Can you instead change flow so that if it sees it has found a jump table, it looks at the next insn (which had better be a BARRIER)? -- - Geoffrey Keating From gcc-patches-return-37864-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 12:25:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13598 invoked by alias); 2 Jul 2001 12:25:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13577 invoked from network); 2 Jul 2001 12:25:09 -0000 Received: from unknown (HELO mail.brainstorm.co.uk) (213.86.156.82) by sourceware.cygnus.com with SMTP; 2 Jul 2001 12:25:09 -0000 Received: from nicola.brainstorm.co.uk (IDENT:nicola@nicola.brainstorm.co.uk [192.168.4.138]) by mail.brainstorm.co.uk (8.11.4/8.11.4) with ESMTP id f62BrSc16061; Mon, 2 Jul 2001 12:53:28 +0100 Date: Mon, 2 Jul 2001 12:53:28 +0100 (BST) From: Nicola Pero To: Rainer Orth cc: Stan Shebs , ovidiu@cup.hp.com, gcc-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Avoid link failure of Objective-C testsuite on Solaris2/Intel In-Reply-To: <15164.56710.983332.403845@xayide.TechFak.Uni-Bielefeld.DE> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII > In class-tests-1.h (test_instances), id object is created by > class_create_instance(), which finally allocates a 4-byte (in the > Solaris/Intel case) instance and returns its address. This (object) is > passed to object_is_class(), which casts object into a Class (i.e. struct > objc_class *, where struct objc_class is much larger than 4 bytes), and > tests (via CLS_ISCLASS) the info member to determine if _CLS_CLASS is set. Looks like a bug in the Objective-C runtime ... should be testing CLS_ISMETA on the class_pointer ... thanks for spotting this out. > But this test is completely bogus, No - the test is perfectly correct. If you look into Object.m, for example, you will see that class_create_instance() is used in the implementation of +alloc, and object_is_class() is used in the implementation of -isClass, which means that when you do id object = [Object new]; if ([object isClass]) { // ... } you are basically performing the same calls that the test does. And no matter what the internals or the functions, but of course this code is correct and must work. Btw, I just checked, and NSObject implements -isClass in the same way, so we really want to fix object_is_class() if it's broken. object_is_meta_class has the same problem but it is never used anywhere. > since info never got initialized in the first place. So it's completely > arbitrary if this test passes or not. Yes - you seem to be right ... Here is a complete patch fixing libobjc: Index: ChangeLog =================================================================== RCS file: /cvs/gcc/gcc/libobjc/ChangeLog,v retrieving revision 1.63 diff -u -r1.63 ChangeLog --- ChangeLog 2001/06/09 20:32:56 1.63 +++ ChangeLog 2001/07/02 11:40:46 @@ -1,3 +1,8 @@ +Mon Jul 2 10:45:36 2001 Nicola Pero + + * objc/objc-api.h (object_is_class), (object_is_meta_class): + Fixed. + 2001-06-09 Alexandre Oliva , Stephen L Moshier * configure.in (AC_EXEEXT): Work around in case it expands to Index: objc/objc-api.h =================================================================== RCS file: /cvs/gcc/gcc/libobjc/objc/objc-api.h,v retrieving revision 1.3 diff -u -r1.3 objc-api.h --- objc-api.h 2001/01/03 08:49:34 1.3 +++ objc-api.h 2001/07/02 11:40:46 @@ -580,20 +580,23 @@ static inline BOOL object_is_class(id object) { - return CLS_ISCLASS((Class)object); + return (object != nil) && CLS_ISMETA (object->class_pointer); } static inline BOOL object_is_instance(id object) { - return (object!=nil)&&CLS_ISCLASS(object->class_pointer); + return (object != nil) && CLS_ISCLASS (object->class_pointer); } static inline BOOL object_is_meta_class(id object) { - return CLS_ISMETA((Class)object); + return (object != nil) + && !object_is_instance (object) + && !object_is_class (object); } + struct sarray* objc_get_uninstalled_dtable(void); and here is a new testcase object_is_class.m showing the bug in action. On my machine, the usual testcases pass before and after the patch, but the following new testcase failed before the patch, and the patch fixes it. /* Contributed by Nicola Pero - Mon Jul 2 11:03:26 BST 2001 */ #include #include #include /* This test demonstrate a failure in object_is_class which was fixed */ /* We allocate an object - but we also fill the memory after the object with a sequence of 1 */ id allocate_object () { Class class = [Object class]; /* Allocate an area of memory */ id new_object = nil; /* Big enough to contain, say, ten objects */ new_object = (id)(objc_malloc (sizeof (class->instance_size * 10))); if (new_object == nil) { printf ("Out of memory\n"); abort (); } /* Now fill all this memory with 1 */ memset (new_object, 1, class->instance_size * 10); /* Then use the beginning of that memory to store an object */ memset (new_object, 0, class->instance_size); new_object->class_pointer = class; return new_object; } int main (void) { /* Allocate an object (with the following memory containing 1s) */ id new_object = allocate_object (); /* Now check that the object is not a class object */ if (object_is_class (new_object)) { printf ("object_is_class failed\n"); abort (); } return 0; } From gcc-patches-return-37865-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 12:37:27 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17593 invoked by alias); 2 Jul 2001 12:37:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17553 invoked from network); 2 Jul 2001 12:37:18 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (137.222.102.57) by sourceware.cygnus.com with SMTP; 2 Jul 2001 12:37:18 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id NAA32083; Mon, 2 Jul 2001 13:37:02 +0100 Message-ID: <3B406AED.39469753@codesourcery.com> Date: Mon, 02 Jul 2001 13:37:01 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: Fergus Henderson CC: gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining References: <3B3F81B7.5727694C@codesourcery.com> <20010702124801.A11282@murlibobo.cs.mu.OZ.AU> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mark Mitchell wrote: > That function needs to document its parameter, and it wasn't obvious > to me what it did at first. How about expand_inline_calls, perhaps? I've named it optimize_inline_calls -- there were already expand_call_inline and expand_calls_inline. Fergus Henderson wrote: > I think it would be nicer to put the documentation of `inlined' > before the documentation for `optimized', i.e. to list the different > stages in cronological order. I don't think that possible, in general. Consider some constant propagation/unreachable code optimization. You'd want to run that both before and after inlining I guess. > It would also be nice to include stage numbers in the dump file names, > e.g. > @var{file}.01-original > @var{file}.02-inlined > @var{file}.03-optimized > or maybe > @var{file}.tree.01-original > @var{file}.tree.02-inlined > @var{file}.tree.03-optimized > though perhaps that should be a separate change. > > Also it would be nice to document what optimizations are included > in the `optimized' tree but not in the `inlined' tree. It occurs to me that separate dumps for each phase might not be sensible (especially as each optimization might be applied more than once). A better solution might be separate files for each function, with all the phases for that function together in one file (and naturally in chronoligical order). We could add an option to only emit dumps for a particular function. Something like -fdump-ast-by-function separate files for each function, rather than separate functions for each phase. The file name would be . -fdump-ast-function Only dump phases for specific function. Implies -fdump-ast-by-function. (Or these two could be named -fdump-ast-function and -fdump-ast-function- respectively.) -fdump-ast-all Do all ast optimization dumps. Thoughts? nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-37866-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 13:16:43 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12110 invoked by alias); 2 Jul 2001 13:16:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12035 invoked from network); 2 Jul 2001 13:16:35 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 2 Jul 2001 13:16:35 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f62DD3P20179; Mon, 2 Jul 2001 14:13:03 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Nathan Sidwell Cc: Fergus Henderson , gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining References: <3B3F81B7.5727694C@codesourcery.com> <20010702124801.A11282@murlibobo.cs.mu.OZ.AU> <3B406AED.39469753@codesourcery.com> From: Jason Merrill In-Reply-To: <3B406AED.39469753@codesourcery.com> (Nathan Sidwell's message of "Mon, 02 Jul 2001 13:37:01 +0100") Date: 02 Jul 2001 14:13:02 +0100 Message-ID: Lines: 14 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii >>>>> "Nathan" == Nathan Sidwell writes: > It occurs to me that separate dumps for each phase might not be sensible > (especially as each optimization might be applied more than once). How is this any different from the current RTL dumps? We already have two cse dumps, and this doesn't cause trouble. > -fdump-ast-all > Do all ast optimization dumps. Any reason not to include this in -da? Jason From gcc-patches-return-37867-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 13:16:59 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12543 invoked by alias); 2 Jul 2001 13:16:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12508 invoked from network); 2 Jul 2001 13:16:58 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (137.222.102.57) by sourceware.cygnus.com with SMTP; 2 Jul 2001 13:16:58 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id OAA32345; Mon, 2 Jul 2001 14:16:49 +0100 Message-ID: <3B407440.CFACAC1D@codesourcery.com> Date: Mon, 02 Jul 2001 14:16:48 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: Zack Weinberg CC: "Joseph S. Myers" , gcc-patches , mark Subject: Re: system include directories References: <20010701144501.G18369@stanford.edu> Content-Type: multipart/mixed; boundary="------------C97CF83838BDB4A83E3E8C81" This is a multi-part message in MIME format. --------------C97CF83838BDB4A83E3E8C81 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Zack Weinberg wrote: > Don't need _() here. In fact, you shouldn't need any of them, I think > gettext has the brains to extract the other strings despite their > being inside a ?: expression. Take them all out, regenerate gcc.pot, > and see if any of the strings are missing. I agree the _() shouldn't be needed. Regenerating gcc.pot I find that there are no strings for any cpp_warning call. This looks like a separate issue. Is this one good enough? I've added in your wording to invoke.texi, and added some words to cpp.texi. No need to put in the gcc version -- just keep the docs with the source. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------C97CF83838BDB4A83E3E8C81 Content-Type: application/octet-stream; name="include-3.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="include-3.patch" MjAwMS0wNy0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIGNwcGluaXQuYyAocmVtb3ZlX2R1cF9kaXJzKTogSW5mb3JtIGlmIGEgc3lzdGVtIGlu Y2x1ZGUKICAgICAgICBkaXJlY3RvcnkgaXMgYmVpbmcgcmVvcmRlcmVkLgoJKiBkb2MvaW52 b2tlLnRleGkgKERpcmVjdG9yeSBPcHRpb25zKTogR0NDIHdhcm5zIGlmIHlvdSBoaWRlIGEK CXN5c3RlbSBpbmNsdWRlLgoJKiBkb2MvY3BwLnRleGkgKCk6IExpa2V3aXNlLgoJKiBkb2Mv Z2NjLnRleGkgKEludGVyb3BlcmF0aW9uKTogUmVtb3ZlIGluZm9ybWF0aW9uIGFib3V0Cgkt SS91c3IvaW5jbHVkZS4KCkluZGV4OiBjcHBpbml0LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9nY2MvZWdjcy9nY2MvY3BwaW5pdC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjE2MApkaWZmIC1jIC0zIC1wIC1yMS4xNjAgY3BwaW5pdC5jCioqKiBjcHBpbml0LmMJMjAw MS8wNi8wOSAyMjo1NTo0OAkxLjE2MAotLS0gY3BwaW5pdC5jCTIwMDEvMDcvMDIgMTM6MDk6 NDQKKioqKioqKioqKioqKioqIHJlbW92ZV9kdXBfZGlycyAocGZpbGUsIGhlYWQpCioqKiAy OTcsMzAyICoqKioKLS0tIDI5OSwzMTkgLS0tLQogICAgICAgIGZvciAob3RoZXIgPSBoZWFk OyBvdGhlciAhPSBjdXI7IG90aGVyID0gb3RoZXItPm5leHQpCiAgICAgICAgICBpZiAoSU5P X1RfRVEgKGN1ci0+aW5vLCBvdGhlci0+aW5vKSAmJiBjdXItPmRldiA9PSBvdGhlci0+ZGV2 KQogIAkgIHsKKyAJICAgIGlmIChjdXItPnN5c3ApCisgCSAgICAgIHsKKyAJCWNwcF93YXJu aW5nIChwZmlsZSwKKyAJCQkgICAgICJjaGFuZ2luZyBzZWFyY2ggb3JkZXIgZm9yIHN5c3Rl bSBkaXJlY3RvcnkgXCIlc1wiIiwKKyAJCQkgICAgIGN1ci0+bmFtZSk7CisgCQlpZiAoc3Ry Y21wIChjdXItPm5hbWUsIG90aGVyLT5uYW1lKSkKKyAJCSAgY3BwX3dhcm5pbmcgKHBmaWxl LCBvdGhlci0+c3lzcAorIAkJCSAgICAgICA/ICIgIGFzIGl0IGlzIHRoZSBzYW1lIGFzIHN5 c3RlbSBkaXJlY3RvcnkgXCIlc1wiIgorIAkJCSAgICAgICA6ICIgIGFzIGl0IGlzIHRoZSBz YW1lIGFzIG5vbi1zeXN0ZW0gZGlyZWN0b3J5IFwiJXNcIiIsCisgCQkJICAgICAgIG90aGVy LT5uYW1lKTsKKyAJCWVsc2UKKyAJCSAgY3BwX3dhcm5pbmcgKHBmaWxlLCBvdGhlci0+c3lz cAorIAkJCSAgICAgICA/ICIgIGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3BlY2lmaWVkIGFz IGEgc3lzdGVtIGRpcmVjdG9yeSIKKyAJCQkgICAgICAgOiAiICBhcyBpdCBoYXMgYWxyZWFk eSBiZWVuIHNwZWNpZmllZCBhcyBhIG5vbi1zeXN0ZW0gZGlyZWN0b3J5Iik7CisgCSAgICAg IH0KICAJICAgIGN1ciA9IHJlbW92ZV9kdXBfZGlyIChwZmlsZSwgcHJldik7CiAgCSAgICBi cmVhazsKICAJICB9CkluZGV4OiBkb2MvaW52b2tlLnRleGkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvZG9jL2ludm9rZS50ZXhpLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjI4CmRpZmYgLWMgLTMgLXAgLXIxLjI4IGludm9rZS50ZXhpCioqKiBpbnZv a2UudGV4aQkyMDAxLzA3LzAyIDEyOjU1OjMzCTEuMjgKLS0tIGludm9rZS50ZXhpCTIwMDEv MDcvMDIgMTM6MDk6NDgKKioqKioqKioqKioqKioqIHN5c3RlbSBoZWFkZXIgZmlsZXMgKHVz ZSBAb3B0aW9uey1pc3lzdGUKKioqIDQzNTYsNDM2MSAqKioqCi0tLSA0MzU2LDQzNzIgLS0t LQogIG9uZSBAb3B0aW9uey1JfSBvcHRpb24sIHRoZSBkaXJlY3RvcmllcyBhcmUgc2Nhbm5l ZCBpbiBsZWZ0LXRvLXJpZ2h0CiAgb3JkZXI7IHRoZSBzdGFuZGFyZCBzeXN0ZW0gZGlyZWN0 b3JpZXMgY29tZSBhZnRlci4KICAKKyBJZiBhIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRp cmVjdG9yeSwgb3IgYSBkaXJlY3Rvcnkgc3BlY2lmaWVkIHdpdGgKKyBAb3B0aW9uey1pc3lz dGVtfSwgaXMgYWxzbyBzcGVjaWZpZWQgd2l0aCBAb3B0aW9uey1JfSwgaXQgd2lsbCBiZQor IHNlYXJjaGVkIG9ubHkgaW4gdGhlIHBvc2l0aW9uIHJlcXVlc3RlZCBieSBAb3B0aW9uey1J fS4gIEFsc28sIGl0IHdpbGwKKyBub3QgYmUgY29uc2lkZXJlZCBhIHN5c3RlbSBpbmNsdWRl IGRpcmVjdG9yeS4gIElmIHRoYXQgZGlyZWN0b3J5IHJlYWxseQorIGRvZXMgY29udGFpbiBz eXN0ZW0gaGVhZGVycywgdGhlcmUgaXMgYSBnb29kIGNoYW5jZSB0aGF0IHRoZXkgd2lsbAor IGJyZWFrLiAgRm9yIGluc3RhbmNlLCBpZiBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VkdXJl IGVkaXRlZCB0aGUgaGVhZGVycworIGluIEBmaWxley91c3IvaW5jbHVkZX0gdG8gZml4IGJ1 Z3MsIEBzYW1wey1JL3Vzci9pbmNsdWRlfSB3aWxsIGNhdXNlIHRoZQorIG9yaWdpbmFsLCBi dWdneSBoZWFkZXJzIHRvIGJlIGZvdW5kIGluc3RlYWQgb2YgdGhlIGNvcnJlY3RlZCBvbmVz LiAgR0NDCisgd2lsbCBpc3N1ZSBhIHdhcm5pbmcgd2hlbiBhIHN5c3RlbSBpbmNsdWRlIGRp cmVjdG9yeSBpcyBoaWRkZW4gaW4gdGhpcworIHdheS4KKyAKICBAaXRlbSAtSS0KICBAb3Bp bmRleCBJLQogIEFueSBkaXJlY3RvcmllcyB5b3Ugc3BlY2lmeSB3aXRoIEBvcHRpb257LUl9 IG9wdGlvbnMgYmVmb3JlIHRoZSBAb3B0aW9uey1JLX0KSW5kZXg6IGRvYy9jcHAudGV4aQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2djYy9kb2MvY3BwLnRleGks dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtYyAtMyAtcCAtcjEuMTAgY3BwLnRl eGkKKioqIGNwcC50ZXhpCTIwMDEvMDYvMjcgMTU6MDQ6MTUJMS4xMAotLS0gY3BwLnRleGkJ MjAwMS8wNy8wMiAxMzowOTo1MAoqKioqKioqKioqKioqKiogRm9yIGV4YW1wbGUsIGlmIEBm aWxley91c3IvaW5jbHVkZS9zeXMvcwoqKiogODM0LDgzOSAqKioqCi0tLSA4MzQsODQ1IC0t LS0KICBAY29kZXtAd3sjaW5jbHVkZSAidHlwZXMuaCJ9fSwgR0NDIGxvb2tzIGZvciBAZmls ZXt0eXBlcy5ofSBmaXJzdCBpbgogIEBmaWxley91c3IvaW5jbHVkZS9zeXN9LCB0aGVuIGlu IGl0cyB1c3VhbCBzZWFyY2ggcGF0aC4KICAKKyBJZiB5b3UgbmFtZSBhIHNlYXJjaCBkaXJl Y3Rvcnkgd2l0aCBAb3B0aW9uey1JQHZhcntkaXJ9fSB0aGF0IGlzIGFsc28gYQorIHN5c3Rl bSBpbmNsdWRlIGRpcmVjdG9yeSwgdGhlIEBvcHRpb257LUl9IHdpbnM7IHRoZSBkaXJlY3Rv cnkgd2lsbCBiZQorIHNlYXJjaGVkIGFjY29yZGluZyB0byB0aGUgQG9wdGlvbnstSX0gb3Jk ZXJpbmcsIGFuZCBpdCB3aWxsIG5vdCBiZQorIHRyZWF0ZWQgYXMgYSBzeXN0ZW0gaW5jbHVk ZSBkaXJlY3RvcnkuIEdDQyB3aWxsIHdhcm4geW91IHdoZW4gYSBzeXN0ZW0KKyBpbmNsdWRl IGRpcmVjdG9yeSBpcyBoaWRkZW4gaW4gdGhpcyB3YXkuCisgCiAgQHNhbXB7I2xpbmV9IChA cHhyZWZ7TGluZSBDb250cm9sfSkgZG9lcyBub3QgY2hhbmdlIEdDQydzIGlkZWEgb2YgdGhl CiAgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZmlsZS4KICAKKioqKioqKioq KioqKioqIEFsbCBkaXJlY3RvcmllcyBuYW1lZCBieSBAb3B0aW9uey1pc3lzdGUKKioqIDEw NjcsMTA3MyAqKioqCiAgZGlyZWN0b3JpZXMgbmFtZWQgYnkgQG9wdGlvbnstSX0sIG5vIG1h dHRlciB3aGF0IHRoZWlyIG9yZGVyIHdhcyBvbiB0aGUKICBjb21tYW5kIGxpbmUuICBJZiB0 aGUgc2FtZSBkaXJlY3RvcnkgaXMgbmFtZWQgYnkgYm90aCBAb3B0aW9uey1JfSBhbmQKICBA b3B0aW9uey1pc3lzdGVtfSwgQG9wdGlvbnstSX0gd2luczsgaXQgaXMgYXMgaWYgdGhlIEBv cHRpb257LWlzeXN0ZW19IG9wdGlvbgohIGhhZCBuZXZlciBiZWVuIHNwZWNpZmllZCBhdCBh bGwuCiAgCiAgQGZpbmRleCAjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCiAgVGhlcmUgaXMg YWxzbyBhIGRpcmVjdGl2ZSwgQGNvZGV7QHd7I3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcn19 LCB3aGljaAotLS0gMTA3MywxMDc5IC0tLS0KICBkaXJlY3RvcmllcyBuYW1lZCBieSBAb3B0 aW9uey1JfSwgbm8gbWF0dGVyIHdoYXQgdGhlaXIgb3JkZXIgd2FzIG9uIHRoZQogIGNvbW1h bmQgbGluZS4gIElmIHRoZSBzYW1lIGRpcmVjdG9yeSBpcyBuYW1lZCBieSBib3RoIEBvcHRp b257LUl9IGFuZAogIEBvcHRpb257LWlzeXN0ZW19LCBAb3B0aW9uey1JfSB3aW5zOyBpdCBp cyBhcyBpZiB0aGUgQG9wdGlvbnstaXN5c3RlbX0gb3B0aW9uCiEgaGFkIG5ldmVyIGJlZW4g c3BlY2lmaWVkIGF0IGFsbC4gR0NDIHdhcm5zIHlvdSB3aGVuIHRoaXMgaGFwcGVucy4KICAK ICBAZmluZGV4ICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKICBUaGVyZSBpcyBhbHNvIGEg ZGlyZWN0aXZlLCBAY29kZXtAd3sjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyfX0sIHdoaWNo CkluZGV4OiBkb2MvZ2NjLnRleGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2Mv ZWdjcy9nY2MvZG9jL2djYy50ZXhpLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIzCmRpZmYg LWMgLTMgLXAgLXIxLjIzIGdjYy50ZXhpCioqKiBnY2MudGV4aQkyMDAxLzA2LzI5IDIyOjA0 OjQwCTEuMjMKLS0tIGdjYy50ZXhpCTIwMDEvMDcvMDIgMTM6MTE6NDcKKioqKioqKioqKioq KioqIE9uIHNvbWUgQlNEIHN5c3RlbXMsIGluY2x1ZGluZyBzb21lIHZlcnMKKioqIDY3MCw3 MDIgKioqKgogIGNhdXNlcyBzdGF0aWMgdmFyaWFibGUgZGVzdHJ1Y3RvcnMgKGN1cnJlbnRs eSB1c2VkIG9ubHkgaW4gQysrKSBub3QgdG8KICBiZSBydW4uCiAgCi0gQGl0ZW0KLSBVc2Ug b2YgQG9wdGlvbnstSS91c3IvaW5jbHVkZX0gbWF5IGNhdXNlIHRyb3VibGUuCi0gCi0gTWFu eSBzeXN0ZW1zIGNvbWUgd2l0aCBoZWFkZXIgZmlsZXMgdGhhdCB3b24ndCB3b3JrIHdpdGgg R0NDIHVubGVzcwotIGNvcnJlY3RlZCBieSBAY29kZXtmaXhpbmNsdWRlc30uICBUaGUgY29y cmVjdGVkIGhlYWRlciBmaWxlcyBnbyBpbiBhIG5ldwotIGRpcmVjdG9yeTsgR0NDIHNlYXJj aGVzIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBAZmlsZXsvdXNyL2luY2x1ZGV9LgotIElmIHlv dSB1c2UgQG9wdGlvbnstSS91c3IvaW5jbHVkZX0sIHRoaXMgdGVsbHMgR0NDIHRvIHNlYXJj aAotIEBmaWxley91c3IvaW5jbHVkZX0gZWFybGllciBvbiwgYmVmb3JlIHRoZSBjb3JyZWN0 ZWQgaGVhZGVycy4gIFRoZQotIHJlc3VsdCBpcyB0aGF0IHlvdSBnZXQgdGhlIHVuY29ycmVj dGVkIGhlYWRlciBmaWxlcy4KLSAKLSBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSB0aGVzZSBv cHRpb25zICh3aGVuIGNvbXBpbGluZyBDIHByb2dyYW1zKToKLSAKLSBAc21hbGxleGFtcGxl Ci0gLUkvdXNyL2xvY2FsL2xpYi9nY2MtbGliL0B2YXJ7dGFyZ2V0fS9AdmFye3ZlcnNpb259 L2luY2x1ZGUgLUkvdXNyL2luY2x1ZGUKLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIEZvciBD KysgcHJvZ3JhbXMsIEdDQyBhbHNvIHVzZXMgYSBzcGVjaWFsIGRpcmVjdG9yeSB0aGF0IGRl ZmluZXMgQysrCi0gaW50ZXJmYWNlcyB0byBzdGFuZGFyZCBDIHN1YnJvdXRpbmVzLiAgVGhp cyBkaXJlY3RvcnkgaXMgbWVhbnQgdG8gYmUKLSBzZWFyY2hlZCBAZW1waHtiZWZvcmV9IG90 aGVyIHN0YW5kYXJkIGluY2x1ZGUgZGlyZWN0b3JpZXMsIHNvIHRoYXQgaXQKLSB0YWtlcyBw cmVjZWRlbmNlLiAgSWYgeW91IGFyZSBjb21waWxpbmcgQysrIHByb2dyYW1zIGFuZCBzcGVj aWZ5aW5nCi0gaW5jbHVkZSBkaXJlY3RvcmllcyBleHBsaWNpdGx5LCB1c2UgdGhpcyBvcHRp b24gZmlyc3QsIHRoZW4gdGhlIHR3bwotIG9wdGlvbnMgYWJvdmU6Ci0gCi0gQGV4YW1wbGUK LSAtSS91c3IvbG9jYWwvbGliL2crKy1pbmNsdWRlCi0gQGVuZCBleGFtcGxlCi0gCiAgQGln bm9yZQogIEBjaW5kZXggQGNvZGV7dmZvcmt9LCBmb3IgdGhlIFN1bi00CiAgQGl0ZW0KLS0t IDY3MCw2NzUgLS0tLQo= --------------C97CF83838BDB4A83E3E8C81-- From gcc-patches-return-37868-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 13:24:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15775 invoked by alias); 2 Jul 2001 13:24:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15706 invoked from network); 2 Jul 2001 13:23:56 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (137.222.102.57) by sourceware.cygnus.com with SMTP; 2 Jul 2001 13:23:56 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id OAA32363; Mon, 2 Jul 2001 14:23:39 +0100 Message-ID: <3B4075DB.BFD14A00@codesourcery.com> Date: Mon, 02 Jul 2001 14:23:39 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17-14 i686) X-Accept-Language: en MIME-Version: 1.0 To: Jason Merrill CC: Fergus Henderson , gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining References: <3B3F81B7.5727694C@codesourcery.com> <20010702124801.A11282@murlibobo.cs.mu.OZ.AU> <3B406AED.39469753@codesourcery.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Jason Merrill wrote: > > >>>>> "Nathan" == Nathan Sidwell writes: > > > It occurs to me that separate dumps for each phase might not be sensible > > (especially as each optimization might be applied more than once). > > How is this any different from the current RTL dumps? We already have two > cse dumps, and this doesn't cause trouble. It isn't different -- I have no experience with the RTL dumps, so have no opinion on how useable it is. > > -fdump-ast-all > > Do all ast optimization dumps. > > Any reason not to include this in -da? None, but do we want to keep RTL dumps separate from AST dumps? I've no opinion. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-37869-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 13:33:36 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19370 invoked by alias); 2 Jul 2001 13:33:35 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19330 invoked from network); 2 Jul 2001 13:33:32 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 2 Jul 2001 13:33:32 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f62DTup20186; Mon, 2 Jul 2001 14:29:56 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Daniel Berlin Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Add dwarf2.1 namespace support References: <87wv5wmmh7.fsf@cgsoftware.com> From: Jason Merrill In-Reply-To: <87wv5wmmh7.fsf@cgsoftware.com> (Daniel Berlin's message of "Thu, 28 Jun 2001 15:29:56 -0400") Date: 02 Jul 2001 14:29:56 +0100 Message-ID: Lines: 61 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii >>>>> "Daniel" == Daniel Berlin writes: > Note that the toplev.c change is because if we don't do that, we get > namespace decls as the absolute last thing output. I don't see any reason to handle namespaces differently from classes in this respect. I'd prefer to just avoid emitting multiple DIEs for a namespace. Also, we still need to handle namespace aliases, and this seems like the right place. > Doing it that way, instead of generating them when we see something > use them, would require fixing up the scope of literally > everything in a namespace, which would seem to be a very not fun thing > to implement. Agreed, we want to generate the namespace DIE as soon as we try to emit something inside it. > ! /* Handle namespaces properly */ > if (containing_scope && TREE_CODE (containing_scope) == NAMESPACE_DECL) > ! context_die = lookup_decl_die (containing_scope); Perhaps assert that this produces a non-null value? > *************** dwarf2out_decl (decl) > *** 10967,10972 **** > --- 10983,11000 ---- > if (TREE_CODE (decl) == ERROR_MARK) > return; > + if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == NAMESPACE_DECL) > + { > + context_die = lookup_decl_die (DECL_CONTEXT (decl)); > + if (context_die == NULL) > + { > + dwarf2out_decl (DECL_CONTEXT (decl)); > + context_die = lookup_decl_die (DECL_CONTEXT (decl)); > + if (!context_die) > + abort(); > + } > + } > + > /* If this ..._DECL node is marked to be ignored, then ignore it. */ > if (DECL_IGNORED_P (decl)) > return; This code should go in gen_decl_die, like the existing code to force out a containing class. > *************** dwarf2out_decl (decl) > ! case NAMESPACE_DECL: > ! if (debug_info_level <= DINFO_LEVEL_TERSE) > ! return; > ! break; Won't this cause the compiler to abort in the code above? Jason From gcc-patches-return-37870-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 13:37:26 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20355 invoked by alias); 2 Jul 2001 13:37:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20321 invoked from network); 2 Jul 2001 13:37:24 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 2 Jul 2001 13:37:24 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f62DYDF20191; Mon, 2 Jul 2001 14:34:13 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Daniel Berlin Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Revised DWARF2 macro info patch References: <878zicv8hl.fsf@cgsoftware.com> From: Jason Merrill In-Reply-To: <878zicv8hl.fsf@cgsoftware.com> (Daniel Berlin's message of "Thu, 28 Jun 2001 13:07:18 -0400") Date: 02 Jul 2001 14:34:12 +0100 Message-ID: Lines: 4 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii OK, though we might want to omit the start/end for files with no macro definitions. Jason From gcc-patches-return-37871-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:06:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2131 invoked by alias); 2 Jul 2001 14:06:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2003 invoked from network); 2 Jul 2001 14:06:46 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:06:46 -0000 Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA10004; Mon, 2 Jul 2001 07:06:44 -0700 (PDT) Received: (from aoliva@localhost) by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f62E6gY15746; Mon, 2 Jul 2001 11:06:42 -0300 To: "H . J . Lu" Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library References: <20010701105017.A14237@lucon.org> From: Alexandre Oliva Organization: GCC Team, Red Hat Date: 02 Jul 2001 11:06:42 -0300 In-Reply-To: <20010701105017.A14237@lucon.org> ("H . J . Lu"'s message of "Sun, 1 Jul 2001 10:50:17 -0700") Message-ID: Lines: 12 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jul 1, 2001, "H . J . Lu" wrote: > + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then test -e is not portable (IIRC, it breaks at least with Tru64's /bin/sh). Please use test -f instead. -- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ Red Hat GCC Developer aoliva@{cygnus.com, redhat.com} CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} Free Software Evangelist *Please* write to mailing lists, not to me From gcc-patches-return-37872-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:14:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9142 invoked by alias); 2 Jul 2001 14:14:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9040 invoked from network); 2 Jul 2001 14:14:10 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:14:10 -0000 Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA10686; Mon, 2 Jul 2001 07:14:07 -0700 (PDT) Received: (from aoliva@localhost) by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f62EE6s15774; Mon, 2 Jul 2001 11:14:06 -0300 To: "H . J . Lu" Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library References: <20010701105017.A14237@lucon.org> <20010701123357.A18030@nevyn.them.org> <20010701134015.B10426@lucon.org> From: Alexandre Oliva Organization: GCC Team, Red Hat Date: 02 Jul 2001 11:14:06 -0300 In-Reply-To: <20010701134015.B10426@lucon.org> ("H . J . Lu"'s message of "Sun, 1 Jul 2001 13:40:16 -0700") Message-ID: Lines: 68 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jul 1, 2001, "H . J . Lu" wrote: > On Sun, Jul 01, 2001 at 12:33:57PM -0700, Daniel Jacobowitz wrote: >> Some comments.... >> >> > + if test "$build" = "$target"; then >> >> $build = $target is not the right test. I've built cross compilers >> where $build = $target != $host. Sure, it's perverse, but that's life, >> and that's supported. > A few lines above, there is > elif test "$host" != "$target"; then > slibdir='$(build_tooldir)/lib' > else > slibdir='$(libdir)' > if test "$build" = "$target"; then > At this point, $host = $target. When $build = $target != $host, you > are building a cross compiler, slibdir is set to $(build_tooldir)/lib. Would you please add a comment explaining the dependence on the code above and the inferences you're making? This could help the next person who chooses to modify that chunk of code get the whole picture. > SONAME only exists in ELF. the gcc developers have promised that > libgcc_s.so.1 will be here to stay. If there is a libgcc_s.so.2, > we may have a bigger problem than where libgcc_s.so.2 should be > installed. Indeed. > I don't think many people will do > # make install > for a canadian cross build. The possible usage is I'll concede that I'm not a typical user, but I often do it. > # make install prefix=/var/tmp/gcc > # rm -f /var/tmp/gcc/lib/libgcc_s.so > # ln -s ../../lib/libgcc_s.so.1 /var/tmp/gcc/usr/lib/libgcc_s.so How about creating the .so link only inside GCC's internal gcc-lib sub-directory, but having the SONAME file installed in lib? > Why? It only gets installed in $(libsubdir) if there is a system > shared libgcc. I fail to see the point of making this distinction. Isn't your argument that having more than one copy of libgcc_s.so.1 can get the whole system unstable? How does moving it change this fact? There will still be one more copy, and users are likely to add GCC's internal library search path to ld.so.conf as well. For one, that's where the libobjc libraries are installed. For another, that's what they're going to do to make sure they're using the newer copy of libgcc_s.so.1, or just because they had to do it on other OSs that don't have libgcc_s.so.1 in /lib. -- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ Red Hat GCC Developer aoliva@{cygnus.com, redhat.com} CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} Free Software Evangelist *Please* write to mailing lists, not to me From gcc-patches-return-37873-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:25:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12776 invoked by alias); 2 Jul 2001 14:25:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12711 invoked from network); 2 Jul 2001 14:25:05 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:25:05 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15H4dM-0001yu-00 for gcc-patches@gcc.gnu.org; Mon, 02 Jul 2001 15:25:04 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15H4dL-0000Xi-00 for ; Mon, 02 Jul 2001 15:25:03 +0100 Date: Mon, 2 Jul 2001 15:25:03 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Subject: Patch to unify prefix/postfix attributes processing Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII This patch makes the adjustments to c-common code and the C and Objective-C compilers to pass a single list of attributes to declarations rather than distinguishing prefix and postfix attributes. It doesn't make the corresponding changes through the C++ compiler, beyond those needed to handle the interface changes on common code, since I think Mark is doing this as part of the new parser work. Testcases (C and C++) are included for a bug this incidentally fixes. Bootstrapped with no regressions on i686-pc-linux-gnu. OK to commit? 2001-07-02 Joseph S. Myers * c-common.c (decl_attributes): Only take a single attributes parameter. * c-common.h (decl_attributes): Update prototype. * c-decl.c (start_decl, start_function): Only take a single attributes parameter. Update calls to decl_attributes. (finish_struct, finish_enum): Update calls to decl_attributes. (push_parm_decl): Expect unified list of attributes. Update call to decl_attributes. * c-parse.in (fndef, initdcl, notype_initdcl, nested_function, notype_nested_function, component_declarator, component_notype_declarator, label): Update calls to decl_attributes. (absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute lists that are passed to push_parm_decl. * c-tree.h (start_function, start_decl): Update prototypes. * config/sh/sh-protos.h, config/sh/sh.c (sh_pragma_insert_attributes): Only take a single attributes parameter. * config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise. * doc/tm.texi (INSERT_ATTRIBUTES): Update. * objc/objc-act.c (define_decl, generate_objc_symtab_decl, build_module_descriptor, generate_static_references, generate_strings, build_selector_translation_table, generate_descriptor_table, generate_protocols, generate_ivars_list, generate_dispatch_table, generate_protocol_list, generate_category, generate_shared_structures, really_start_method, add_objc_decls, generate_classref_translation_entry): Update calls to start_decl and start_function. (build_tmp_function_decl, start_method_def): Unify attribute lists that are passed to push_parm_decl. cp: 2001-07-02 Joseph S. Myers * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update calls to decl_attributes. testsuite: 2001-07-02 Joseph S. Myers * gcc.c-torture/compile/20010701-1.c, g++.old-deja/g++.ext/attrib6.C: New tests. diff -rupN gcc.orig/c-common.c gcc/c-common.c --- gcc.orig/c-common.c Fri Jun 22 19:13:21 2001 +++ gcc/c-common.c Fri Jun 29 23:36:02 2001 @@ -722,14 +722,12 @@ default_valid_lang_attribute (attr_name, int (*valid_lang_attribute) PARAMS ((tree, tree, tree, tree)) = default_valid_lang_attribute; -/* Process the attributes listed in ATTRIBUTES and PREFIX_ATTRIBUTES - and install them in NODE, which is either a DECL (including a TYPE_DECL) - or a TYPE. PREFIX_ATTRIBUTES can appear after the declaration specifiers - and declaration modifiers but before the declaration proper. */ +/* Process the attributes listed in ATTRIBUTES and install them in NODE, + which is either a DECL (including a TYPE_DECL) or a TYPE. */ void -decl_attributes (node, attributes, prefix_attributes) - tree node, attributes, prefix_attributes; +decl_attributes (node, attributes) + tree node, attributes; { tree decl = 0, type = 0; int is_type = 0; @@ -752,14 +750,12 @@ decl_attributes (node, attributes, prefi allow it to do so. Do this before allowing machine back ends to insert attributes, so that they have the opportunity to override anything done here. */ - PRAGMA_INSERT_ATTRIBUTES (node, & attributes, & prefix_attributes); + PRAGMA_INSERT_ATTRIBUTES (node, & attributes); #endif #ifdef INSERT_ATTRIBUTES - INSERT_ATTRIBUTES (node, & attributes, & prefix_attributes); + INSERT_ATTRIBUTES (node, & attributes); #endif - - attributes = chainon (prefix_attributes, attributes); for (a = attributes; a; a = TREE_CHAIN (a)) { diff -rupN gcc.orig/c-common.h gcc/c-common.h --- gcc.orig/c-common.h Tue Jun 19 11:16:20 2001 +++ gcc/c-common.h Fri Jun 29 23:36:14 2001 @@ -485,7 +485,7 @@ extern void finish_fname_decls PARAMS extern const char *fname_as_string PARAMS ((int)); extern tree fname_decl PARAMS ((unsigned, tree)); extern const char *fname_string PARAMS ((unsigned)); -extern void decl_attributes PARAMS ((tree, tree, tree)); +extern void decl_attributes PARAMS ((tree, tree)); extern void init_function_format_info PARAMS ((void)); extern void check_function_format PARAMS ((int *, tree, tree, tree)); extern void set_Wformat PARAMS ((int)); diff -rupN gcc.orig/c-decl.c gcc/c-decl.c --- gcc.orig/c-decl.c Tue Jun 26 19:14:53 2001 +++ gcc/c-decl.c Mon Jul 2 13:00:03 2001 @@ -3336,10 +3336,10 @@ groktypename_in_parm_context (typename) grokfield and not through here. */ tree -start_decl (declarator, declspecs, initialized, attributes, prefix_attributes) +start_decl (declarator, declspecs, initialized, attributes) tree declarator, declspecs; int initialized; - tree attributes, prefix_attributes; + tree attributes; { register tree decl = grokdeclarator (declarator, declspecs, NORMAL, initialized); @@ -3452,7 +3452,7 @@ start_decl (declarator, declspecs, initi #endif /* Set attributes here so if duplicate decl, will have proper attributes. */ - decl_attributes (decl, attributes, prefix_attributes); + decl_attributes (decl, attributes); /* Add this decl to the current binding level. TEM may equal DECL or it may be a previous decl of the same name. */ @@ -3716,8 +3716,7 @@ push_parm_decl (parm) decl = grokdeclarator (TREE_VALUE (TREE_PURPOSE (parm)), TREE_PURPOSE (TREE_PURPOSE (parm)), PARM, 0); - decl_attributes (decl, TREE_VALUE (TREE_VALUE (parm)), - TREE_PURPOSE (TREE_VALUE (parm))); + decl_attributes (decl, TREE_VALUE (parm)); #if 0 if (DECL_NAME (decl)) @@ -5345,7 +5344,7 @@ finish_struct (t, fieldlist, attributes) TYPE_SIZE (t) = 0; - decl_attributes (t, attributes, NULL_TREE); + decl_attributes (t, attributes); /* Nameless union parm types are useful as GCC extension. */ if (! (TREE_CODE (t) == UNION_TYPE && TYPE_NAME (t) == 0) && !pedantic) @@ -5709,7 +5708,7 @@ finish_enum (enumtype, values, attribute if (in_parm_level_p ()) warning ("enum defined inside parms"); - decl_attributes (enumtype, attributes, NULL_TREE); + decl_attributes (enumtype, attributes); /* Calculate the maximum value of any enumerator in this type. */ @@ -5893,7 +5892,7 @@ build_enumerator (name, value) /* Create the FUNCTION_DECL for a function definition. - DECLSPECS, DECLARATOR, PREFIX_ATTRIBUTES and ATTRIBUTES are the parts of + DECLSPECS, DECLARATOR and ATTRIBUTES are the parts of the declaration; they describe the function's name and the type it returns, but twisted together in a fashion that parallels the syntax of C. @@ -5905,8 +5904,8 @@ build_enumerator (name, value) yyparse to report a parse error. */ int -start_function (declspecs, declarator, prefix_attributes, attributes) - tree declarator, declspecs, prefix_attributes, attributes; +start_function (declspecs, declarator, attributes) + tree declarator, declspecs, attributes; { tree decl1, old_decl; tree restype; @@ -5933,7 +5932,7 @@ start_function (declspecs, declarator, p return 0; } - decl_attributes (decl1, prefix_attributes, attributes); + decl_attributes (decl1, attributes); announce_function (decl1); diff -rupN gcc.orig/c-parse.in gcc/c-parse.in --- gcc.orig/c-parse.in Sun Jun 10 14:00:56 2001 +++ gcc/c-parse.in Mon Jul 2 12:58:52 2001 @@ -383,7 +383,7 @@ datadef: fndef: declspecs_ts setspecs declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE)) + prefix_attributes)) YYERROR1; } old_style_parm_decls @@ -401,7 +401,7 @@ fndef: declspec_stack = TREE_CHAIN (declspec_stack); } | declspecs_nots setspecs notype_declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE)) + prefix_attributes)) YYERROR1; } old_style_parm_decls @@ -419,7 +419,7 @@ fndef: declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator { if (! start_function (NULL_TREE, $2, - prefix_attributes, NULL_TREE)) + prefix_attributes)) YYERROR1; } old_style_parm_decls @@ -1440,7 +1440,7 @@ maybeasm: initdcl: declarator maybeasm maybe_attribute '=' { $$ = start_decl ($1, current_declspecs, 1, - $3, prefix_attributes); + chainon ($3, prefix_attributes)); start_init ($$, $2, global_bindings_p ()); } init /* Note how the declaration of the variable is in effect while its init is parsed! */ @@ -1448,7 +1448,7 @@ initdcl: finish_decl ($5, $6, $2); } | declarator maybeasm maybe_attribute { tree d = start_decl ($1, current_declspecs, 0, - $3, prefix_attributes); + chainon ($3, prefix_attributes)); finish_decl (d, NULL_TREE, $2); } ; @@ -1456,7 +1456,7 @@ initdcl: notype_initdcl: notype_declarator maybeasm maybe_attribute '=' { $$ = start_decl ($1, current_declspecs, 1, - $3, prefix_attributes); + chainon ($3, prefix_attributes)); start_init ($$, $2, global_bindings_p ()); } init /* Note how the declaration of the variable is in effect while its init is parsed! */ @@ -1464,7 +1464,7 @@ notype_initdcl: finish_decl ($5, $6, $2); } | notype_declarator maybeasm maybe_attribute { tree d = start_decl ($1, current_declspecs, 0, - $3, prefix_attributes); + chainon ($3, prefix_attributes)); finish_decl (d, NULL_TREE, $2); } ; /* the * rules are dummies to accept the Apollo extended syntax @@ -1598,7 +1598,7 @@ nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE)) + prefix_attributes)) { pop_function_context (); YYERROR1; @@ -1628,7 +1628,7 @@ notype_nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE)) + prefix_attributes)) { pop_function_context (); YYERROR1; @@ -1900,27 +1900,27 @@ components_notype: component_declarator: save_filename save_lineno declarator maybe_attribute { $$ = grokfield ($1, $2, $3, current_declspecs, NULL_TREE); - decl_attributes ($$, $4, prefix_attributes); } + decl_attributes ($$, chainon ($4, prefix_attributes)); } | save_filename save_lineno declarator ':' expr_no_commas maybe_attribute { $$ = grokfield ($1, $2, $3, current_declspecs, $5); - decl_attributes ($$, $6, prefix_attributes); } + decl_attributes ($$, chainon ($6, prefix_attributes)); } | save_filename save_lineno ':' expr_no_commas maybe_attribute { $$ = grokfield ($1, $2, NULL_TREE, current_declspecs, $4); - decl_attributes ($$, $5, prefix_attributes); } + decl_attributes ($$, chainon ($5, prefix_attributes)); } ; component_notype_declarator: save_filename save_lineno notype_declarator maybe_attribute { $$ = grokfield ($1, $2, $3, current_declspecs, NULL_TREE); - decl_attributes ($$, $4, prefix_attributes); } + decl_attributes ($$, chainon ($4, prefix_attributes)); } | save_filename save_lineno notype_declarator ':' expr_no_commas maybe_attribute { $$ = grokfield ($1, $2, $3, current_declspecs, $5); - decl_attributes ($$, $6, prefix_attributes); } + decl_attributes ($$, chainon ($6, prefix_attributes)); } | save_filename save_lineno ':' expr_no_commas maybe_attribute { $$ = grokfield ($1, $2, NULL_TREE, current_declspecs, $4); - decl_attributes ($$, $5, prefix_attributes); } + decl_attributes ($$, chainon ($5, prefix_attributes)); } ; /* We chain the enumerators in reverse order. @@ -1970,18 +1970,15 @@ absdcl_maybe_attribute: /* absdcl mayb /* empty */ { $$ = build_tree_list (build_tree_list (current_declspecs, NULL_TREE), - build_tree_list (prefix_attributes, - NULL_TREE)); } + prefix_attributes); } | absdcl1 { $$ = build_tree_list (build_tree_list (current_declspecs, $1), - build_tree_list (prefix_attributes, - NULL_TREE)); } + prefix_attributes); } | absdcl1_noea attributes { $$ = build_tree_list (build_tree_list (current_declspecs, $1), - build_tree_list (prefix_attributes, - $2)); } + chainon ($2, prefix_attributes)); } ; absdcl1: /* a nonempty absolute declarator */ @@ -2454,7 +2451,7 @@ label: CASE expr_no_commas ':' stmt_count++; if (label) { - decl_attributes (label, $5, NULL_TREE); + decl_attributes (label, $5); $$ = add_stmt (build_stmt (LABEL_STMT, label)); } else @@ -2571,16 +2568,14 @@ parm: declspecs_ts setspecs parm_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } | declspecs_ts setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } @@ -2592,8 +2587,7 @@ parm: | declspecs_nots setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } @@ -2611,16 +2605,14 @@ firstparm: declspecs_ts_nosa setspecs_fp parm_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } | declspecs_ts_nosa setspecs_fp notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } @@ -2632,8 +2624,7 @@ firstparm: | declspecs_nots_nosa setspecs_fp notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), - build_tree_list (prefix_attributes, - $4)); + chainon ($4, prefix_attributes)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); } @@ -3117,13 +3108,11 @@ myparm: parm_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $1), - build_tree_list (prefix_attributes, - $2)); } + chainon ($2, prefix_attributes)); } | notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $1), - build_tree_list (prefix_attributes, - $2)); } + chainon ($2, prefix_attributes)); } | absdcl_maybe_attribute { $$ = $1; } ; diff -rupN gcc.orig/c-tree.h gcc/c-tree.h --- gcc.orig/c-tree.h Tue Jun 5 07:05:17 2001 +++ gcc/c-tree.h Fri Jun 29 23:46:09 2001 @@ -207,10 +207,9 @@ extern void shadow_record_fields extern void shadow_tag PARAMS ((tree)); extern void shadow_tag_warned PARAMS ((tree, int)); extern tree start_enum PARAMS ((tree)); -extern int start_function PARAMS ((tree, tree, tree, - tree)); +extern int start_function PARAMS ((tree, tree, tree)); extern tree start_decl PARAMS ((tree, tree, int, - tree, tree)); + tree)); extern tree start_struct PARAMS ((enum tree_code, tree)); extern void store_parm_decls PARAMS ((void)); extern tree xref_tag PARAMS ((enum tree_code, tree)); diff -rupN gcc.orig/config/sh/sh-protos.h gcc/config/sh/sh-protos.h --- gcc.orig/config/sh/sh-protos.h Tue Jun 26 19:14:59 2001 +++ gcc/config/sh/sh-protos.h Sat Jun 30 00:14:55 2001 @@ -105,7 +105,7 @@ extern rtx sh_va_arg PARAMS ((tree, tree #endif /* RTX_CODE */ #ifdef TREE_CODE -extern void sh_pragma_insert_attributes PARAMS ((tree, tree *, tree *)); +extern void sh_pragma_insert_attributes PARAMS ((tree, tree *)); extern tree sh_build_va_list PARAMS ((void)); #endif /* TREE_CODE */ diff -rupN gcc.orig/config/sh/sh.c gcc/config/sh/sh.c --- gcc.orig/config/sh/sh.c Tue Jun 26 19:14:59 2001 +++ gcc/config/sh/sh.c Sat Jun 30 00:15:09 2001 @@ -4602,10 +4602,9 @@ sh_pr_nosave_low_regs (pfile) /* Generate 'handle_interrupt' attribute for decls */ void -sh_pragma_insert_attributes (node, attributes, prefix) +sh_pragma_insert_attributes (node, attributes) tree node; tree * attributes; - tree * prefix ATTRIBUTE_UNUSED; { if (! pragma_interrupt || TREE_CODE (node) != FUNCTION_DECL) diff -rupN gcc.orig/config/sh/sh.h gcc/config/sh/sh.h --- gcc.orig/config/sh/sh.h Tue Jun 26 19:14:59 2001 +++ gcc/config/sh/sh.h Sat Jun 30 00:14:47 2001 @@ -2298,8 +2298,8 @@ extern int current_function_interrupt; for interrupt functions. */ extern struct rtx_def *sp_switch; -#define PRAGMA_INSERT_ATTRIBUTES(node, pattr, prefix_attr) \ - sh_pragma_insert_attributes (node, pattr, prefix_attr) +#define PRAGMA_INSERT_ATTRIBUTES(node, pattr) \ + sh_pragma_insert_attributes (node, pattr) extern int rtx_equal_function_value_matters; extern struct rtx_def *fpscr_rtx; diff -rupN gcc.orig/cp/decl.c gcc/cp/decl.c --- gcc.orig/cp/decl.c Tue Jun 26 19:15:01 2001 +++ gcc/cp/decl.c Sat Jun 30 00:08:59 2001 @@ -10468,7 +10468,7 @@ grokdeclarator (declarator, declspecs, d ignore_attrs = 0; else if (inner_attrs) { - decl_attributes (type, inner_attrs, NULL_TREE); + decl_attributes (type, inner_attrs); inner_attrs = NULL_TREE; } @@ -10987,7 +10987,7 @@ grokdeclarator (declarator, declspecs, d if (inner_attrs) { if (! ignore_attrs) - decl_attributes (type, inner_attrs, NULL_TREE); + decl_attributes (type, inner_attrs); else if (attrlist) TREE_VALUE (attrlist) = chainon (inner_attrs, TREE_VALUE (attrlist)); else diff -rupN gcc.orig/cp/decl2.c gcc/cp/decl2.c --- gcc.orig/cp/decl2.c Wed Jun 27 07:19:06 2001 +++ gcc/cp/decl2.c Sat Jun 30 00:13:15 2001 @@ -1884,7 +1884,7 @@ cplus_decl_attributes (decl, attributes, if (TREE_CODE (decl) == TEMPLATE_DECL) decl = DECL_TEMPLATE_RESULT (decl); - decl_attributes (decl, attributes, prefix_attributes); + decl_attributes (decl, chainon (attributes, prefix_attributes)); if (TREE_CODE (decl) == TYPE_DECL) SET_IDENTIFIER_TYPE_VALUE (DECL_NAME (decl), TREE_TYPE (decl)); diff -rupN gcc.orig/doc/tm.texi gcc/doc/tm.texi --- gcc.orig/doc/tm.texi Fri Jun 29 16:53:21 2001 +++ gcc/doc/tm.texi Sat Jun 30 07:08:39 2001 @@ -8341,15 +8341,17 @@ in @file{i386/cygwin.h} and @file{i386/i @table @code @findex INSERT_ATTRIBUTES -@item INSERT_ATTRIBUTES (@var{node}, @var{attr_ptr}, @var{prefix_ptr}) +@item INSERT_ATTRIBUTES (@var{node}, @var{attr_ptr}) Define this macro if you want to be able to add attributes to a decl when it is being created. This is normally useful for back ends which wish to implement a pragma by using the attributes which correspond to the pragma's effect. The @var{node} argument is the decl which is being created. The @var{attr_ptr} argument is a pointer to the attribute list -for this decl. The @var{prefix_ptr} is a pointer to the list of -attributes that have appeared after the specifiers and modifiers of the -declaration, but before the declaration proper. +for this decl. The list itself should not be modified, since it may be +shared with other decls, but attributes may be chained on the head of +the list and @code{*@var{attr_ptr}} modified to point to the new +attributes, or a copy of the list may be made if further changes are +needed. @findex SET_DEFAULT_DECL_ATTRIBUTES @item SET_DEFAULT_DECL_ATTRIBUTES (@var{decl}, @var{attributes}) diff -rupN gcc.orig/objc/objc-act.c gcc/objc/objc-act.c --- gcc.orig/objc/objc-act.c Thu Jun 28 07:20:27 2001 +++ gcc/objc/objc-act.c Mon Jul 2 13:02:57 2001 @@ -852,7 +852,7 @@ define_decl (declarator, declspecs) tree declarator; tree declspecs; { - tree decl = start_decl (declarator, declspecs, 0, NULL_TREE, NULL_TREE); + tree decl = start_decl (declarator, declspecs, 0, NULL_TREE); finish_decl (decl, NULL_TREE, NULL_TREE); return decl; } @@ -1753,7 +1753,7 @@ generate_objc_symtab_decl () tree_cons (NULL_TREE, objc_symtab_template, sc_spec), 1, - NULL_TREE, NULL_TREE); + NULL_TREE); TREE_USED (UOBJC_SYMBOLS_decl) = 1; DECL_IGNORED_P (UOBJC_SYMBOLS_decl) = 1; @@ -1853,7 +1853,7 @@ build_module_descriptor () ridpointers[(int) RID_STATIC])); UOBJC_MODULES_decl = start_decl (get_identifier ("_OBJC_MODULES"), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); DECL_ARTIFICIAL (UOBJC_MODULES_decl) = 1; DECL_IGNORED_P (UOBJC_MODULES_decl) = 1; @@ -1910,7 +1910,7 @@ build_module_descriptor () tree_cons (NULL_TREE, NULL_TREE, void_list_node_1), NULL_TREE), - NULL_TREE, NULL_TREE); + NULL_TREE); #if 0 /* This should be turned back on later for the systems where collect is not needed. */ /* Make these functions nonglobal @@ -2003,7 +2003,7 @@ generate_static_references () decl_spec = tree_cons (NULL_TREE, build_pointer_type (void_type_node), build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC])); - decl = start_decl (expr_decl, decl_spec, 1, NULL_TREE, NULL_TREE); + decl = start_decl (expr_decl, decl_spec, 1, NULL_TREE); DECL_CONTEXT (decl) = 0; DECL_ARTIFICIAL (decl) = 1; @@ -2043,7 +2043,7 @@ generate_static_references () build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC])); static_instances_decl - = start_decl (expr_decl, decl_spec, 1, NULL_TREE, NULL_TREE); + = start_decl (expr_decl, decl_spec, 1, NULL_TREE); TREE_USED (static_instances_decl) = 1; DECL_CONTEXT (static_instances_decl) = 0; DECL_ARTIFICIAL (static_instances_decl) = 1; @@ -2069,7 +2069,7 @@ generate_strings () = tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE); decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec); expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE); - decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE); + decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1, IDENTIFIER_POINTER (string)); @@ -2084,7 +2084,7 @@ generate_strings () = tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE); decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec); expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE); - decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE); + decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1, IDENTIFIER_POINTER (string)); @@ -2099,7 +2099,7 @@ generate_strings () = tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE); decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec); expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE); - decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE); + decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1, IDENTIFIER_POINTER (string)); @@ -2172,7 +2172,7 @@ build_selector_translation_table () /* The `decl' that is returned from start_decl is the one that we forward declared in `build_selector_reference' */ - decl = start_decl (var_decl, decl_specs, 1, NULL_TREE, NULL_TREE); + decl = start_decl (var_decl, decl_specs, 1, NULL_TREE ); } /* add one for the '\0' character */ @@ -2967,7 +2967,7 @@ generate_descriptor_table (type, name, s decl_specs = tree_cons (NULL_TREE, type, sc_spec); decl = start_decl (synth_id_with_class_suffix (name, proto), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; initlist = build_tree_list (NULL_TREE, build_int_2 (size, 0)); @@ -3060,14 +3060,14 @@ build_tmp_function_decl () (build_tree_list (decl_specs, build1 (INDIRECT_REF, NULL_TREE, NULL_TREE)), - build_tree_list (NULL_TREE, NULL_TREE))); + NULL_TREE)); decl_specs = build_tree_list (NULL_TREE, xref_tag (RECORD_TYPE, get_identifier (TAG_SELECTOR))); expr_decl = build1 (INDIRECT_REF, NULL_TREE, NULL_TREE); push_parm_decl (build_tree_list (build_tree_list (decl_specs, expr_decl), - build_tree_list (NULL_TREE, NULL_TREE))); + NULL_TREE)); parms = get_parm_info (0); poplevel (0, 0, 0); @@ -3223,7 +3223,7 @@ generate_protocols () decl_specs = tree_cons (NULL_TREE, objc_protocol_template, sc_spec); decl = start_decl (synth_id_with_class_suffix ("_OBJC_PROTOCOL", p), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; @@ -3929,7 +3929,7 @@ generate_ivars_list (type, name, size, l decl_specs = tree_cons (NULL_TREE, type, sc_spec); decl = start_decl (synth_id_with_class_suffix (name, implementation_context), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); initlist = build_tree_list (NULL_TREE, build_int_2 (size, 0)); initlist = tree_cons (NULL_TREE, list, initlist); @@ -4094,7 +4094,7 @@ generate_dispatch_table (type, name, siz decl_specs = tree_cons (NULL_TREE, type, sc_spec); decl = start_decl (synth_id_with_class_suffix (name, implementation_context), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); initlist = build_tree_list (NULL_TREE, build_int_2 (0, 0)); initlist = tree_cons (NULL_TREE, build_int_2 (size, 0), initlist); @@ -4252,7 +4252,7 @@ generate_protocol_list (i_or_p) expr_decl = build1 (INDIRECT_REF, NULL_TREE, expr_decl); - refs_decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE); + refs_decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE); DECL_CONTEXT (refs_decl) = NULL_TREE; finish_decl (refs_decl, build_constructor (TREE_TYPE (refs_decl), @@ -4462,7 +4462,7 @@ generate_category (cat) decl = start_decl (synth_id_with_class_suffix ("_OBJC_CATEGORY", implementation_context), - decl_specs, 1, NULL_TREE, NULL_TREE); + decl_specs, 1, NULL_TREE); initlist = build_category_initializer (TREE_TYPE (decl), cat_name_expr, class_name_expr, @@ -4545,7 +4545,7 @@ generate_shared_structures () decl_specs = tree_cons (NULL_TREE, objc_class_template, sc_spec); decl = start_decl (DECL_NAME (UOBJC_METACLASS_decl), decl_specs, 1, - NULL_TREE, NULL_TREE); + NULL_TREE); initlist = build_shared_structure_initializer @@ -4562,7 +4562,7 @@ generate_shared_structures () /* static struct objc_class _OBJC_CLASS_Foo={ ... }; */ decl = start_decl (DECL_NAME (UOBJC_CLASS_decl), decl_specs, 1, - NULL_TREE, NULL_TREE); + NULL_TREE); initlist = build_shared_structure_initializer @@ -6953,7 +6953,7 @@ start_method_def (method) push_parm_decl (build_tree_list (build_tree_list (decl_specs, build1 (INDIRECT_REF, NULL_TREE, self_id)), - build_tree_list (unused_list, NULL_TREE))); + unused_list)); decl_specs = build_tree_list (NULL_TREE, xref_tag (RECORD_TYPE, @@ -6961,7 +6961,7 @@ start_method_def (method) push_parm_decl (build_tree_list (build_tree_list (decl_specs, build1 (INDIRECT_REF, NULL_TREE, ucmd_id)), - build_tree_list (unused_list, NULL_TREE))); + unused_list)); /* Generate argument declarations if a keyword_decl. */ if (METHOD_SEL_ARGS (method)) @@ -6980,7 +6980,7 @@ start_method_def (method) TREE_OPERAND (last_expr, 0) = KEYWORD_ARG_NAME (arglist); push_parm_decl (build_tree_list (build_tree_list (arg_spec, arg_decl), - build_tree_list (NULL_TREE, NULL_TREE))); + NULL_TREE)); /* Unhook: restore the abstract declarator. */ TREE_OPERAND (last_expr, 0) = NULL_TREE; @@ -6990,7 +6990,7 @@ start_method_def (method) push_parm_decl (build_tree_list (build_tree_list (arg_spec, KEYWORD_ARG_NAME (arglist)), - build_tree_list (NULL_TREE, NULL_TREE))); + NULL_TREE)); arglist = TREE_CHAIN (arglist); } @@ -7133,7 +7133,7 @@ really_start_method (method, parmlist) method_decl = ret_decl; /* Fool the parser into thinking it is starting a function. */ - start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE); + start_function (decl_specs, method_decl, NULL_TREE); /* Unhook: this has the effect of restoring the abstract declarator. */ TREE_OPERAND (save_expr, 0) = NULL_TREE; @@ -7144,7 +7144,7 @@ really_start_method (method, parmlist) TREE_VALUE (TREE_TYPE (method)) = method_decl; /* Fool the parser into thinking it is starting a function. */ - start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE); + start_function (decl_specs, method_decl, NULL_TREE); /* Unhook: this has the effect of restoring the abstract declarator. */ TREE_VALUE (TREE_TYPE (method)) = NULL_TREE; @@ -7210,7 +7210,7 @@ add_objc_decls () UOBJC_SUPER_decl = start_decl (get_identifier (UTAG_SUPER), build_tree_list (NULL_TREE, objc_super_template), - 0, NULL_TREE, NULL_TREE); + 0, NULL_TREE); finish_decl (UOBJC_SUPER_decl, NULL_TREE, NULL_TREE); @@ -8342,7 +8342,7 @@ generate_classref_translation_entry (cha /* The decl that is returned from start_decl is the one that we forward declared in build_class_reference. */ - decl = start_decl (name, decl_specs, 1, NULL_TREE, NULL_TREE); + decl = start_decl (name, decl_specs, 1, NULL_TREE); DECL_CONTEXT (decl) = NULL_TREE; finish_decl (decl, expr, NULL_TREE); return; diff -rupN gcc.orig/testsuite/g++.old-deja/g++.ext/attrib6.C gcc/testsuite/g++.old-deja/g++.ext/attrib6.C --- gcc.orig/testsuite/g++.old-deja/g++.ext/attrib6.C Thu Jan 1 00:00:00 1970 +++ gcc/testsuite/g++.old-deja/g++.ext/attrib6.C Sun Jul 1 15:19:44 2001 @@ -0,0 +1,6 @@ +// Test that postfix attributes only apply to a single declared object. +// (decl_attributes used to chain them onto the end of the prefix attributes, +// which caused them to apply to other declarations as well.) +// Origin: Joseph Myers . +// Build don't link: +void __attribute__((__noreturn__)) foo (const char *, ...) __attribute__((__format__(__printf__, 1, 2))), bar (void); diff -rupN gcc.orig/testsuite/gcc.c-torture/compile/20010701-1.c gcc/testsuite/gcc.c-torture/compile/20010701-1.c --- gcc.orig/testsuite/gcc.c-torture/compile/20010701-1.c Thu Jan 1 00:00:00 1970 +++ gcc/testsuite/gcc.c-torture/compile/20010701-1.c Sun Jul 1 15:16:28 2001 @@ -0,0 +1,5 @@ +/* Test that postfix attributes only apply to a single declared object. + (decl_attributes used to chain them onto the end of the prefix attributes, + which caused them to apply to other declarations as well.) */ +/* Origin: Joseph Myers . */ +void __attribute__((__noreturn__)) foo (const char *, ...) __attribute__((__format__(__printf__, 1, 2))), bar (void); -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37874-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:31:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15102 invoked by alias); 2 Jul 2001 14:31:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15068 invoked from network); 2 Jul 2001 14:31:03 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:31:03 -0000 Received: from localhost.localdomain (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA12031 for ; Mon, 2 Jul 2001 07:31:01 -0700 (PDT) Received: from localhost.localdomain (law@localhost) by localhost.localdomain (8.11.0/8.11.0) with ESMTP id f62ETl829234; Mon, 2 Jul 2001 07:29:47 -0700 X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4 To: Nathan Sidwell cc: Fergus Henderson , gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining Reply-To: law@redhat.com From: law@redhat.com In-reply-to: Your message of Mon, 02 Jul 2001 13:37:01 +0100. <3B406AED.39469753@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 07:29:46 -0700 Message-ID: <29233.994084186@localhost.localdomain> In message <3B406AED.39469753@codesourcery.com>you write: > Fergus Henderson wrote: > > I think it would be nicer to put the documentation of `inlined' > > before the documentation for `optimized', i.e. to list the different > > stages in cronological order. > I don't think that possible, in general. Consider some constant > propagation/unreachable code optimization. You'd want to run that both > before and after inlining I guess. Right. You want to run cprop before inlining to clean up any sillyness and propagate constants to call sites. You can to run cprop after inlining to take advantage of any inlinable call sites where one or more arguments is a constant. jeff From gcc-patches-return-37875-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:37:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19718 invoked by alias); 2 Jul 2001 14:37:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19674 invoked from network); 2 Jul 2001 14:37:27 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:37:27 -0000 Received: from localhost.localdomain (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA13090 for ; Mon, 2 Jul 2001 07:37:25 -0700 (PDT) Received: from localhost.localdomain (law@localhost) by localhost.localdomain (8.11.0/8.11.0) with ESMTP id f62EaEs29291; Mon, 2 Jul 2001 07:36:15 -0700 X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4 To: Andreas Jaeger cc: gcc-patches@gcc.gnu.org Subject: Re: Fix warnings in ssa-dce.c Reply-To: law@redhat.com From: law@redhat.com In-reply-to: Your message of Sun, 01 Jul 2001 20:01:41 +0200. Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 07:36:14 -0700 Message-ID: <29290.994084574@localhost.localdomain> In message you write: > > I just got on i686-linux the following warnings: > /cvs/gcc/gcc/ssa-dce.c: In function `note_inherently_necessary_set': > /cvs/gcc/gcc/ssa-dce.c:340: warning: unused parameter `set' > /cvs/gcc/gcc/ssa-dce.c: In function `find_inherently_necessary': > /cvs/gcc/gcc/ssa-dce.c:367: warning: unused variable `pattern' > > Ok to commit the appended patch? It passed bootstrap on i686-linux. > > Andreas > > 2001-07-01 Andreas Jaeger > > * ssa-dce.c (note_inherently_necessary_set): Add unused attribute. > (find_inherently_necessary): Remove unused variable. Approved. Sorry for letting those slip by. I've been trying to keep the code I'm twiddling warning-free. jeff From gcc-patches-return-37876-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:39:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20864 invoked by alias); 2 Jul 2001 14:39:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20821 invoked from network); 2 Jul 2001 14:38:59 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:38:59 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f62EctI15048 for ; Mon, 2 Jul 2001 16:38:56 +0200 (MET DST) Date: Mon, 2 Jul 2001 16:38:56 +0200 (CEST) From: Gerald Pfeifer To: Subject: PATCH: Remove CVS $Id$ from doc/install.texi Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII I installed the following on both branches. Gerald 2001-07-02 Gerald Pfeifer * doc/install.texi: Remove CVS Id. Index: doc/install.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/install.texi,v retrieving revision 1.1.2.35 diff -u -3 -p -r1.1.2.35 install.texi --- install.texi 2001/06/27 15:08:24 1.1.2.35 +++ install.texi 2001/07/02 11:58:37 @@ -33,7 +33,6 @@ @settitle Installing GCC: Binaries @end ifset -@comment $Id: install.texi,v 1.1.2.35 2001/06/27 15:08:24 jsm28 Exp $ @c Copyright (C) 2001 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com From gcc-patches-return-37877-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 14:50:18 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30526 invoked by alias); 2 Jul 2001 14:50:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30501 invoked from network); 2 Jul 2001 14:50:16 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 2 Jul 2001 14:50:16 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f62EoBI15286 for ; Mon, 2 Jul 2001 16:50:11 +0200 (MET DST) Date: Mon, 2 Jul 2001 16:50:11 +0200 (CEST) From: Gerald Pfeifer To: Subject: PATCH: Properly refer to GCC on our main page Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Installed. Gerald (backlog nearly cleared) Index: index.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v retrieving revision 1.253 diff -u -3 -p -r1.253 index.html --- index.html 2001/06/18 13:07:59 1.253 +++ index.html 2001/07/02 14:49:13 @@ -154,12 +154,12 @@ maintain and improve quality.
    June 18, 2001
    -gcc-3.0 has been released. +GCC 3.0 has been released.
    March 16, 2001
    -gcc-2.95.3 has been released. +GCC 2.95.3 has been released.
    February 12, 2001
    From gcc-patches-return-37878-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:04:19 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 3075 invoked by alias); 2 Jul 2001 15:04:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3054 invoked from network); 2 Jul 2001 15:04:18 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:04:18 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f62F4E411623; Mon, 2 Jul 2001 08:04:14 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 08:04:14 -0700 Date: Mon, 2 Jul 2001 08:04:14 -0700 From: "Zack Weinberg" To: Richard.Earnshaw@arm.com Cc: gcc-patches@gcc.gnu.org Subject: Re: Some syntactic sugar for machine descriptions Message-ID: <20010702080414.C24974@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200107021100.MAA27347@cam-mail2.cambridge.arm.com> User-Agent: Mutt/1.3.18i On Mon, Jul 02, 2001 at 12:00:29PM +0100, Richard Earnshaw wrote: > > This patch is breaking the ARM compiler. Specifically, it's missing code > to handle format 'T' in > > print-rtl.c: print_rtx() > gensupport.c: collect_insn_data () > rtl.c: copy_rtx () Sorry. Please try this patch. I've successfully built an i386->arm cross compiler with it. -- zw I was putting away groceries in our kitchen when I got to the cabbages and thought "this needs to be tossed into air, preferably without looking up first." -- James Nicoll * rtl.c (copy_rtx): Handle 'T' format letter. * gensupport.c (collect_insn_data): Likewise. * print-rtl.c (print_rtx): Print 'T' slots like 's'. =================================================================== Index: rtl.c --- rtl.c 2001/06/30 17:23:52 1.92 +++ rtl.c 2001/07/02 15:02:43 @@ -420,6 +420,7 @@ copy_rtx (orig) case 'i': case 's': case 'S': + case 'T': case 'u': case '0': /* These are left unchanged. */ =================================================================== Index: gensupport.c --- gensupport.c 2001/03/10 04:20:02 1.14 +++ gensupport.c 2001/07/02 15:02:43 @@ -453,7 +453,7 @@ collect_insn_data (pattern, palt, pmax) collect_insn_data (XVECEXP (pattern, i, j), palt, pmax); break; - case 'i': case 'w': case '0': case 's': case 'S': + case 'i': case 'w': case '0': case 's': case 'S': case 'T': break; default: =================================================================== Index: print-rtl.c --- print-rtl.c 2001/06/05 20:32:40 1.66 +++ print-rtl.c 2001/07/02 15:02:43 @@ -163,19 +163,29 @@ print_rtx (in_rtx) for (; i < GET_RTX_LENGTH (GET_CODE (in_rtx)); i++) switch (*format_ptr++) { - case 'S': - case 's': - if (XSTR (in_rtx, i) == 0) - fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile); - else - { - if (dump_for_graph) - fprintf (outfile, " (\\\"%s\\\")", XSTR (in_rtx, i)); - else - fprintf (outfile, " (\"%s\")", XSTR (in_rtx, i)); - } - sawclose = 1; - break; + { + const char *str; + case 'T': + str = XTMPL (in_rtx, i); + goto string; + + case 'S': + case 's': + str = XSTR (in_rtx, i); + string: + + if (str == 0) + fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile); + else + { + if (dump_for_graph) + fprintf (outfile, " (\\\"%s\\\")", str); + else + fprintf (outfile, " (\"%s\")", str); + } + sawclose = 1; + break; + } /* 0 indicates a field for internal use that should not be printed. An exception is the third field of a NOTE, where it indicates From gcc-patches-return-37879-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:08:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6132 invoked by alias); 2 Jul 2001 15:08:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5998 invoked from network); 2 Jul 2001 15:08:02 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:08:02 -0000 Received: by ocean.lucon.org (Postfix, from userid 1000) id CA17F125BA; Mon, 2 Jul 2001 08:08:01 -0700 (PDT) Date: Mon, 2 Jul 2001 08:08:01 -0700 From: "H . J . Lu" To: Neil Booth Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010702080801.A25037@lucon.org> References: <20010701181527.E12277@lucon.org> <20010702071749.C23509@daikokuya.demon.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010702071749.C23509@daikokuya.demon.co.uk>; from neil@daikokuya.demon.co.uk on Mon, Jul 02, 2001 at 07:17:50AM +0100 On Mon, Jul 02, 2001 at 07:17:50AM +0100, Neil Booth wrote: > H . J . Lu wrote:- > > > On the other hand, it was me who wrote those cross compile stuff in > > gcc. I guess I know what I am doing :-). > > In that case, would you be so kind as to fully document it for those > of lesser knowledge like myself? I am afraid if I don't have the time and it has to be treated on a case by case basis. If you have any specific questions on cross compiling to Linux, I will be happy to help. BTW, the key issue is the cross toolchain shouldn't even know anything about the header files and libraries on the host machine. Many people miss that. BTW, I have a complete cross toolchain for Linux/mips hosted on RedHat 7.1. You can get it from ftp://oss.sgi.com/pub/linux/mips/redhat/7.1/ You can get some ideas from my toolchain source rpm. H.J. From gcc-patches-return-37880-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:08:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6279 invoked by alias); 2 Jul 2001 15:08:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6256 invoked from network); 2 Jul 2001 15:08:15 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:08:15 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f62F8C411932; Mon, 2 Jul 2001 08:08:12 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 08:08:12 -0700 Date: Mon, 2 Jul 2001 08:08:12 -0700 From: "Zack Weinberg" To: Nathan Sidwell Cc: "Joseph S. Myers" , gcc-patches , mark Subject: Re: system include directories Message-ID: <20010702080812.D24974@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3B407440.CFACAC1D@codesourcery.com> User-Agent: Mutt/1.3.18i On Mon, Jul 02, 2001 at 02:16:48PM +0100, Nathan Sidwell wrote: > Zack Weinberg wrote: > > > > Don't need _() here. In fact, you shouldn't need any of them, I think > > gettext has the brains to extract the other strings despite their > > being inside a ?: expression. Take them all out, regenerate gcc.pot, > > and see if any of the strings are missing. > I agree the _() shouldn't be needed. Regenerating gcc.pot I find that > there are no strings for any cpp_warning call. This looks > like a separate issue. Yes. > Is this one good enough? I've added in your wording to invoke.texi, and > added some words to cpp.texi. No need to put in the gcc version -- > just keep the docs with the source. This one looks good to me. -- zw One can't, of course, perform Kaspar Hauser experiments on the offspring of one's conspecifics. -- Jerry Fodor, _The Mind Doesn't Work That Way_ From gcc-patches-return-37881-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:17:55 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13978 invoked by alias); 2 Jul 2001 15:17:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13945 invoked from network); 2 Jul 2001 15:17:53 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:17:53 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f62FHLI16052; Mon, 2 Jul 2001 17:17:23 +0200 (MET DST) Date: Mon, 2 Jul 2001 17:17:21 +0200 (CEST) From: Gerald Pfeifer To: cc: Subject: Re: Suggested addition to documentation In-Reply-To: <200106291405.f5TE5o311226@banach.math.purdue.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Fri, 29 Jun 2001 lucier@math.purdue.edu wrote: > At the end of this message is a note I posted to comp.arch in > response to Bernd Payson's claim that gcc-3.0 has optimization bugs > because gforth runs much more slowly when compiled with gcc-3.0 than > when compiled with gcc-2.95.2. So, again, I suggest that the > documentation be augmented with the following warning, which is a diff > against invoke.texi in gcc-3.0 release. This change is fine. Would you mind making the reference a real @xref and breaking line(s) over 76 chars? I'll then apply the patch to both branches. Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/ From gcc-patches-return-37882-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:29:16 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18168 invoked by alias); 2 Jul 2001 15:29:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18144 invoked from network); 2 Jul 2001 15:29:15 -0000 Received: from unknown (HELO fw-cam.cambridge.arm.com) (193.131.176.3) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:29:15 -0000 Received: by fw-cam.cambridge.arm.com; id QAA02468; Mon, 2 Jul 2001 16:29:08 +0100 (BST) Received: from unknown(172.16.1.2) by fw-cam.cambridge.arm.com via smap (V5.5) id xma002410; Mon, 2 Jul 01 16:29:02 +0100 Received: from cam-mail2.cambridge.arm.com (localhost [127.0.0.1]) by cam-admin0.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id QAA13287; Mon, 2 Jul 2001 16:29:07 +0100 (BST) Received: from sun18.cambridge.arm.com (sun18.cambridge.arm.com [172.16.2.18]) by cam-mail2.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id QAA11789; Mon, 2 Jul 2001 16:29:06 +0100 (BST) Message-Id: <200107021529.QAA11789@cam-mail2.cambridge.arm.com> X-Mailer: exmh version 2.0.2 2/24/98 To: "Zack Weinberg" cc: Richard.Earnshaw@arm.com, gcc-patches@gcc.gnu.org Reply-To: Richard.Earnshaw@arm.com Organization: ARM Ltd. X-Telephone: +44 1223 400569 (direct+voicemail), +44 1223 400400 (switchbd) X-Fax: +44 1223 400410 X-Address: ARM Ltd., 110 Fulbourn Road, Cherry Hinton, Cambridge CB1 9NJ. X-Url: http://www.arm.com/ Subject: Re: Some syntactic sugar for machine descriptions In-reply-to: Your message of "Mon, 02 Jul 2001 08:04:14 PDT." <20010702080414.C24974@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 16:29:06 +0100 From: Richard Earnshaw > * rtl.c (copy_rtx): Handle 'T' format letter. > * gensupport.c (collect_insn_data): Likewise. > * print-rtl.c (print_rtx): Print 'T' slots like 's'. Technically, this is fine. Stylistically, I'm not too keen on this bit... > =================================================================== > Index: print-rtl.c > --- print-rtl.c 2001/06/05 20:32:40 1.66 > +++ print-rtl.c 2001/07/02 15:02:43 > @@ -163,19 +163,29 @@ print_rtx (in_rtx) > for (; i < GET_RTX_LENGTH (GET_CODE (in_rtx)); i++) > switch (*format_ptr++) > { > + { > + const char *str; > + case 'T': ... > + } Why the extra level of scoping? IMO it would be cleaner to have the const char *str at the scope of the entire switch, rather than for just for a few cases. Do the gnu coding standards have anything to say on this? R. From gcc-patches-return-37883-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:34:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19817 invoked by alias); 2 Jul 2001 15:34:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19743 invoked from network); 2 Jul 2001 15:34:20 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:34:20 -0000 Received: by ocean.lucon.org (Postfix, from userid 1000) id 0AB26125BA; Mon, 2 Jul 2001 08:34:20 -0700 (PDT) Date: Mon, 2 Jul 2001 08:34:19 -0700 From: "H . J . Lu" To: Alexandre Oliva Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010702083419.A25410@lucon.org> References: <20010701105017.A14237@lucon.org> <20010701123357.A18030@nevyn.them.org> <20010701134015.B10426@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from aoliva@redhat.com on Mon, Jul 02, 2001 at 11:14:06AM -0300 On Mon, Jul 02, 2001 at 11:14:06AM -0300, Alexandre Oliva wrote: > > > At this point, $host = $target. When $build = $target != $host, you > > are building a cross compiler, slibdir is set to $(build_tooldir)/lib. > > Would you please add a comment explaining the dependence on the code > above and the inferences you're making? This could help the next > person who chooses to modify that chunk of code get the whole > picture. Ok. Added. > > > I don't think many people will do > > > # make install > > > for a canadian cross build. The possible usage is > > I'll concede that I'm not a typical user, but I often do it. I removed that part. > > Isn't your argument that having more than one copy of libgcc_s.so.1 > can get the whole system unstable? How does moving it change this More precisely, only the system libgcc_s.so.1 should be visible to the system dynamic linker for the binaries come from the ditribution vendor. I have many copies of libc.so.6 on my machine. It is ok as long as they are not visible to the system dynamic linker. One word of caution, never set DT_RPATH to "" in the system binaries :-). > fact? There will still be one more copy, and users are likely to add > GCC's internal library search path to ld.so.conf as well. For one, > that's where the libobjc libraries are installed. For another, that's > what they're going to do to make sure they're using the newer copy of > libgcc_s.so.1, or just because they had to do it on other OSs that > don't have libgcc_s.so.1 in /lib. > I can live with that. At least, the users should be aware that they are tempering with the system library :-). Here is an update on my last patch. Thanks for all the comments. H.J. --- 2001-07-02 H.J. Lu (hjl@gnu.org) * configure.in (slibdir): Set according to if the shared libgcc library is a system shared library. * configure: Rebuild. * gcc.c (compiler_release): New string for the compiler release. (option_map): Add --release/-dumprelease. (display_help): Add -dumprelease. (process_command): Initialize compiler_release and handle -dumprelease. --- gcc/configure.in.libgcc Wed Jun 13 13:36:24 2001 +++ gcc/configure.in Mon Jul 2 08:25:31 2001 @@ -1945,14 +1945,26 @@ AC_ARG_ENABLE(version-specific-runtime-l AC_ARG_WITH(slibdir, [ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], -slibdir="$with_slibdir", +slibdir="$with_slibdir",[ if test "${enable_version_specific_runtime_libs+set}" = set; then slibdir='$(libsubdir)' elif test "$host" != "$target"; then slibdir='$(build_tooldir)/lib' else + # We are building a nativa compiler here since "$host" = "$target". slibdir='$(libdir)' -fi) + if test "$build" = "$target"; then + # For systems where there is the shared libgcc in /lib or /usr/lib, + # we assume it is a system library come from the system vendor, we + # install our shared libgcc into $(libsubdir). We only check the + # system shared libgcc for the native build. + # FIXME: Need to check if the system shared libgcc library is + # really ok. + if test -e /lib/libgcc_s.so.1 || test -e /usr/lib/libgcc_s.so.1; then + slibdir='$(libsubdir)' + fi + fi +fi]) AC_SUBST(slibdir) # Nothing to do for FLOAT_H, float_format already handled. --- gcc/gcc.c.libgcc Tue Jun 12 14:38:51 2001 +++ gcc/gcc.c Mon Jul 2 08:18:19 2001 @@ -157,6 +157,10 @@ static int save_temps_flag; static const char *compiler_version; +/* The compiler release. */ + +static const char *compiler_release; + /* The target version specified with -V */ static const char *spec_version = DEFAULT_TARGET_VERSION; @@ -898,6 +902,7 @@ struct option_map option_map[] = {"--user-dependencies", "-MM", 0}, {"--verbose", "-v", 0}, {"--version", "-dumpversion", 0}, + {"--release", "-dumprelease", 0}, {"--warn-", "-W", "*j"}, {"--write-dependencies", "-MD", 0}, {"--write-user-dependencies", "-MMD", 0}, @@ -2897,6 +2902,7 @@ display_help () fputs (_(" (Use '-v --help' to display command line options of sub-processes)\n"), stdout); fputs (_(" -dumpspecs Display all of the built in spec strings\n"), stdout); fputs (_(" -dumpversion Display the version of the compiler\n"), stdout); + fputs (_(" -dumprelease Display the release of the compiler\n"), stdout); fputs (_(" -dumpmachine Display the compiler's target processor\n"), stdout); fputs (_(" -print-search-dirs Display the directories in the compiler's search path\n"), stdout); fputs (_(" -print-libgcc-file-name Display the name of the compiler's companion library\n"), stdout); @@ -3035,6 +3041,27 @@ process_command (argc, argv) } } + /* Figure compiler release from version string. */ + compiler_release = temp1 = xstrdup (version_string); + + for (; *temp1; ++temp1) + { + if (ISSPACE ((unsigned char) *temp1)) + *temp1 = '-'; + else if (*temp1 == '(') + { + *temp1 = '\0'; + break; + } + } + for (--temp1; *temp1; --temp1) + { + if (*temp1 == '-') + *temp1 = '\0'; + else + break; + } + /* Set up the default search paths. If there is no GCC_EXEC_PREFIX, see if we can create it from the pathname specified in argv[0]. */ @@ -3200,6 +3227,11 @@ process_command (argc, argv) else if (! strcmp (argv[i], "-dumpversion")) { printf ("%s\n", spec_version); + exit (0); + } + else if (! strcmp (argv[i], "-dumprelease")) + { + printf ("%s\n", compiler_release); exit (0); } else if (! strcmp (argv[i], "-dumpmachine")) From gcc-patches-return-37884-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:37:08 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21872 invoked by alias); 2 Jul 2001 15:37:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21759 invoked from network); 2 Jul 2001 15:37:05 -0000 Received: from unknown (HELO ocean.lucon.org) (24.176.137.160) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:37:05 -0000 Received: by ocean.lucon.org (Postfix, from userid 1000) id 5CA5F125BA; Mon, 2 Jul 2001 08:37:05 -0700 (PDT) Date: Mon, 2 Jul 2001 08:37:05 -0700 From: "H . J . Lu" To: Alexandre Oliva Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org, GNU C Library Subject: Re: PATCH: Handle the shared libgcc is a system library Message-ID: <20010702083705.B25410@lucon.org> References: <20010701105017.A14237@lucon.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from aoliva@redhat.com on Mon, Jul 02, 2001 at 11:06:42AM -0300 On Mon, Jul 02, 2001 at 11:06:42AM -0300, Alexandre Oliva wrote: > On Jul 1, 2001, "H . J . Lu" wrote: > > > + if test -e /lib/libgcc_s.so || test -e /usr/lib/libgcc_s.so; then > > test -e is not portable (IIRC, it breaks at least with Tru64's > /bin/sh). Please use test -f instead. > Ooops. Missed this one. Another update. H.J. ---- 2001-07-02 H.J. Lu (hjl@gnu.org) * configure.in (slibdir): Set according to if the shared libgcc library is a system shared library. * configure: Rebuild. * gcc.c (compiler_release): New string for the compiler release. (option_map): Add --release/-dumprelease. (display_help): Add -dumprelease. (process_command): Initialize compiler_release and handle -dumprelease. --- gcc/configure.in.libgcc Wed Jun 13 13:36:24 2001 +++ gcc/configure.in Mon Jul 2 08:25:31 2001 @@ -1945,14 +1945,26 @@ AC_ARG_ENABLE(version-specific-runtime-l AC_ARG_WITH(slibdir, [ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], -slibdir="$with_slibdir", +slibdir="$with_slibdir",[ if test "${enable_version_specific_runtime_libs+set}" = set; then slibdir='$(libsubdir)' elif test "$host" != "$target"; then slibdir='$(build_tooldir)/lib' else + # We are building a nativa compiler here since "$host" = "$target". slibdir='$(libdir)' -fi) + if test "$build" = "$target"; then + # For systems where there is the shared libgcc in /lib or /usr/lib, + # we assume it is a system library come from the system vendor, we + # install our shared libgcc into $(libsubdir). We only check the + # system shared libgcc for the native build. + # FIXME: Need to check if the system shared libgcc library is + # really ok. + if test -f /lib/libgcc_s.so.1 || test -f /usr/lib/libgcc_s.so.1; then + slibdir='$(libsubdir)' + fi + fi +fi]) AC_SUBST(slibdir) # Nothing to do for FLOAT_H, float_format already handled. --- gcc/gcc.c.libgcc Tue Jun 12 14:38:51 2001 +++ gcc/gcc.c Mon Jul 2 08:18:19 2001 @@ -157,6 +157,10 @@ static int save_temps_flag; static const char *compiler_version; +/* The compiler release. */ + +static const char *compiler_release; + /* The target version specified with -V */ static const char *spec_version = DEFAULT_TARGET_VERSION; @@ -898,6 +902,7 @@ struct option_map option_map[] = {"--user-dependencies", "-MM", 0}, {"--verbose", "-v", 0}, {"--version", "-dumpversion", 0}, + {"--release", "-dumprelease", 0}, {"--warn-", "-W", "*j"}, {"--write-dependencies", "-MD", 0}, {"--write-user-dependencies", "-MMD", 0}, @@ -2897,6 +2902,7 @@ display_help () fputs (_(" (Use '-v --help' to display command line options of sub-processes)\n"), stdout); fputs (_(" -dumpspecs Display all of the built in spec strings\n"), stdout); fputs (_(" -dumpversion Display the version of the compiler\n"), stdout); + fputs (_(" -dumprelease Display the release of the compiler\n"), stdout); fputs (_(" -dumpmachine Display the compiler's target processor\n"), stdout); fputs (_(" -print-search-dirs Display the directories in the compiler's search path\n"), stdout); fputs (_(" -print-libgcc-file-name Display the name of the compiler's companion library\n"), stdout); @@ -3035,6 +3041,27 @@ process_command (argc, argv) } } + /* Figure compiler release from version string. */ + compiler_release = temp1 = xstrdup (version_string); + + for (; *temp1; ++temp1) + { + if (ISSPACE ((unsigned char) *temp1)) + *temp1 = '-'; + else if (*temp1 == '(') + { + *temp1 = '\0'; + break; + } + } + for (--temp1; *temp1; --temp1) + { + if (*temp1 == '-') + *temp1 = '\0'; + else + break; + } + /* Set up the default search paths. If there is no GCC_EXEC_PREFIX, see if we can create it from the pathname specified in argv[0]. */ @@ -3200,6 +3227,11 @@ process_command (argc, argv) else if (! strcmp (argv[i], "-dumpversion")) { printf ("%s\n", spec_version); + exit (0); + } + else if (! strcmp (argv[i], "-dumprelease")) + { + printf ("%s\n", compiler_release); exit (0); } else if (! strcmp (argv[i], "-dumpmachine")) From gcc-patches-return-37885-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:41:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24071 invoked by alias); 2 Jul 2001 15:41:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24009 invoked from network); 2 Jul 2001 15:41:00 -0000 Received: from unknown (HELO new-smtp1.ihug.com.au) (203.109.250.27) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:41:00 -0000 Received: from ihug.com.au (IDENT:root@p9-max50.syd.ihug.com.au [203.173.144.137]) by new-smtp1.ihug.com.au (8.9.3/8.9.3) with ESMTP id BAA04752; Tue, 3 Jul 2001 01:40:49 +1000 X-Authentication-Warning: new-smtp1.ihug.com.au: Host IDENT:root@p9-max50.syd.ihug.com.au [203.173.144.137] claimed to be ihug.com.au Received: (from rich@localhost) by ihug.com.au (8.11.0/8.11.0) id f62Fofj04564; Tue, 3 Jul 2001 01:50:41 +1000 To: Gerald Pfeifer Cc: "Joseph S. Myers" , Subject: PATCH: faq.html (was: "FAQ patch") References: From: Rich Churcher Date: 03 Jul 2001 01:50:41 +1000 In-Reply-To: Message-ID: Lines: 63 User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Gerald Pfeifer writes: > Rich, if there are any outstanding patches or mails of yours which I > haven't addressed in, say 24 hours, please drop me some pointer or resend, > and I'll have a look ASAP. (I hope this did not happen, but I might have > missed something while reducing my huge backlog.) Joseph has been very patiently vetting my patches for me, so I don't think there are any outstanding. Here's another I thought of adding, perhaps you could look at it when you have a moment. [To be honest, the long lines in diff output - this has always confused me. What is it we have to avoid, again? Is it enough that my mail client doesn't wrap long lines, or should I edit long lines prior to invoking cvs diff? I could make sure everything in existing markup doesn't go past 70 characters or so if necessary.] 2001-07-03 Rich Churcher * Add question to cover lack of export keyword Index: faq.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/faq.html,v retrieving revision 1.164 diff -u -3 -p -r1.164 faq.html --- faq.html 2001/07/01 14:48:20 1.164 +++ faq.html 2001/07/02 09:54:22 @@ -63,6 +63,7 @@ page.

  • Why can't I initialize a static variable with stdin?
  • Why can't I use #if here?
  • Problems with floating point computations
  • +
  • Why can't I put template definitions in a separate file?
  • Older versions of GCC or EGCS
  • @@ -611,6 +612,20 @@ to round to the nearest representable nu the float and double types. Please study this paper for more information.

    + +
    +

    Why can't I put template definitions in a +separate file?

    + +

    Most C++ compilers (G++ included) do not yet implement the +export keyword, which is necessary for separate +compilation of template declarations and definitions. Without +export, a template definition must be in scope to be +used.

    + +

    The obvious workaround is simply to place all definitions in the +header itself. Alternatively, the compilation unit containing template +definitions may be included from the header.


    -- Cheers, Rich. From gcc-patches-return-37886-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 15:55:36 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32292 invoked by alias); 2 Jul 2001 15:55:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32256 invoked from network); 2 Jul 2001 15:55:35 -0000 Received: from unknown (HELO executor.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 2 Jul 2001 15:55:35 -0000 Received: from redhat.com (apple.cambridge.redhat.com [172.16.18.78]) by executor.cambridge.redhat.com (Postfix) with ESMTP id C5D8AABAF8; Mon, 2 Jul 2001 16:55:34 +0100 (BST) Message-ID: <3B409976.D7BCAE5B@redhat.com> Date: Mon, 02 Jul 2001 16:55:34 +0100 From: Graham Stott X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.16-22smp i686) X-Accept-Language: en MIME-Version: 1.0 To: config-patches@gnu.org Cc: gcc-patches@gcc.gnu.org Subject: Fix typo config.sub Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit All The following patch fixes a typo exposed when trying to configure for a mips64vr5xxxel-elf target. Graham ChangeLog 2001-07-02 Graham Stott *config.sub (basic_machine): Fix typo. ------------------------------------------------ Index: config.sub =================================================================== RCS file: /cvs/gcc/gcc/config.sub,v retrieving revision 1.55 diff -c -p -r1.55 config.sub *** config.sub 2001/06/09 18:50:20 1.55 --- config.sub 2001/07/02 15:48:25 *************** case $basic_machine in *** 238,244 **** | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ ! | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ | v850 | c4x \ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ --- 238,244 ---- | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ ! | mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ | v850 | c4x \ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ ------------------------------------------------ From gcc-patches-return-37887-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 16:38:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18141 invoked by alias); 2 Jul 2001 16:38:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18121 invoked from network); 2 Jul 2001 16:38:28 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 16:38:28 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62GFZ601119; Mon, 2 Jul 2001 09:15:35 -0700 Date: Mon, 02 Jul 2001 09:15:34 -0700 From: Mark Mitchell To: "Joseph S. Myers" cc: Zack Weinberg , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <8780000.994090534@warlock.codesourcery.com> In-Reply-To: X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, July 02, 2001 08:28:44 AM +0100 "Joseph S. Myers" wrote: > On Sun, 1 Jul 2001, Mark Mitchell wrote: > >> >> I agree. Also, I think that we should make this statement false >> >> by making the antecedent false for virtuall all files. I could >> >> even see getting rid of `configure' (shoot me, so there), but >> >> definitely the man pages. Kill 'em. Patch pre-approved. > > For branch as well as mainline? This does of course mean that you'll > need perl 5.6.1 (or the latest podlators - and preferably the latest > podlators, when another release comes out fixing some problems with > excess quotes appearing which show up in the GCC manpages) to generate > releases. Let's do the mainline first. We can decide about the branch later. My inclination at this point is to not do this on the branch; I'd prefer to avoid messing with the release script on the branch, since it seems to have worked, and we might break it. > One property of gcc_release -s is that it doesn't build the compiler and > documentation - so people building snapshots will want to have more tools > installed (or need them, in the case of bison) than those building > releases, as now. I think we should rethink this policy, despite the benefits you mention. Perhaps I have a different view of snapshots than others. I would like them to be essentially pre-releases (but with none of the quality control that normally implies, so probably a better term is needed). That way, people testing snapshots are helping to test our packaging for us, as well as our code. I'm not particulary concerned about the size of the diffs; the way to get minimal bandwidth is probably `cvs update' when a new snapshot comes out, especially since that contains very few generated files, by hypothesis. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37888-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 16:48:41 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25412 invoked by alias); 2 Jul 2001 16:48:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25377 invoked from network); 2 Jul 2001 16:48:39 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 16:48:39 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA13491; Mon, 2 Jul 01 12:52:50 EDT Date: Mon, 2 Jul 01 12:52:50 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107021652.AA13491@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Fix typo in flow.c:try_simplify_condjump This shows up compiling GNAT on Alpha. Mon Jul 2 12:50:51 2001 Richard Kenner * flow.c (try_simplify_condjump): Fix typo in updating fallthru flags. *** flow.c 2001/06/29 03:30:17 1.410 --- flow.c 2001/07/02 16:45:46 *************** try_simplify_condjump (src) *** 2889,2893 **** branch->flags |= EDGE_FALLTHRU; ! fallthru->flags &= EDGE_FALLTHRU; flow_delete_block (next_block); --- 2889,2893 ---- branch->flags |= EDGE_FALLTHRU; ! fallthru->flags &= ~EDGE_FALLTHRU; flow_delete_block (next_block); From gcc-patches-return-37889-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 16:51:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27316 invoked by alias); 2 Jul 2001 16:51:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27296 invoked from network); 2 Jul 2001 16:51:39 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 16:51:39 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id SAA00195; Mon, 2 Jul 2001 18:51:37 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62Gpav20468; Mon, 2 Jul 2001 18:51:36 +0200 (MEST) From: Rainer Orth Message-ID: <15168.42646.802099.307010@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 18:51:34 +0200 (MEST) To: Gerald Pfeifer Cc: gcc-patches@gcc.gnu.org Subject: Re: 3.0 PATCH: Update install.texi for mips*-sgi-irix[456] In-Reply-To: References: <15146.22685.453041.722605@xayide.TechFak.Uni-Bielefeld.DE> X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Gerald Pfeifer writes: > Thanks! I believe you want to write "GNU @command{as}" in those cases > where you expanded "GAS", similiar to what we had for GNU make? Done. > +You must @emph{not} use GNU as on IRIX 6 platforms (which isn't built > +anyway as of binutils 2.11.1); doing so will only cause problems. > > I believe this is a bit confusing. Perhaps "GNU as (which does not build > anyway as of binutils 2.11.1) on IRIX 6 platforms" instead? I've used ``GNU as (which isn't built ...)'' instead: I don't know if gas builds on IRIX 6; it's disabled in binutils' toplevel configure, with this comment: # The GNU assembler does not support IRIX 6. I might try sometimes if this is still true. Btw, there seems to be ongoing work to better support the N32 and N64 ABIs in binutils, since Linux/MIPS uses/is going to use them. > Please install the updated version of this patch on both branches. Done, thanks. Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37890-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:06:16 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4544 invoked by alias); 2 Jul 2001 17:06:14 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4522 invoked from network); 2 Jul 2001 17:06:14 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:06:14 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62Gk3601641; Mon, 2 Jul 2001 09:46:03 -0700 Date: Mon, 02 Jul 2001 09:46:03 -0700 From: Mark Mitchell To: "Joseph S. Myers" , Zack Weinberg cc: Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <113080000.994092363@warlock.codesourcery.com> In-Reply-To: X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, July 02, 2001 09:00:23 AM +0100 "Joseph S. Myers" wrote: > On Mon, 2 Jul 2001, Zack Weinberg wrote: > >> On Sun, Jul 01, 2001 at 11:41:08PM -0700, Mark Mitchell wrote: >> > >> > As for man pages in particular, we should build man pages as >> > part of a normal `make bootstrap'. In this context, the documentation >> > is just another program we build when build the compiler. >> >> Okay, I *think* this is as simple as the patch below. I didn't code >> the $(GENERATED_MANPAGES) stuff, though, so I'd appreciate if someone >> could vet this. > > You need to remove the entries for the manpages from contrib/gcc_update as > well. Approved for mainline with that change. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37891-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:10:21 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 6645 invoked by alias); 2 Jul 2001 17:10:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6608 invoked from network); 2 Jul 2001 17:10:16 -0000 Received: from unknown (HELO localhost.cygnus.com) (24.147.209.181) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:10:16 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.cygnus.com (Postfix) with ESMTP id F40DF3C5D; Mon, 2 Jul 2001 13:10:15 -0400 (EDT) Message-ID: <3B40AAF7.6010805@cygnus.com> Date: Mon, 02 Jul 2001 13:10:15 -0400 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD 1.5W macppc; en-US; rv:0.9.1) Gecko/20010612 X-Accept-Language: en-us MIME-Version: 1.0 To: John David Anglin Cc: gcc-patches@gcc.gnu.org Subject: Re: [rfa] const char *lbasename(const char *); References: <200106300701.DAA23068@hiauly1.hia.nrc.ca> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit > so that the function doesn't silently cast a ``const char *'' into a >> writeable ``char *''. > > > This change is wrong in my opinion. The situation is very similar to that > for strchr() and strstr(). My understanding of the intention of lbasename() was to provide robust basename() like semantics while avoiding all the sillyness that POSIX basename() had to include to ensure compatibilty with the 101 implementations already in the field. If you look though the archives you'll notice I posted a grype about the old basename() function signature ~year ago. lbasename() is definitly a step (er leap) in the right direction. >> A quick check of GCC indicates that this change will cause additional >> warnings in the GCC sources. What should I do about these? Can I also >> just check in the tweeks that fix these. > > > In a follow up message, the uses in gcc/cp were missed. Some of these > involve writeable "strings" if I remember correctly. Would you remember the details? The only potential problem I noticed was with cp/repo.c:get_base_filename() and I think that should be returning a const char *. enjoy, Andrew From gcc-patches-return-37892-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:14:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7679 invoked by alias); 2 Jul 2001 17:14:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7641 invoked from network); 2 Jul 2001 17:14:10 -0000 Received: from unknown (HELO localhost.cygnus.com) (24.147.209.181) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:14:10 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.cygnus.com (Postfix) with ESMTP id 12EDC3C5D; Mon, 2 Jul 2001 13:14:09 -0400 (EDT) Message-ID: <3B40ABE1.4070403@cygnus.com> Date: Mon, 02 Jul 2001 13:14:09 -0400 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD 1.5W macppc; en-US; rv:0.9.1) Gecko/20010612 X-Accept-Language: en-us MIME-Version: 1.0 To: Richard Henderson Cc: DJ Delorie , gcc-patches@gcc.gnu.org Subject: Re: [ping] [rfa] const char *lbasename(const char *); References: <3B3CBDF4.3040108@cygnus.com> <200106291811.OAA06229@greed.delorie.com> <20010629131725.A17725@redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit > On Fri, Jun 29, 2001 at 02:11:37PM -0400, DJ Delorie wrote: > >> This affects cppfiles.c, dwarf2out.c, and mkdeps.c. If the >> maintainers of those files could approve the needed tweaks to not warn >> about const, the libiberty patch is approved. > > > I'll approve it in principal, seeing as there doesn't > seem to be an actual patch yet written. Thanks! That's what I need. I'll submit the real patches for approval. Andrew From gcc-patches-return-37893-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:26:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14050 invoked by alias); 2 Jul 2001 17:26:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14023 invoked from network); 2 Jul 2001 17:26:10 -0000 Received: from unknown (HELO palrel2.hp.com) (156.153.255.234) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:26:10 -0000 Received: from hpda.cup.hp.com (hpda.cup.hp.com [15.75.208.53]) by palrel2.hp.com (Postfix) with ESMTP id 3508CC35 for ; Mon, 2 Jul 2001 10:26:10 -0700 (PDT) Received: from hpsje.cup.hp.com (hpsje.cup.hp.com [15.0.98.5]) by hpda.cup.hp.com (Postfix) with ESMTP id 0266B6A45 for ; Mon, 2 Jul 2001 10:26:10 -0700 (PDT) Received: (from sje@localhost) by hpsje.cup.hp.com (8.8.6 (PHNE_17190)/8.7.3 TIS Messaging 5.0) id KAA10833 for gcc-patches@gcc.gnu.org; Mon, 2 Jul 2001 10:26:09 -0700 (PDT) Date: Mon, 2 Jul 2001 10:26:09 -0700 (PDT) From: Steve Ellcey Message-Id: <200107021726.KAA10833@hpsje.cup.hp.com> To: gcc-patches@gcc.gnu.org Subject: IA64 patch / build question Reply-To: sje@cup.hp.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit The t-ia64 Makefile segment overrides some of the functions from LIB2FUNCS. Specifically, it has its own optimized versions of _divdi3, _moddi3, _udivdi3, and _umoddi3 in lib1funcs.asm. In t-ia64 is the following code and comment: # ??? We change the names of the DImode div/mod files so that they won't # accidentally be overridden by libgcc2.c files. We used to use __ia64 as # a prefix, now we use __ as the prefix. LIB1ASMFUNCS = __divtf3 __divdf3 __divsf3 \ __divdi3 __moddi3 __udivdi3 __umoddi3 \ __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ __nonlocal_goto __restore_stack_nonlocal __trampoline Because the names have two underscores here and one underscore in LIB2FUNCS in gcc/Makefile.in the macro names here are not "accidently overridden" but we do wind up with two definitions of __divdi3, etc, one from lib2gcc.c and one from lib1funcs.asm. When I try to build a shared library I get an error with duplicate symbols from the HP linker. Looking at mklibgcc.in it seems that the names in LIB1ASMFUNCS should be the same as the ones in LIB2FUNCS because mklibgcc.in will then remove from LIB2FUNCS anything it finds in LIB1ASMFUNCS (see the Xlibgcc1-asm case statement in mklibgcc.in). Here is a patch I created to fix this, I tested it on IA64 HP-UX but not on IA64 Linux. Does my analysis of the problem sound right? If so this patch should be the right fix. I have a copyright assignment on file but no write permission to CVS to make this change. Steve Ellcey sje@cup.hp.com ---------------------------- 2001-07-02 Steve Ellcey * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore. * config/ia64/lib1funcs.asm: Change macro names to match t-ia64. *** config/ia64/t-ia64.orig Mon Jul 2 10:03:45 2001 --- config/ia64/t-ia64 Mon Jul 2 10:01:33 2001 *************** LIB1ASMSRC = ia64/lib1funcs.asm *** 8,17 **** # ??? We change the names of the DImode div/mod files so that they won't # accidentally be overridden by libgcc2.c files. We used to use __ia64 as # a prefix, now we use __ as the prefix. ! LIB1ASMFUNCS = __divtf3 __divdf3 __divsf3 \ ! __divdi3 __moddi3 __udivdi3 __umoddi3 \ ! __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ ! __nonlocal_goto __restore_stack_nonlocal __trampoline # ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel # assembler does not accept # line number as a comment. --- 8,17 ---- # ??? We change the names of the DImode div/mod files so that they won't # accidentally be overridden by libgcc2.c files. We used to use __ia64 as # a prefix, now we use __ as the prefix. ! LIB1ASMFUNCS = _divtf3 _divdf3 _divsf3 \ ! _divdi3 _moddi3 _udivdi3 _umoddi3 \ ! _divsi3 _modsi3 _udivsi3 _umodsi3 _save_stack_nonlocal \ ! _nonlocal_goto _restore_stack_nonlocal _trampoline # ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel # assembler does not accept # line number as a comment. *** config/ia64/lib1funcs.asm.orig Mon Jul 2 10:03:34 2001 --- config/ia64/lib1funcs.asm Mon Jul 2 10:02:00 2001 *************** *** 1,4 **** ! #ifdef L__divtf3 // Compute a 80-bit IEEE double-extended quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 1,4 ---- ! #ifdef L_divtf3 // Compute a 80-bit IEEE double-extended quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divtf3: *** 40,46 **** .endp __divtf3 #endif ! #ifdef L__divdf3 // Compute a 64-bit IEEE double quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 40,46 ---- .endp __divtf3 #endif ! #ifdef L_divdf3 // Compute a 64-bit IEEE double quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divdf3: *** 82,88 **** .endp __divdf3 #endif ! #ifdef L__divsf3 // Compute a 32-bit IEEE float quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 82,88 ---- .endp __divdf3 #endif ! #ifdef L_divsf3 // Compute a 32-bit IEEE float quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divsf3: *** 118,124 **** .endp __divsf3 #endif ! #ifdef L__divdi3 // Compute a 64-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 118,124 ---- .endp __divsf3 #endif ! #ifdef L_divdi3 // Compute a 64-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divdi3: *** 168,174 **** .endp __divdi3 #endif ! #ifdef L__moddi3 // Compute a 64-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 168,174 ---- .endp __divdi3 #endif ! #ifdef L_moddi3 // Compute a 64-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __moddi3: *** 222,228 **** .endp __moddi3 #endif ! #ifdef L__udivdi3 // Compute a 64-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 222,228 ---- .endp __moddi3 #endif ! #ifdef L_udivdi3 // Compute a 64-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __udivdi3: *** 272,278 **** .endp __udivdi3 #endif ! #ifdef L__umoddi3 // Compute a 64-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 272,278 ---- .endp __udivdi3 #endif ! #ifdef L_umoddi3 // Compute a 64-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __umoddi3: *** 327,333 **** .endp __umoddi3 #endif ! #ifdef L__divsi3 // Compute a 32-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 327,333 ---- .endp __umoddi3 #endif ! #ifdef L_divsi3 // Compute a 32-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divsi3: *** 370,376 **** .endp __divsi3 #endif ! #ifdef L__modsi3 // Compute a 32-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 370,376 ---- .endp __divsi3 #endif ! #ifdef L_modsi3 // Compute a 32-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __modsi3: *** 417,423 **** .endp __modsi3 #endif ! #ifdef L__udivsi3 // Compute a 32-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 417,423 ---- .endp __modsi3 #endif ! #ifdef L_udivsi3 // Compute a 32-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __udivsi3: *** 460,466 **** .endp __udivsi3 #endif ! #ifdef L__umodsi3 // Compute a 32-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 460,466 ---- .endp __udivsi3 #endif ! #ifdef L_umodsi3 // Compute a 32-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __umodsi3: *** 507,513 **** .endp __umodsi3 #endif ! #ifdef L__save_stack_nonlocal // Notes on save/restore stack nonlocal: We read ar.bsp but write // ar.bspstore. This is because ar.bsp can be read at all times // (independent of the RSE mode) but since it's read-only we need to --- 507,513 ---- .endp __umodsi3 #endif ! #ifdef L_save_stack_nonlocal // Notes on save/restore stack nonlocal: We read ar.bsp but write // ar.bspstore. This is because ar.bsp can be read at all times // (independent of the RSE mode) but since it's read-only we need to *************** __ia64_save_stack_nonlocal: *** 556,562 **** .endp __ia64_save_stack_nonlocal #endif ! #ifdef L__nonlocal_goto // void __ia64_nonlocal_goto(void *target_label, void *save_area, // void *static_chain); --- 556,562 ---- .endp __ia64_save_stack_nonlocal #endif ! #ifdef L_nonlocal_goto // void __ia64_nonlocal_goto(void *target_label, void *save_area, // void *static_chain); *************** __ia64_nonlocal_goto: *** 609,615 **** .endp __ia64_nonlocal_goto #endif ! #ifdef L__restore_stack_nonlocal // This is mostly the same as nonlocal_goto above. // ??? This has not been tested yet. --- 609,615 ---- .endp __ia64_nonlocal_goto #endif ! #ifdef L_restore_stack_nonlocal // This is mostly the same as nonlocal_goto above. // ??? This has not been tested yet. *************** __ia64_restore_stack_nonlocal: *** 662,668 **** .endp __ia64_restore_stack_nonlocal #endif ! #ifdef L__trampoline // Implement the nested function trampoline. This is out of line // so that we don't have to bother with flushing the icache, as // well as making the on-stack trampoline smaller. --- 662,668 ---- .endp __ia64_restore_stack_nonlocal #endif ! #ifdef L_trampoline // Implement the nested function trampoline. This is out of line // so that we don't have to bother with flushing the icache, as // well as making the on-stack trampoline smaller. From gcc-patches-return-37894-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:27:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14950 invoked by alias); 2 Jul 2001 17:27:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14826 invoked from network); 2 Jul 2001 17:26:55 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:26:55 -0000 Received: from murlibobo.cs.mu.OZ.AU (murlibobo.cs.mu.OZ.AU [128.250.29.17]) by mumnunah.cs.mu.OZ.AU with ESMTP id DAA12541; Tue, 3 Jul 2001 03:26:42 +1000 (EST) Received: (from fjh@localhost) by murlibobo.cs.mu.OZ.AU (8.8.5/8.7.3) id DAA14838; Tue, 3 Jul 2001 03:26:40 +1000 (EST) Date: Tue, 3 Jul 2001 03:26:40 +1000 From: Fergus Henderson To: law@redhat.com Cc: Nathan Sidwell , gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: [C++ patch]: reorganize tree inlining Message-ID: <20010703032639.A18315@murlibobo.cs.mu.OZ.AU> References: <3B406AED.39469753@codesourcery.com> <29233.994084186@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.95.1i In-Reply-To: <29233.994084186@localhost.localdomain>; from law@redhat.com on Mon, Jul 02, 2001 at 07:29:46AM -0700 On 02-Jul-2001, law@redhat.com wrote: > In message <3B406AED.39469753@codesourcery.com>you write: > > Fergus Henderson wrote: > > > I think it would be nicer to put the documentation of `inlined' > > > before the documentation for `optimized', i.e. to list the different > > > stages in cronological order. > > I don't think that possible, in general. Consider some constant > > propagation/unreachable code optimization. You'd want to run that both > > before and after inlining I guess. > Right. You want to run cprop before inlining to clean up any sillyness > and propagate constants to call sites. You can to run cprop after inlining > to take advantage of any inlinable call sites where one or more arguments is > a constant. In that case, there should be a debug option to dump the tree after the first time cprop is run and a different debug option to dump it after the second time cprop is run. Any time the tree changes significantly, there should be a way to dump the result after that change. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-37895-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:34:26 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20110 invoked by alias); 2 Jul 2001 17:34:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20085 invoked from network); 2 Jul 2001 17:34:25 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:34:25 -0000 Received: from apple.con (A17-128-100-225.apple.com [17.128.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id KAA25285 for ; Mon, 2 Jul 2001 10:34:23 -0700 (PDT) Received: from scv1.apple.com (scv1.apple.com) by apple.con (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Mon, 2 Jul 2001 10:32:39 +0100 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv1.apple.com (8.9.3/8.9.3) with ESMTP id KAA02360; Mon, 2 Jul 2001 10:34:23 -0700 (PDT) Message-Id: <200107021734.KAA02360@scv1.apple.com> Date: Mon, 2 Jul 2001 10:34:18 -0700 From: Ziemowit Laski Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: PATCH: Support for Pascal strings -- Take 2 Cc: "gcc-patches@gcc.gnu.org" To: Mark Mitchell X-Mailer: Apple Mail (2.388) In-Reply-To: <16950000.994010269@warlock.codesourcery.com> Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit On Sunday, July 1, 2001, at 10:57 , Mark Mitchell wrote: > I am not in favor on a technical basis. Too much complication for too > little win. I'm not sure how one would quantify a "win" in this case. :) At present, it is true that the applicability of the patch is limited to MacOS, though presumably this could change if/when GNU Pascal comes into being. Also, I guess I would not consider the patch to be excessively complicated, though reasonable people can disagree on this (and I certainly respect your view here). > > Stan often points out that there are political issues here, too, > regarding > Apple maintaining it's own version of GCC. However, if there is going > to be an FSF mandate to incorporate Apple changes for the sake of > eliminating the Apple fork, then we need to get that message from the > FSF; > it's not for us to judge as GCC maintainers. This is certainly a fair question, and one that Stan (who's out of town today) can probably address. I certainly can't. :( --Zem -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 From gcc-patches-return-37896-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:49:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27360 invoked by alias); 2 Jul 2001 17:49:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27340 invoked from network); 2 Jul 2001 17:49:29 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:49:29 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62HSF601666; Mon, 2 Jul 2001 10:28:15 -0700 Date: Mon, 02 Jul 2001 10:28:14 -0700 From: Mark Mitchell To: Richard Kenner cc: "gcc-patches@gcc.gnu.org" Subject: Re: Fix to EH bug caused by packed union issue Message-ID: <114850000.994094894@warlock.codesourcery.com> In-Reply-To: <10107021025.AA12048@vlsi1.ultra.nyu.edu> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, July 02, 2001 06:25:00 AM +0000 Richard Kenner wrote: > Since `layout_decl' aborts for most kinds of decls -- but specifically > does not abort for FIELD_DECL, one must assume it accepts FIELD_DECLs. > So, if you're now asserting that it should not be called for *any* > FIELD_DECLs, you need to change it to abort in that case too. If for > *these* FIELD_DECLs you need an explanatory comment about why for > other DECLs, but not FIELD_DECLs. > > The issue is simply that layout_decl is called for FIELD_DECLs only as > part of laying out the type they are in, not before. So I don't > understand your comment. Ah, but you so nicely proved my point! :-) Look at the comment for layout_decl -- it doesn't say what you said. So, you know more thna me, and it would be nice if you would update the layout_decl comment, and then also the change that you made to say "We don't call layout_decl for a FIELD_DECL here because the containing type is not yet complete." And, it sounds like you should probably add an: if (!TYPE_SIZE (DECL_CONTEXT (field)) abort (); in layout_decl. > I'll remove the one hunk in question. Great. Thanks. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37897-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 17:54:59 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30952 invoked by alias); 2 Jul 2001 17:54:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30931 invoked from network); 2 Jul 2001 17:54:58 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 17:54:58 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62HYp601672; Mon, 2 Jul 2001 10:34:56 -0700 Date: Mon, 02 Jul 2001 10:34:51 -0700 From: Mark Mitchell To: Ziemowit Laski cc: "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 Message-ID: <120680000.994095291@warlock.codesourcery.com> In-Reply-To: <200107021734.KAA02360@scv1.apple.com> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, July 02, 2001 10:34:18 AM -0700 Ziemowit Laski wrote: > On Sunday, July 1, 2001, at 10:57 , Mark Mitchell wrote: > >> I am not in favor on a technical basis. Too much complication for too >> little win. > > I'm not sure how one would quantify a "win" in this case. :) Yeah, it's not very precise. :-) You're right that GNU Pascal not only existing but being popular would be a good argument. A "win" is a situation where the cost of the extension (documentation, maintenance, etc.) is outweighed by the benefits to users, as measured by the person juding the winningness. :-) Here, I see little benefit to any user not using Pascal, and there are few of them, except in MacOS land, so I'm not keen on the extension. I am rabid in this way; much of the nastiness of GCC comes from a billion different little extensions, each harmless on their own, that add up to a big giant mess. Note, however, that I am not the Grand Poopah of GCC. It only takes one person to approve a change, and there are a bunch of people that can approve it, so all you have to do is convince one of them. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37898-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:04:26 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4569 invoked by alias); 2 Jul 2001 18:04:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4535 invoked from network); 2 Jul 2001 18:04:23 -0000 Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:04:23 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15H83a-0007RS-00; Mon, 02 Jul 2001 19:04:22 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15H83Z-0000Jh-00; Mon, 02 Jul 2001 19:04:21 +0100 Date: Mon, 2 Jul 2001 19:04:17 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Mark Mitchell cc: Zack Weinberg , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates In-Reply-To: <8780000.994090534@warlock.codesourcery.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Mon, 2 Jul 2001, Mark Mitchell wrote: > Perhaps I have a different view of snapshots than others. I would like > them to be essentially pre-releases (but with none of the quality control > that normally implies, so probably a better term is needed). That The lack of quality control means that at present there is a significant probability that a random snapshot (as a sample of the CVS tree at a random time) doesn't build on some platforms. If the snapshot script were to build GCC, then those weeks would fail to have snapshots at all (though they might well build on other platforms). > I'm not particulary concerned about the size of the diffs; the way to > get minimal bandwidth is probably `cvs update' when a new snapshot > comes out, especially since that contains very few generated files, > by hypothesis. I see the snapshot diffs as being a way of reading and reviewing all changes to GCC over a week - in which case, the smaller the better. (Though a gcc-cvs-patches list, as I suggested in other/1634, might be better for this purpose.) -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37899-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:13:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8639 invoked by alias); 2 Jul 2001 18:13:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8619 invoked from network); 2 Jul 2001 18:13:08 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:13:08 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id UAA02791; Mon, 2 Jul 2001 20:13:04 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62ID3v20786; Mon, 2 Jul 2001 20:13:03 +0200 (MEST) From: Rainer Orth Message-ID: <15168.47533.784453.326596@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 20:13:01 +0200 (MEST) To: "Joseph S. Myers" Cc: Gerald Pfeifer , Subject: Re: 3.0 PATCH: More fixes to install.texi In-Reply-To: References: X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Joseph S. Myers writes: > Note that a lot of this patch (e.g. changes GNU CC to GCC, Objective C to > Objective-C) has already been covered in other patches or may conflict > with them - so could you post the exact patch you end up committing to > gcc-patches? Sure, and thanks for pointing this out: when I double-checked the merge results, I noticed and fixed a couple of places where earlier fixes had been lost. Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE Index: doc/install.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/install.texi,v retrieving revision 1.1.2.37 diff -u -p -r1.1.2.37 install.texi --- install.texi 2001/07/02 16:44:33 1.1.2.37 +++ install.texi 2001/07/02 18:03:56 @@ -105,13 +105,11 @@ as detailing some target specific instal GCC includes several components that previously were separate distributions with their own installation instructions. This document supersedes all -package specific installation instructions. We provide the component -specific installation information in the source distribution for historical -reference purposes only. +package specific installation instructions. @emph{Before} starting the build/install procedure please check the @ifnothtml -@xref{Specific, host/target specific installation notes}. +@ref{Specific, host/target specific installation notes}. @end ifnothtml @ifnotinfo @uref{specific.html,,host/target specific installation notes}. @@ -149,7 +147,8 @@ Please note that GCC does not support @s won't do so in the near future as this would open a can of worms. Instead, we suggest that you install GCC into a directory of its own and simply remove that directory when you do not need that specific version of GCC -any longer. +any longer, and, if shared libraries are installed there as well, no +more binaries exist that use them. @html
    @@ -175,7 +174,8 @@ any longer. @cindex Downloading GCC @cindex Downloading the Source -GCC is distributed via CVS and FTP tarballs compressed with @command{gzip} or +GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP +tarballs compressed with @command{gzip} or @command{bzip2}. It is possible to download a full distribution or specific components. @@ -183,14 +183,13 @@ Please refer to our @uref{http://gcc.gnu for information on how to obtain GCC@. The full distribution includes the C, C++, Objective-C, Fortran, Java, -and Chill compilers. The full distribution also includes runtime libraries -for C++, Objective-C, Fortran, Java and Chill. (GCC 3.0 does not -include Chill. Releases before 3.0 do not include the Java runtime -library.) In GCC 3.0 and later versions, GNU compiler testsuites +and CHILL compilers. The full distribution also includes runtime libraries +for C++, Objective-C, Fortran, Java and CHILL. (GCC 3.0 does not +include CHILL.) In GCC 3.0 and later versions, GNU compiler testsuites are also included in the full distribution. If you choose to download specific components, you must download the core -gcc distribution plus any language specific distributions you wish to +GCC distribution plus any language specific distributions you wish to use. The core distribution includes the C language front end as well as the shared components. Each language has a tarball which includes the language front end as well as the language runtime (when appropriate). @@ -248,7 +247,7 @@ where @var{srcdir} == @var{objdir} shoul get extensive testing; building where @var{objdir} is a subdirectory of @var{srcdir} is unsupported. -If you have built GCC previously in the same directory for a +If you have previously built GCC in the same directory for a different target machine, do @samp{make distclean} to delete all files that might be invalid. One of the files this deletes is @file{Makefile}; if @samp{make distclean} complains that @file{Makefile} @@ -262,12 +261,18 @@ Second, when configuring a native system your environment before running configure. Otherwise the configuration scripts may fail. +Note that the bootstrap compiler and the resulting GCC must be link +compatible, else the bootstrap will fail with linker errors about +incompatible object file formats. Several multilibed targets are +affected by this requirement, see @ref{Specific, host/target specific +installation notes} for details. + To configure GCC: @example % mkdir @var{objdir} % cd @var{objdir} - % @var{srcdir}/configure [@var{target}] [@var{options}] + % @var{srcdir}/configure [@var{options}] [@var{target}] @end example @@ -339,7 +344,7 @@ manual.) @item --with-gxx-include-dir=@var{dirname} Specify -the installation directory for g++ header files. The default is +the installation directory for G++ header files. The default is @file{@var{prefix}/include/g++-v3}. @end table @@ -382,7 +387,9 @@ installing GCC creates the directory. @item --enable-shared[=@var{package}[,@dots{}]] Build shared versions of libraries, if shared libraries are supported on the target platform. Unlike GCC 2.95.x and earlier, shared libraries -are enabled by default on all platforms that support shared libraries. +are enabled by default on all platforms that support shared libraries, +except for @samp{libobjc} which is built as a static library only by +default. If a list of packages is given as an argument, build shared libraries only for the listed packages. For other packages, only static libraries @@ -391,7 +398,7 @@ will be built. Package names currently @samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and @samp{libjava}. Note that @samp{libobjc} does not recognize itself by any name, so, if you list package names in @option{--enable-shared}, -you'll only get static Objective-C libraries. @samp{libf2c} and +you will only get static Objective-C libraries. @samp{libf2c} and @samp{libiberty} do not support shared libraries at all. Use @option{--disable-shared} to build only static libraries. Note that @@ -406,7 +413,7 @@ assembler is not actually the GNU assemb result if the compiler finds the GNU assembler but has not been configured with @option{--with-gnu-as}.) If you have more than one assembler installed on your system, you may want to use this option in -connection with @option{--with-as=@file{/path/to/gas}}. +connection with @option{--with-as=@var{pathname}}. The systems where it makes a difference whether you use the GNU assembler are @samp{hppa1.0-@var{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}}, @@ -422,7 +429,7 @@ On the systems listed above (except for 386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler, you should also use the GNU linker (and specify @option{--with-gnu-ld}). -@item --with-as=@file{/path/to/as} +@item --with-as=@var{pathname} Specify that the compiler should use the assembler pointed to by @var{pathname}, rather than the one found by the standard rules to find an assembler, which @@ -433,9 +440,9 @@ Check the @file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}} directory, where @var{exec_prefix} defaults to @var{prefix} which defaults to @file{/usr/local} unless overridden by the -@option{--prefix=/pathname} switch described above. @var{target} is the +@option{--prefix=@var{pathname}} switch described above. @var{target} is the target system triple, such as @var{sparc-sun-solaris2.7}, and -@var{version} denotes the GCC version, such as 2.95.2. +@var{version} denotes the GCC version, such as 3.0. @item Check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on Sun Solaris). @@ -450,7 +457,7 @@ Same as @uref{#with-gnu-as,,@option{--wi but for linker. -@item --with-ld=@file{/path/to/ld} +@item --with-ld=@var{pathname} Same as @option{--with-as}, but for the linker. @@ -484,10 +491,11 @@ information normally used on 386 SVR4 pl workable alternative. This requires gas and gdb, as the normal SVR4 tools can not generate or interpret stabs. -@item --enable-multilib +@item --disable-multilib Specify that multiple target -libraries should be built to support different target variants, calling -conventions, etc. This is the default. +libraries to support different target variants, calling +conventions, etc should not be built. The default is to build a +predefined set of them. @item --enable-threads Specify that the target @@ -517,7 +525,7 @@ AIX thread support. @item dce DCE thread support. @item mach -Generic MACH thread support, known to work on NEXTSTEP@. (Please note +Generic MACH thread support, known to work on NeXTSTEP@. (Please note that the file needed to support this configuration, @file{gthr-mach.h}, is missing and thus this setting will cause a known bootstrap failure.) @item no @@ -533,7 +541,7 @@ RTEMS thread support. @item single Disable thread support, should work for all platforms. @item solaris -SUN Solaris thread support. +Sun Solaris 2 thread support. @item vxworks VxWorks thread support. @item win32 @@ -573,24 +581,26 @@ to do so. Specify that runtime libraries should be installed in the compiler specific subdirectory (@file{@var{libsubdir}}) rather than the usual places. In -addition, libstdc++'s include files will be installed in +addition, @samp{libstdc++}'s include files will be installed in @file{@var{libsubdir}/include/g++} unless you overruled it by using @option{--with-gxx-include-dir=@var{dirname}}. Using this option is particularly useful if you intend to use several versions of GCC in -parallel. This is currently supported by @samp{libf2c} and -@samp{libstdc++}. +parallel. This is currently supported by @samp{libf2c} and +@samp{libstdc++}, and is the default for @samp{libobjc} which cannot be +changed in this case. @item --enable-languages=@var{lang1},@var{lang2},@dots{} Specify that only a particular subset of compilers and their runtime libraries should be built. For a list of valid values for @var{langN} you can issue the following command in the -@file{gcc} directory of your GCC source tree:@* @samp{grep language= -*/config-lang.in}@* Currently, you can use any of the following: +@file{gcc} directory of your GCC source tree:@* +@example +grep language= */config-lang.in +@end example +Currently, you can use any of the following: @code{c}, @code{c++}, @code{f77}, @code{java} and @code{objc}. @code{CHILL} is not currently maintained, and will almost -certainly fail to compile. Note that this switch does not work with -EGCS 1.1.2 or older versions of egcs. It is supported in GCC 2.95 -and newer versions.@* +certainly fail to compile.@* If you do not pass this flag, all languages available in the @file{gcc} sub-tree will be configured. Re-defining @code{LANGUAGES} when calling @samp{make bootstrap} @strong{does not} work anymore, as those @@ -603,27 +613,27 @@ to use GCJ with some other run-time, or separately, or it just happens not to build on your particular machine. In general, if the Java front end is enabled, the GCJ libraries will be enabled too, unless they're known to not work on -the target platform. If GCJ is enabled but libgcj isn't built, you +the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you may need to port it; in this case, before modifying the top-level -@file{configure.in} so that libgcj is enabled by default on this platform, +@file{configure.in} so that @samp{libgcj} is enabled by default on this platform, you may use @option{--enable-libgcj} to override the default. @item --with-dwarf2 Specify that the compiler should -use DWARF2 debugging information as the default. +use DWARF 2 debugging information as the default. @item --enable-win32-registry -@itemx --enable-win32-registry=@var{KEY} +@itemx --enable-win32-registry=@var{key} @itemx --disable-win32-registry The @option{--enable-win32-registry} option enables Windows-hosted GCC to look up installations paths in the registry using the following key: @smallexample -@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{KEY}} +@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}} @end smallexample -@var{KEY} defaults to GCC version number, and can be overridden by the -@option{--enable-win32-registry=@var{KEY}} option. Vendors and distributors +@var{key} defaults to GCC version number, and can be overridden by the +@option{--enable-win32-registry=@var{key}} option. Vendors and distributors who use custom installers are encouraged to provide a different key, perhaps one comprised of vendor name and GCC version number, to avoid conflict with existing installations. This feature is enabled @@ -677,16 +687,16 @@ which has target include files. compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist. These include files will be copied into the @file{gcc} install directory. Fixincludes will be run on these files to make them compatible with -@command{gcc}. +GCC. @item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the @file{gcc} install directory. @item --with-newlib -Specifies that ``newlib'' is +Specifies that @samp{newlib} is being used as the target C library. This causes @code{__eprintf} to be -omitted from libgcc.a on the assumption that it will be provided by -newlib. +omitted from @file{libgcc.a} on the assumption that it will be provided by +@samp{newlib}. @end table Note that each @option{--enable} option has a corresponding @@ -776,8 +786,8 @@ gperf. @item Build target tools for use by the compiler such as binutils (bfd, -binutils, gas, gprof, ld, and opcodes)@* -if they have been individually linked +binutils, gas, gprof, ld, and opcodes) +if they have been individually linked or moved into the top level GCC source tree before configuring. @item @@ -805,8 +815,8 @@ without debugging information with @samp roughly 40% of disk space both for the bootstrap and the final installation. (Libraries will still contain debugging information.) -If you wish to use non-default flags when compiling the stage2 and -stage3 compile, set @code{BOOT_CFLAGS} on the command line when doing +If you wish to use non-default GCC flags when compiling the stage2 and +stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing @samp{make bootstrap}. Non-default optimization flags are less well tested here than the default of @samp{-g -O2}, but should still work. In a few cases, you may find that you need to specify special flags such @@ -820,11 +830,11 @@ If you used the flag @option{--enable-la the compilers to be built, only those you've actually enabled will be built. This will of course only build those runtime libraries, for which the particular compiler has been built. Please note, -that re-defining LANGUAGES when calling @samp{make bootstrap} +that re-defining @env{LANGUAGES} when calling @samp{make bootstrap} @strong{does not} work anymore! If the comparison of stage2 and stage3 fails, this normally indicates -that the stage 2 compiler has compiled GCC incorrectly, and is therefore +that the stage2 compiler has compiled GCC incorrectly, and is therefore a potentially serious bug which you should investigate and report. (On a few systems, meaningful comparison of object files is impossible; they always appear ``different''. If you encounter this problem, you will @@ -902,10 +912,6 @@ the number of processors in your machine @cindex Installing GCC: Testing @cindex Testsuite -@strong{Please note that this is only applicable -to current development versions of GCC and GCC 3.0 or later. -GCC 2.95.x does not come with a testsuite.} - Before you install GCC, you might wish to run the testsuite. This step is optional and may require you to download additional software. @@ -919,11 +925,6 @@ dejagnu 1.3 is not sufficient. Now you may need specific preparations: @itemize @bullet -@item -In order to run the libio tests in GCC 2.95 and earlier versions of GCC -on targets which do not fully -support Unix/POSIX commands (e.g.@: Cygwin), the references to the @file{dbz} -directory have to be deleted from @file{libio/configure.in}. @item The following environment variables may need to be set appropriately, as in @@ -958,20 +959,20 @@ compilers as well as the C++ and Java ru As a first possibility to cut down the number of tests that are run it is possible to use @samp{make check-gcc} or @samp{make check-g++} -in the gcc subdirectory of the object directory. To further cut down the +in the @file{gcc} subdirectory of the object directory. To further cut down the tests the following is possible: @example make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}" @end example -This will run all gcc execute tests in the testsuite. +This will run all @command{gcc} execute tests in the testsuite. @example make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}" @end example -This will run the g++ ``old-deja'' tests in the testsuite where the filename +This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename matches @samp{9805*}. The @file{*.exp} files are located in the testsuite directories of the GCC @@ -1049,8 +1050,10 @@ should look here first if you think your @chapter Installing GCC: Final installation @end ifnothtml -Now that GCC has been built and tested, you can install it with -@samp{cd @var{objdir}; make install}. +Now that GCC has been built (and optionally tested), you can install it with +@example +cd @var{objdir}; make install +@end example That step completes the installation of GCC; user level binaries can be found in @file{@var{prefix}/bin} where @var{prefix} is the value you @@ -1066,11 +1069,11 @@ info format in @file{@var{infodir}} (nor If you don't mind, please quickly review the @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,build status page}. If your system is not listed, send a note to -@uref{mailto:gcc@@gcc.gnu.org,,gcc@@gcc.gnu.org} indicating -that you successfully built and installed GCC@. +@email{gcc@@gcc.gnu.org} indicating +that you successfully built and installed GCC. Include the output from running @file{@var{srcdir}/config.guess}. (Do -not send us the config.guess file itself, just the one-line output from +not send us the @file{config.guess} file itself, just the one-line output from running it!) If you find a bug, please report it following our @@ -1515,13 +1518,13 @@ we need to use the old assembler, invoke Compaq C Compiler: @example - % CC=cc @var{srcdir}/configure [@var{target}] [@var{options}] + % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}] @end example or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: @example - % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{target}] [@var{options}] + % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}] @end example GCC writes a @samp{.verstamp} directive to the assembler output file @@ -2446,7 +2449,7 @@ does not happen on 3.1. You absolutely @strong{must} use GNU sed and GNU make on this platform. -On NEXTSTEP 3.x where x < 3 the build of GCC will abort during +On NeXTSTEP 3.x where x < 3 the build of GCC will abort during stage1 with an error message like this: @example From gcc-patches-return-37900-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:16:38 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9559 invoked by alias); 2 Jul 2001 18:16:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9537 invoked from network); 2 Jul 2001 18:16:35 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:16:35 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62Htx601693; Mon, 2 Jul 2001 10:55:59 -0700 Date: Mon, 02 Jul 2001 10:55:58 -0700 From: Mark Mitchell To: "Joseph S. Myers" cc: Zack Weinberg , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <123220000.994096558@warlock.codesourcery.com> In-Reply-To: X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline > The lack of quality control means that at present there is a significant > probability that a random snapshot (as a sample of the CVS tree at a > random time) doesn't build on some platforms. If the snapshot script were > to build GCC, then those weeks would fail to have snapshots at all (though > they might well build on other platforms). True. Non-building on i686-pc-linux-gnu is quite rare, since it's so heavily banged on, and there's nothing to say that we couldn't produce the tarball anyhow in that case, using whatever happenned in the source directory up to that point. It's also unclear to me whether distributing such a snapshot has a whole lot of value; skipping that week doesn't strike me as a catastrophe. It really does depend on what we're trying to achieve with the snapshots. > > I see the snapshot diffs as being a way of reading and reviewing all > changes to GCC over a week - in which case, the smaller the better. > (Though a gcc-cvs-patches list, as I suggested in other/1634, might be > better for this purpose.) Yeah; all you want is a cron job that does `cvs diff' I think. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37901-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:20:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10498 invoked by alias); 2 Jul 2001 18:20:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10478 invoked from network); 2 Jul 2001 18:20:05 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:20:05 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id UAA03116 for ; Mon, 2 Jul 2001 20:20:03 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62IK2J20831; Mon, 2 Jul 2001 20:20:02 +0200 (MEST) From: Rainer Orth Message-ID: <15168.47952.775888.739861@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 20:20:00 +0200 (MEST) To: gcc-patches@gcc.gnu.org Subject: Unreviewed patches for 3.0.1 X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII The following patches haven't been reviewed or commented upon yet: 3.0.1 PATCH: Avoid subtracting labels in different sections on Solaris 2/Intel http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01561.html Necessary to allow bootstrap on Solaris 2/Intel with system as. 3.0.1 PATCH: Fix Solaris 2/Intel comparison failure http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01559.html Necessary to fix comparison failure on f/data.o for Solaris 2/Intel (already on mainline). Many libjava testsuite failures on Solaris/SPARC and Intel http://gcc.gnu.org/ml/java/2001-06/msg00247.html Necessary to avoid hundreds of spurious libjava testsuite failures on Solaris 2. Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37902-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:30:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16310 invoked by alias); 2 Jul 2001 18:30:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16272 invoked from network); 2 Jul 2001 18:30:25 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:30:25 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f62ITsH00073; Mon, 2 Jul 2001 11:29:54 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 11:29:54 -0700 Date: Mon, 2 Jul 2001 11:29:54 -0700 From: "Zack Weinberg" To: Mark Mitchell Cc: "Joseph S. Myers" , Gerald Pfeifer , Neil Booth , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <20010702112954.A12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <113080000.994092363@warlock.codesourcery.com> User-Agent: Mutt/1.3.18i On Mon, Jul 02, 2001 at 09:46:03AM -0700, Mark Mitchell wrote: > >> > >> Okay, I *think* this is as simple as the patch below. I didn't code > >> the $(GENERATED_MANPAGES) stuff, though, so I'd appreciate if someone > >> could vet this. > > > > You need to remove the entries for the manpages from contrib/gcc_update as > > well. > > Approved for mainline with that change. Done. * gcc_update: Remove entries for gcc.1, cpp.1, gcov.1. =================================================================== Index: contrib/gcc_update --- contrib/gcc_update 2001/06/14 19:02:00 1.28 +++ contrib/gcc_update 2001/07/02 18:29:09 @@ -69,9 +69,6 @@ gcc/configure: gcc/configure.in gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h gcc/config.in: gcc/cstamp-h.in gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def -gcc/doc/gcov.1: gcc/doc/gcov.texi -gcc/doc/cpp.1: gcc/doc/cpp.texi -gcc/doc/gcc.1: gcc/doc/invoke.texi # And then, language-specific files gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def # And libraries, at last From gcc-patches-return-37903-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:39:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 22488 invoked by alias); 2 Jul 2001 18:39:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22386 invoked from network); 2 Jul 2001 18:39:14 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:39:14 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA14064; Mon, 2 Jul 01 14:43:26 EDT Date: Mon, 2 Jul 01 14:43:26 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107021843.AA14064@vlsi1.ultra.nyu.edu> To: mark@codesourcery.com Subject: Re: Fix to EH bug caused by packed union issue Cc: gcc-patches@gcc.gnu.org Look at the comment for layout_decl -- it doesn't say what you said. So, you know more thna me, and it would be nice if you would update the layout_decl comment, and then also the change that you made to say "We don't call layout_decl for a FIELD_DECL here because the containing type is not yet complete." No, it's not that it's not *complete*, but that the call should only be made *while* it's being completed. And, it sounds like you should probably add an: if (!TYPE_SIZE (DECL_CONTEXT (field)) abort (); in layout_decl. No, that would always be triggered. You can't know the size of a struct until you've laid out all the fields. From gcc-patches-return-37904-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:43:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25103 invoked by alias); 2 Jul 2001 18:43:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25028 invoked from network); 2 Jul 2001 18:43:01 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:43:01 -0000 Received: from taarna.cygnus.com (taarna.cygnus.com [205.180.230.102]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id LAA07552; Mon, 2 Jul 2001 11:43:00 -0700 (PDT) Received: (bkoz@localhost) by taarna.cygnus.com (SMI-8.6/8.6.4) id LAA03567; Mon, 2 Jul 2001 11:43:00 -0700 Date: Mon, 2 Jul 2001 11:43:00 -0700 (PDT) From: Benjamin Kosnik X-Sender: bkoz@taarna.cygnus.com To: Jeffrey Oldham cc: gcc-patches@gcc.gnu.org Subject: Re: [v3] locale::_Impl tweaks In-Reply-To: <200107011701.KAA32715@oz.codesourcery.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII > For i686-pc-linux-gnu gcc 3.1, libstdc++-v3 tests > 22_locale/numpunct_char_members.cc and 22_locale/members.cc started > failing in my nightly builds after your patch. Are you seeing the > same errors? yes. this is expected. see my patch notice: http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01912.html in particular: This will appear to give two new fails for a default-configured library. These failures are not significant, From gcc-patches-return-37905-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:54:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4730 invoked by alias); 2 Jul 2001 18:54:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4704 invoked from network); 2 Jul 2001 18:54:00 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:54:00 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62IWs601735; Mon, 2 Jul 2001 11:32:54 -0700 Date: Mon, 02 Jul 2001 11:32:52 -0700 From: Mark Mitchell To: Richard Kenner cc: "gcc-patches@gcc.gnu.org" Subject: Re: Fix to EH bug caused by packed union issue Message-ID: <125010000.994098772@warlock.codesourcery.com> In-Reply-To: <10107021843.AA14064@vlsi1.ultra.nyu.edu> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline > No, it's not that it's not *complete*, but that the call should only be > made *while* it's being completed. > > No, that would always be triggered. You can't know the size of a struct > until you've laid out all the fields. There, you've done it again. :-) Every time you correct me, you should be adding a comment. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37906-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:55:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5318 invoked by alias); 2 Jul 2001 18:55:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5268 invoked from network); 2 Jul 2001 18:55:09 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:55:09 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f62It6428193 for ; Mon, 2 Jul 2001 11:55:07 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 11:55:07 -0700 From: "Zack Weinberg" Date: Mon, 2 Jul 2001 11:55:07 -0700 To: gcc-patches@gcc.gnu.org Subject: cppinit.c cleanup Message-ID: <20010702115507.B12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.18i cppinit.c currently has a long confusing switch statement which sets defaults for several options based on the source language. This patch replaces it with a short static table. I think it's less confusing as well as shorter, although it's best read with an index card to mask off the irrelevant rows. Bootstrapped i686-linux. There are already test cases for -std=, which is the primary driver of this code. -- zw I was putting away groceries in our kitchen when I got to the cabbages and thought "this needs to be tossed into air, preferably without looking up first." -- James Nicoll * cppinit.c (lang_defaults): New table. (set_lang): Just read from lang_defaults into the live options structure. =================================================================== Index: cppinit.c --- cppinit.c 2001/06/09 22:55:48 1.160 +++ cppinit.c 2001/07/02 18:48:38 @@ -370,85 +370,51 @@ merge_include_chains (pfile) /* Sets internal flags correctly for a given language, and defines macros if necessary. */ + +struct lang_flags +{ + char c99; + char objc; + char cplusplus; + char extended_numbers; + char trigraphs; + char dollars_in_ident; + char cplusplus_comments; + char digraphs; +}; + +/* ??? Enable $ in identifiers in assembly? */ +static const struct lang_flags lang_defaults[] = +{ /* c99 objc c++ xnum trig dollar c++comm digr */ + /* GNUC89 */ { 0, 0, 0, 1, 0, 1, 1, 1 }, + /* GNUC99 */ { 1, 0, 0, 1, 0, 1, 1, 1 }, + /* STDC89 */ { 0, 0, 0, 0, 1, 0, 0, 0 }, + /* STDC94 */ { 0, 0, 0, 0, 1, 0, 0, 1 }, + /* STDC99 */ { 1, 0, 0, 1, 1, 0, 1, 1 }, + /* GNUCXX */ { 0, 0, 1, 1, 0, 1, 1, 1 }, + /* CXX98 */ { 0, 0, 1, 1, 1, 0, 1, 1 }, + /* OBJC */ { 0, 1, 0, 1, 0, 1, 1, 1 }, + /* OBJCXX */ { 0, 1, 1, 1, 0, 1, 1, 1 }, + /* ASM */ { 0, 0, 0, 1, 0, 0, 1, 0 } +}; + static void set_lang (pfile, lang) cpp_reader *pfile; enum c_lang lang; { - /* Defaults. */ + const struct lang_flags *l = &lang_defaults[(int) lang]; + CPP_OPTION (pfile, lang) = lang; - CPP_OPTION (pfile, objc) = 0; - CPP_OPTION (pfile, cplusplus) = 0; - CPP_OPTION (pfile, extended_numbers) = 1; /* Allowed in GNU C and C99. */ - - switch (lang) - { - /* GNU C. */ - case CLK_GNUC99: - CPP_OPTION (pfile, trigraphs) = 0; - CPP_OPTION (pfile, dollars_in_ident) = 1; - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 1; - CPP_OPTION (pfile, c99) = 1; - break; - case CLK_GNUC89: - CPP_OPTION (pfile, trigraphs) = 0; - CPP_OPTION (pfile, dollars_in_ident) = 1; - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 1; - CPP_OPTION (pfile, c99) = 0; - break; - - /* ISO C. */ - case CLK_STDC94: - case CLK_STDC89: - CPP_OPTION (pfile, trigraphs) = 1; - CPP_OPTION (pfile, dollars_in_ident) = 0; - CPP_OPTION (pfile, cplusplus_comments) = 0; - CPP_OPTION (pfile, digraphs) = lang == CLK_STDC94; - CPP_OPTION (pfile, c99) = 0; - CPP_OPTION (pfile, extended_numbers) = 0; - break; - case CLK_STDC99: - CPP_OPTION (pfile, trigraphs) = 1; - CPP_OPTION (pfile, dollars_in_ident) = 0; - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 1; - CPP_OPTION (pfile, c99) = 1; - break; - - /* Objective C. */ - case CLK_OBJCXX: - CPP_OPTION (pfile, cplusplus) = 1; - case CLK_OBJC: - CPP_OPTION (pfile, trigraphs) = 0; - CPP_OPTION (pfile, dollars_in_ident) = 1; - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 1; - CPP_OPTION (pfile, c99) = 0; - CPP_OPTION (pfile, objc) = 1; - break; - - /* C++. */ - case CLK_GNUCXX: - case CLK_CXX98: - CPP_OPTION (pfile, cplusplus) = 1; - CPP_OPTION (pfile, trigraphs) = lang == CLK_CXX98; - CPP_OPTION (pfile, dollars_in_ident) = lang == CLK_GNUCXX; - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 1; - CPP_OPTION (pfile, c99) = 0; - break; - /* Assembler. */ - case CLK_ASM: - CPP_OPTION (pfile, trigraphs) = 0; - CPP_OPTION (pfile, dollars_in_ident) = 0; /* Maybe not? */ - CPP_OPTION (pfile, cplusplus_comments) = 1; - CPP_OPTION (pfile, digraphs) = 0; - CPP_OPTION (pfile, c99) = 0; - break; - } + CPP_OPTION (pfile, c99) = l->c99; + CPP_OPTION (pfile, objc) = l->objc; + CPP_OPTION (pfile, cplusplus) = l->cplusplus; + CPP_OPTION (pfile, extended_numbers) = l->extended_numbers; + CPP_OPTION (pfile, trigraphs) = l->trigraphs; + CPP_OPTION (pfile, dollars_in_ident) = l->dollars_in_ident; + CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments; + CPP_OPTION (pfile, digraphs) = l->digraphs; } #ifdef HOST_EBCDIC From gcc-patches-return-37907-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 18:55:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5398 invoked by alias); 2 Jul 2001 18:55:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5274 invoked from network); 2 Jul 2001 18:55:10 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 18:55:10 -0000 Received: from greed.delorie.com (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id LAA08965; Mon, 2 Jul 2001 11:54:46 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.9.3/8.9.3) id OAA17300; Mon, 2 Jul 2001 14:54:43 -0400 Date: Mon, 2 Jul 2001 14:54:43 -0400 Message-Id: <200107021854.OAA17300@greed.delorie.com> From: DJ Delorie To: zackw@Stanford.EDU CC: mark@codesourcery.com, pfeifer@dbai.tuwien.ac.at, neil@daikokuya.demon.co.uk, gcc-patches@gcc.gnu.org In-reply-to: <20010702003925.B24974@stanford.edu> (zackw@Stanford.EDU) Subject: Re: More cpp.texi updates References: <20010702003925.B24974@stanford.edu> > * doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed. I am opposed to this change, and request that it be reverted. There are systems that support man pages but not perl (or at least, one cannot assume perl is available, or that it is capable of running the pod2man script). Those systems will not be able to build the man pages. Configure and the Makefile were careful to detect these systems and use the CVS man pages when needed (although Mark never changed the $(STAMP) thing back as I requested, which I again request he do). From gcc-patches-return-37908-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:21:27 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20131 invoked by alias); 2 Jul 2001 19:21:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20095 invoked from network); 2 Jul 2001 19:21:24 -0000 Received: from unknown (HELO disaster.jaj.com) (209.64.26.39) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:21:24 -0000 Received: (from pedwards@localhost) by disaster.jaj.com (8.9.3/8.9.3) id OAA03365; Mon, 2 Jul 2001 14:05:24 -0400 Date: Mon, 2 Jul 2001 14:05:24 -0400 From: Phil Edwards To: Zack Weinberg Cc: Neil Booth , Stan Shebs , gcc-patches@gcc.gnu.org Subject: Re: Objective C lexer - small cleanup Message-ID: <20010702140524.A3345@disaster.jaj.com> References: <20010701190653.A12236@daikokuya.demon.co.uk> <20010701114742.C18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010701114742.C18369@stanford.edu>; from zackw@Stanford.EDU on Sun, Jul 01, 2001 at 11:47:42AM -0700 On Sun, Jul 01, 2001 at 11:47:42AM -0700, Zack Weinberg wrote: > A word about references to the C standard: "6.10.8.4" is ambiguous. > It could mean paragraph 4 of section 6.10.8, or all of section > 6.10.8.4. I prefer to indicate that the last digit is a paragraph > number, "6.10.8p4". > > The C++ standard nicely avoids this problem by giving all the sections > names. Someone (dunno who) started referring to [x.y.z]/p and many in the C++ community seem to have adopted it. It works for me. Phil -- Would I had phrases that are not known, utterances that are strange, in new language that has not been used, free from repetition, not an utterance which has grown stale, which men of old have spoken. - anonymous Egyptian scribe, c.1700 BC From gcc-patches-return-37909-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:26:39 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23059 invoked by alias); 2 Jul 2001 19:26:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23012 invoked from network); 2 Jul 2001 19:26:37 -0000 Received: from unknown (HELO disaster.jaj.com) (209.64.26.39) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:26:37 -0000 Received: (from pedwards@localhost) by disaster.jaj.com (8.9.3/8.9.3) id OAA03393; Mon, 2 Jul 2001 14:10:40 -0400 Date: Mon, 2 Jul 2001 14:10:40 -0400 From: Phil Edwards To: Michael Elizabeth Chastain Cc: aoliva@redhat.com, gcc-patches@gcc.gnu.org Subject: Re: [PATCH] build failure, gcc 3.0, native hppa2.0w-hp-hpux11.00, ltconfig Message-ID: <20010702141040.B3345@disaster.jaj.com> References: <200107011648.JAA25630@bosch.cygnus.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107011648.JAA25630@bosch.cygnus.com>; from chastain@cygnus.com on Sun, Jul 01, 2001 at 09:48:51AM -0700 On Sun, Jul 01, 2001 at 09:48:51AM -0700, Michael Elizabeth Chastain wrote: > Argh. Now I gotta throw off an autoconf bug report too, and see if I > can ignore or work around the problem, so I can build the cvs version > of libtool (on two branches), so I can submit a patch to libtool, so > that I can submit a patch to gcc (probably two branches as well). > > This feels like an initiation ritual. :) You've figured it out. Congratulations! Your robe and wand will be shipped to you shortly; someone will drop by to teach you the secret handshake after lunch. Phil -- Would I had phrases that are not known, utterances that are strange, in new language that has not been used, free from repetition, not an utterance which has grown stale, which men of old have spoken. - anonymous Egyptian scribe, c.1700 BC From gcc-patches-return-37910-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:35:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27924 invoked by alias); 2 Jul 2001 19:35:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27899 invoked from network); 2 Jul 2001 19:35:27 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:35:27 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id VAA04859; Mon, 2 Jul 2001 21:24:50 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62JOnp21116; Mon, 2 Jul 2001 21:24:49 +0200 (MEST) From: Rainer Orth Message-ID: <15168.51840.345200.972499@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 21:24:48 +0200 (MEST) To: Nicola Pero Cc: Stan Shebs , ovidiu@cup.hp.com, gcc-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Avoid link failure of Objective-C testsuite on Solaris2/Intel In-Reply-To: References: <15164.56710.983332.403845@xayide.TechFak.Uni-Bielefeld.DE> X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Nicola Pero writes: > Here is a complete patch fixing libobjc: I've tried your patch on all configurations used to verify my patch to allow a shared libobjc to work on Solaris http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01785.html and it fixes all the testsuite differences between the static and shared cases reported there, so it looks very good. A few stylistic comments on the patch, though: > +Mon Jul 2 10:45:36 2001 Nicola Pero > + > + * objc/objc-api.h (object_is_class), (object_is_meta_class): Use * objc/objc-api.h (object_is_class, object_is_meta_class): > + Fixed. Be more specific here (all patches are supposed to fix something, unless adding a feature :-). > object_is_class(id object) > { > - return CLS_ISCLASS((Class)object); > + return (object != nil) && CLS_ISMETA (object->class_pointer); Use return ((object != nil) && CLS_ISMETA (object->class_pointer)); to match the GNU coding standards. > static inline BOOL > object_is_instance(id object) > { > - return (object!=nil)&&CLS_ISCLASS(object->class_pointer); > + return (object != nil) && CLS_ISCLASS (object->class_pointer); Likewise: return ((object != nil) && CLS_ISCLASS (object->class_pointer)); > static inline BOOL > object_is_meta_class(id object) > { > - return CLS_ISMETA((Class)object); > + return (object != nil) > + && !object_is_instance (object) > + && !object_is_class (object); > } Likewise: return ((object != nil) && !object_is_instance (object) && !object_is_class (object)); Btw, the whole file (objc/objc-api.h) is full of GCS violations. Would you mind providing a patch (probably mainline only) to fix this? Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37911-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:42:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 31292 invoked by alias); 2 Jul 2001 19:42:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31235 invoked from network); 2 Jul 2001 19:42:13 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:42:13 -0000 Received: from rtl.cygnus.com (rtl.cygnus.com [205.180.230.21]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id MAA14324; Mon, 2 Jul 2001 12:42:06 -0700 (PDT) From: Jim Wilson Received: (wilson@localhost) by rtl.cygnus.com (8.6.12/8.6.4) id MAA04741; Mon, 2 Jul 2001 12:42:05 -0700 Date: Mon, 2 Jul 2001 12:42:05 -0700 Message-Id: <200107021942.MAA04741@rtl.cygnus.com> To: sje@cup.hp.com Subject: Re: IA64 patch / build question In-Reply-To: <200107021726.KAA10833@hpsje.cup.hp.com> Organization: Cygnus Solutions, CA Cc: gcc-patches@gcc.gnu.org Your analysis is correct. The only thing you didn't mention is that mklibgcc.in is newer than t-ia64. So t-ia64 was correct when written, but the later mklibgcc.in file added a feature that solves the original problem, and hence we no longer need the L__divdi3 workaround. Your patch does not delete the now obsolete comment in t-ia64. Also, there was an obsolete comment in ia64.h that needed to be deleted. Here is the patch I checked in. 2001-07-02 Jim Wilson * config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment. 2001-07-02 Steve Ellcey * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore. * config/ia64/lib1funcs.asm: Change macro names to match t-ia64. Index: ia64.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.h,v retrieving revision 1.70 diff -p -r1.70 ia64.h *** ia64.h 2001/06/26 18:08:52 1.70 --- ia64.h 2001/07/02 19:29:55 *************** do { \ *** 1698,1709 **** /* Implicit Calls to Library Routines */ - /* ??? The ia64 linux kernel requires that we use the standard names for - divide and modulo routines. However, if we aren't careful, lib1funcs.asm - will be overridden by libgcc2.c. We avoid this by using different names - for lib1funcs.asm modules, e.g. __divdi3 vs _divdi3. Since lib1funcs.asm - goes into libgcc.a first, the linker will find it first. */ - /* Define this macro if GNU CC should generate calls to the System V (and ANSI C) library functions `memcpy' and `memset' rather than the BSD functions `bcopy' and `bzero'. */ --- 1698,1703 ---- Index: lib1funcs.asm =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/ia64/lib1funcs.asm,v retrieving revision 1.13 diff -p -r1.13 lib1funcs.asm *** lib1funcs.asm 2001/05/14 17:47:07 1.13 --- lib1funcs.asm 2001/07/02 19:29:55 *************** *** 1,4 **** ! #ifdef L__divtf3 // Compute a 80-bit IEEE double-extended quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 1,4 ---- ! #ifdef L_divtf3 // Compute a 80-bit IEEE double-extended quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divtf3: *** 40,46 **** .endp __divtf3 #endif ! #ifdef L__divdf3 // Compute a 64-bit IEEE double quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 40,46 ---- .endp __divtf3 #endif ! #ifdef L_divdf3 // Compute a 64-bit IEEE double quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divdf3: *** 82,88 **** .endp __divdf3 #endif ! #ifdef L__divsf3 // Compute a 32-bit IEEE float quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 82,88 ---- .endp __divdf3 #endif ! #ifdef L_divsf3 // Compute a 32-bit IEEE float quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divsf3: *** 118,124 **** .endp __divsf3 #endif ! #ifdef L__divdi3 // Compute a 64-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 118,124 ---- .endp __divsf3 #endif ! #ifdef L_divdi3 // Compute a 64-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divdi3: *** 168,174 **** .endp __divdi3 #endif ! #ifdef L__moddi3 // Compute a 64-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 168,174 ---- .endp __divdi3 #endif ! #ifdef L_moddi3 // Compute a 64-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __moddi3: *** 222,228 **** .endp __moddi3 #endif ! #ifdef L__udivdi3 // Compute a 64-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 222,228 ---- .endp __moddi3 #endif ! #ifdef L_udivdi3 // Compute a 64-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __udivdi3: *** 272,278 **** .endp __udivdi3 #endif ! #ifdef L__umoddi3 // Compute a 64-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 272,278 ---- .endp __udivdi3 #endif ! #ifdef L_umoddi3 // Compute a 64-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __umoddi3: *** 327,333 **** .endp __umoddi3 #endif ! #ifdef L__divsi3 // Compute a 32-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 327,333 ---- .endp __umoddi3 #endif ! #ifdef L_divsi3 // Compute a 32-bit integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __divsi3: *** 370,376 **** .endp __divsi3 #endif ! #ifdef L__modsi3 // Compute a 32-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 370,376 ---- .endp __divsi3 #endif ! #ifdef L_modsi3 // Compute a 32-bit integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __modsi3: *** 417,423 **** .endp __modsi3 #endif ! #ifdef L__udivsi3 // Compute a 32-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 417,423 ---- .endp __modsi3 #endif ! #ifdef L_udivsi3 // Compute a 32-bit unsigned integer quotient. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __udivsi3: *** 460,466 **** .endp __udivsi3 #endif ! #ifdef L__umodsi3 // Compute a 32-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency --- 460,466 ---- .endp __udivsi3 #endif ! #ifdef L_umodsi3 // Compute a 32-bit unsigned integer modulus. // // From the Intel IA-64 Optimization Guide, choose the minimum latency *************** __umodsi3: *** 507,513 **** .endp __umodsi3 #endif ! #ifdef L__save_stack_nonlocal // Notes on save/restore stack nonlocal: We read ar.bsp but write // ar.bspstore. This is because ar.bsp can be read at all times // (independent of the RSE mode) but since it's read-only we need to --- 507,513 ---- .endp __umodsi3 #endif ! #ifdef L_save_stack_nonlocal // Notes on save/restore stack nonlocal: We read ar.bsp but write // ar.bspstore. This is because ar.bsp can be read at all times // (independent of the RSE mode) but since it's read-only we need to *************** __ia64_save_stack_nonlocal: *** 556,562 **** .endp __ia64_save_stack_nonlocal #endif ! #ifdef L__nonlocal_goto // void __ia64_nonlocal_goto(void *target_label, void *save_area, // void *static_chain); --- 556,562 ---- .endp __ia64_save_stack_nonlocal #endif ! #ifdef L_nonlocal_goto // void __ia64_nonlocal_goto(void *target_label, void *save_area, // void *static_chain); *************** __ia64_nonlocal_goto: *** 609,615 **** .endp __ia64_nonlocal_goto #endif ! #ifdef L__restore_stack_nonlocal // This is mostly the same as nonlocal_goto above. // ??? This has not been tested yet. --- 609,615 ---- .endp __ia64_nonlocal_goto #endif ! #ifdef L_restore_stack_nonlocal // This is mostly the same as nonlocal_goto above. // ??? This has not been tested yet. *************** __ia64_restore_stack_nonlocal: *** 662,668 **** .endp __ia64_restore_stack_nonlocal #endif ! #ifdef L__trampoline // Implement the nested function trampoline. This is out of line // so that we don't have to bother with flushing the icache, as // well as making the on-stack trampoline smaller. --- 662,668 ---- .endp __ia64_restore_stack_nonlocal #endif ! #ifdef L_trampoline // Implement the nested function trampoline. This is out of line // so that we don't have to bother with flushing the icache, as // well as making the on-stack trampoline smaller. Index: t-ia64 =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/ia64/t-ia64,v retrieving revision 1.10 diff -p -r1.10 t-ia64 *** t-ia64 2001/06/22 21:35:25 1.10 --- t-ia64 2001/07/02 19:29:56 *************** *** 1,12 **** LIB1ASMSRC = ia64/lib1funcs.asm ! # ??? We change the names of the DImode div/mod files so that they won't ! # accidentally be overridden by libgcc2.c files. We used to use __ia64 as ! # a prefix, now we use __ as the prefix. ! LIB1ASMFUNCS = __divtf3 __divdf3 __divsf3 \ ! __divdi3 __moddi3 __udivdi3 __umoddi3 \ ! __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ ! __nonlocal_goto __restore_stack_nonlocal __trampoline # ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel # assembler does not accept # line number as a comment. --- 1,9 ---- LIB1ASMSRC = ia64/lib1funcs.asm ! LIB1ASMFUNCS = _divtf3 _divdf3 _divsf3 \ ! _divdi3 _moddi3 _udivdi3 _umoddi3 \ ! _divsi3 _modsi3 _udivsi3 _umodsi3 _save_stack_nonlocal \ ! _nonlocal_goto _restore_stack_nonlocal _trampoline # ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel # assembler does not accept # line number as a comment. From gcc-patches-return-37912-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:49:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7153 invoked by alias); 2 Jul 2001 19:48:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7058 invoked from network); 2 Jul 2001 19:48:58 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:48:58 -0000 Received: from taarna.cygnus.com (taarna.cygnus.com [205.180.230.102]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id MAA15231; Mon, 2 Jul 2001 12:48:58 -0700 (PDT) Received: (bkoz@localhost) by taarna.cygnus.com (SMI-8.6/8.6.4) id MAA03874; Mon, 2 Jul 2001 12:48:57 -0700 Date: Mon, 2 Jul 2001 12:48:57 -0700 (PDT) From: Benjamin Kosnik X-Sender: bkoz@taarna.cygnus.com To: "Stephen M. Webb" cc: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: [libstdc++-v3] Remove std::construct and std::destroy In-Reply-To: <01070108464800.00282@umbriel> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hey Stephen. This is in, thanks. > Bootstrapped on an i686-pc-linux-gnu system, no regressions. Targetted at the > trunk but is good for the 3.01 branch, too. I just checked it in to the trunk. I'm uncertain what to do with patches that remove functions from std:: or otherwise change the library significantly. (Say this patch, or the iterator work.) Right now I'm now checking them into the branch, although this might be a mistake. -benjamin From gcc-patches-return-37913-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:50:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8835 invoked by alias); 2 Jul 2001 19:50:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8613 invoked from network); 2 Jul 2001 19:50:07 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:50:07 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA14589; Mon, 2 Jul 01 15:54:18 EDT Date: Mon, 2 Jul 01 15:54:18 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107021954.AA14589@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: First patch in series to add more attribute to MEMs This patch is a first in a series of patches to add more tracking to MEMs. The idea is to have a structure that records more information about a MEM, including its alias set, alignment, decl it comes from, size, and offset. This patch starts the process by adding a new function adjust_address which is given a mode and an offset and makes a new MEM. The intent is that it can better track what's happening to the MEM than change_address. Subsequent changes will add similar new functions and change the remainder of calls to those new functions. The last series will actually use them. Mon Jul 2 15:33:31 2001 Richard Kenner * emit-rtl.c (adjust_address): New function. * expr.h (adjust_address): Add declaration. * builtins.c: Replace some calls to change_address with calls to it or to validize_mem. * caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise. * function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise. * config/arm/arm.c, config/convex/convex.c: Likewise. * config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise. * config/i386/i386.c, config/i386/i386.md: Likewise. * config/ia64/ia64.c, config/ia64/ia64.md: Likewise. * config/m32r/m32r.c, config/m68k/m68k.md: Likewise. * config/m88k/m88k.c, config/mips/mips.md: Likewise. * config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise. * config/sh/sh.c, config/sparc/sparc.md: Likewise. *** builtins.c 2001/06/24 16:09:29 1.102 --- builtins.c 2001/07/02 15:33:54 *************** result_vector (savep, result) *** 948,953 **** size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, savep ? regno : INCOMING_REGNO (regno)); ! mem = change_address (result, mode, ! plus_constant (XEXP (result, 0), size)); savevec[nelts++] = (savep ? gen_rtx_SET (VOIDmode, mem, reg) --- 948,952 ---- size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, savep ? regno : INCOMING_REGNO (regno)); ! mem = adjust_address (result, mode, size); savevec[nelts++] = (savep ? gen_rtx_SET (VOIDmode, mem, reg) *************** expand_builtin_apply_args_1 () *** 990,1002 **** tem = gen_rtx_REG (mode, INCOMING_REGNO (regno)); ! emit_move_insn (change_address (registers, mode, ! plus_constant (XEXP (registers, 0), ! size)), ! tem); size += GET_MODE_SIZE (mode); } /* Save the arg pointer to the block. */ ! emit_move_insn (change_address (registers, Pmode, XEXP (registers, 0)), copy_to_reg (virtual_incoming_args_rtx)); size = GET_MODE_SIZE (Pmode); --- 989,998 ---- tem = gen_rtx_REG (mode, INCOMING_REGNO (regno)); ! emit_move_insn (adjust_address (registers, mode, size), tem); size += GET_MODE_SIZE (mode); } /* Save the arg pointer to the block. */ ! emit_move_insn (adjust_address (registers, Pmode, 0), copy_to_reg (virtual_incoming_args_rtx)); size = GET_MODE_SIZE (Pmode); *************** expand_builtin_apply_args_1 () *** 1006,1012 **** if (struct_value_incoming_rtx) { ! emit_move_insn (change_address (registers, Pmode, ! plus_constant (XEXP (registers, 0), ! size)), copy_to_reg (struct_value_incoming_rtx)); size += GET_MODE_SIZE (Pmode); --- 1002,1006 ---- if (struct_value_incoming_rtx) { ! emit_move_insn (adjust_address (registers, Pmode, size), copy_to_reg (struct_value_incoming_rtx)); size += GET_MODE_SIZE (Pmode); *************** expand_builtin_apply (function, argument *** 1125,1133 **** size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, regno); ! emit_move_insn (reg, ! change_address (arguments, mode, ! plus_constant (XEXP (arguments, 0), ! size))); ! use_reg (&call_fusage, reg); size += GET_MODE_SIZE (mode); --- 1119,1123 ---- size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, regno); ! emit_move_insn (reg, adjust_address (arguments, mode, size)); use_reg (&call_fusage, reg); size += GET_MODE_SIZE (mode); *************** expand_builtin_apply (function, argument *** 1140,1147 **** { rtx value = gen_reg_rtx (Pmode); ! emit_move_insn (value, ! change_address (arguments, Pmode, ! plus_constant (XEXP (arguments, 0), ! size))); emit_move_insn (struct_value_rtx, value); if (GET_CODE (struct_value_rtx) == REG) --- 1130,1134 ---- { rtx value = gen_reg_rtx (Pmode); ! emit_move_insn (value, adjust_address (arguments, Pmode, size)); emit_move_insn (struct_value_rtx, value); if (GET_CODE (struct_value_rtx) == REG) *************** expand_builtin_apply (function, argument *** 1187,1193 **** const0_rtx, NULL_RTX, const0_rtx)); ! emit_move_insn (change_address (result, GET_MODE (valreg), ! XEXP (result, 0)), ! valreg); } else --- 1174,1178 ---- const0_rtx, NULL_RTX, const0_rtx)); ! emit_move_insn (adjust_address (result, GET_MODE (valreg), 0), valreg); } else *************** expand_builtin_return (result) *** 1265,1272 **** size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, INCOMING_REGNO (regno)); ! emit_move_insn (reg, ! change_address (result, mode, ! plus_constant (XEXP (result, 0), ! size))); push_to_sequence (call_fusage); --- 1250,1254 ---- size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, INCOMING_REGNO (regno)); ! emit_move_insn (reg, adjust_address (result, mode, size)); push_to_sequence (call_fusage); *** caller-save.c 2001/04/03 15:05:17 1.36 --- caller-save.c 2001/07/02 15:33:54 *************** insert_restore (chain, before_p, regno, *** 678,682 **** && save_mode [regno] != GET_MODE (mem) && numregs == HARD_REGNO_NREGS (regno, save_mode [regno])) ! mem = change_address (mem, save_mode[regno], XEXP (mem, 0)); pat = gen_rtx_SET (VOIDmode, gen_rtx_REG (GET_MODE (mem), --- 678,682 ---- && save_mode [regno] != GET_MODE (mem) && numregs == HARD_REGNO_NREGS (regno, save_mode [regno])) ! mem = adjust_address (mem, save_mode[regno], 0); pat = gen_rtx_SET (VOIDmode, gen_rtx_REG (GET_MODE (mem), *************** insert_save (chain, before_p, regno, to_ *** 755,759 **** && save_mode [regno] != GET_MODE (mem) && numregs == HARD_REGNO_NREGS (regno, save_mode [regno])) ! mem = change_address (mem, save_mode[regno], XEXP (mem, 0)); pat = gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (GET_MODE (mem), --- 755,759 ---- && save_mode [regno] != GET_MODE (mem) && numregs == HARD_REGNO_NREGS (regno, save_mode [regno])) ! mem = adjust_address (mem, save_mode[regno], 0); pat = gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (GET_MODE (mem), *** dwarf2out.c 2001/06/10 13:47:55 1.277 --- dwarf2out.c 2001/07/02 15:34:03 *************** expand_builtin_init_dwarf_reg_sizes (add *** 400,406 **** continue; ! emit_move_insn (change_address (mem, mode, ! plus_constant (addr, offset)), ! GEN_INT (size)); } } --- 400,404 ---- continue; ! emit_move_insn (adjust_address (mem, mode, offset), GEN_INT (size)); } } *** emit-rtl.c 2001/06/28 03:52:28 1.183 --- emit-rtl.c 2001/07/02 15:34:07 *************** gen_lowpart (mode, x) *** 1109,1113 **** - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); ! return change_address (x, mode, plus_constant (XEXP (x, 0), offset)); } else if (GET_CODE (x) == ADDRESSOF) --- 1109,1113 ---- - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); ! return adjust_address (x, mode, offset); } else if (GET_CODE (x) == ADDRESSOF) *************** change_address (memref, mode, addr) *** 1601,1604 **** --- 1601,1618 ---- MEM_COPY_ATTRIBUTES (new, memref); return new; + } + /* Return a memory reference like MEMREF, but with its mode changed + to MODE and its address offset by OFFSET bytes. */ + + rtx + adjust_address (memref, mode, offset) + rtx memref; + enum machine_mode mode; + HOST_WIDE_INT offset; + { + /* For now, this is just a wrapper for change_address, but eventually + will do memref tracking. */ + return + change_address (memref, mode, plus_constant (XEXP (memref, 0), offset)); } *** except.c 2001/06/18 06:43:51 1.169 --- except.c 2001/07/02 15:34:10 *************** sjlj_mark_call_sites (lp_info) *** 2039,2045 **** rtx insn, mem; ! mem = change_address (cfun->eh->sjlj_fc, TYPE_MODE (integer_type_node), ! plus_constant (XEXP (cfun->eh->sjlj_fc, 0), ! sjlj_fc_call_site_ofs)); for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) --- 2039,2044 ---- rtx insn, mem; ! mem = adjust_address (cfun->eh->sjlj_fc, TYPE_MODE (integer_type_node), ! sjlj_fc_call_site_ofs); for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) *************** sjlj_emit_function_enter (dispatch_label *** 2157,2166 **** here, as we can not depend on emit_library_call to do it for us. */ assemble_external_libcall (eh_personality_libfunc); ! mem = change_address (fc, Pmode, ! plus_constant (XEXP (fc, 0), sjlj_fc_personality_ofs)); emit_move_insn (mem, eh_personality_libfunc); ! mem = change_address (fc, Pmode, ! plus_constant (XEXP (fc, 0), sjlj_fc_lsda_ofs)); if (cfun->uses_eh_lsda) { --- 2156,2163 ---- here, as we can not depend on emit_library_call to do it for us. */ assemble_external_libcall (eh_personality_libfunc); ! mem = adjust_address (fc, Pmode, sjlj_fc_personality_ofs); emit_move_insn (mem, eh_personality_libfunc); ! mem = adjust_address (fc, Pmode, sjlj_fc_lsda_ofs); if (cfun->uses_eh_lsda) { *************** sjlj_emit_dispatch_table (dispatch_label *** 2259,2268 **** /* Load up dispatch index, exc_ptr and filter values from the function context. */ ! mem = change_address (fc, TYPE_MODE (integer_type_node), ! plus_constant (XEXP (fc, 0), sjlj_fc_call_site_ofs)); dispatch = copy_to_reg (mem); ! mem = change_address (fc, word_mode, ! plus_constant (XEXP (fc, 0), sjlj_fc_data_ofs)); if (word_mode != Pmode) { --- 2256,2264 ---- /* Load up dispatch index, exc_ptr and filter values from the function context. */ ! mem = adjust_address (fc, TYPE_MODE (integer_type_node), ! sjlj_fc_call_site_ofs); dispatch = copy_to_reg (mem); ! mem = adjust_address (fc, word_mode, sjlj_fc_data_ofs); if (word_mode != Pmode) { *************** sjlj_emit_dispatch_table (dispatch_label *** 2275,2281 **** emit_move_insn (cfun->eh->exc_ptr, mem); ! mem = change_address (fc, word_mode, ! plus_constant (XEXP (fc, 0), ! sjlj_fc_data_ofs + UNITS_PER_WORD)); emit_move_insn (cfun->eh->filter, mem); --- 2271,2275 ---- emit_move_insn (cfun->eh->exc_ptr, mem); ! mem = adjust_address (fc, word_mode, sjlj_fc_data_ofs + UNITS_PER_WORD); emit_move_insn (cfun->eh->filter, mem); *** expmed.c 2001/05/22 07:40:25 1.80 --- expmed.c 2001/07/02 15:34:14 *************** store_bit_field (str_rtx, bitsize, bitnu *** 316,321 **** + (offset * UNITS_PER_WORD)); else ! op0 = change_address (op0, fieldmode, ! plus_constant (XEXP (op0, 0), offset)); } emit_move_insn (op0, value); --- 316,320 ---- + (offset * UNITS_PER_WORD)); else ! op0 = adjust_address (op0, fieldmode, offset); } emit_move_insn (op0, value); *************** store_bit_field (str_rtx, bitsize, bitnu *** 332,336 **** { if (GET_CODE (op0) == MEM) ! op0 = change_address (op0, imode, NULL_RTX); else if (imode != BLKmode) op0 = gen_lowpart (imode, op0); --- 331,335 ---- { if (GET_CODE (op0) == MEM) ! op0 = adjust_address (op0, imode, 0); else if (imode != BLKmode) op0 = gen_lowpart (imode, op0); *************** store_bit_field (str_rtx, bitsize, bitnu *** 533,538 **** offset = (bitnum / unit) * GET_MODE_SIZE (bestmode); bitpos = bitnum % unit; ! op0 = change_address (op0, bestmode, ! plus_constant (XEXP (op0, 0), offset)); /* Fetch that unit, store the bitfield in it, then store --- 532,536 ---- offset = (bitnum / unit) * GET_MODE_SIZE (bestmode); bitpos = bitnum % unit; ! op0 = adjust_address (op0, bestmode, offset); /* Fetch that unit, store the bitfield in it, then store *************** store_bit_field (str_rtx, bitsize, bitnu *** 548,553 **** /* Add OFFSET into OP0's address. */ if (GET_CODE (xop0) == MEM) ! xop0 = change_address (xop0, byte_mode, ! plus_constant (XEXP (xop0, 0), offset)); /* If xop0 is a register, we need it in MAXMODE --- 546,550 ---- /* Add OFFSET into OP0's address. */ if (GET_CODE (xop0) == MEM) ! xop0 = adjust_address (xop0, byte_mode, offset); /* If xop0 is a register, we need it in MAXMODE *************** store_fixed_bit_field (op0, offset, bits *** 711,716 **** bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT; offset -= (offset % (total_bits / BITS_PER_UNIT)); ! op0 = change_address (op0, mode, ! plus_constant (XEXP (op0, 0), offset)); } --- 708,712 ---- bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT; offset -= (offset % (total_bits / BITS_PER_UNIT)); ! op0 = adjust_address (op0, mode, offset); } *************** extract_bit_field (str_rtx, bitsize, bit *** 1049,1053 **** { if (GET_CODE (op0) == MEM) ! op0 = change_address (op0, imode, NULL_RTX); else if (imode != BLKmode) op0 = gen_lowpart (imode, op0); --- 1045,1049 ---- { if (GET_CODE (op0) == MEM) ! op0 = adjust_address (op0, imode, 0); else if (imode != BLKmode) op0 = gen_lowpart (imode, op0); *************** extract_bit_field (str_rtx, bitsize, bit *** 1116,1121 **** + (offset * UNITS_PER_WORD)); else ! op0 = change_address (op0, mode1, ! plus_constant (XEXP (op0, 0), offset)); } if (mode1 != mode) --- 1112,1116 ---- + (offset * UNITS_PER_WORD)); else ! op0 = adjust_address (op0, mode1, offset); } if (mode1 != mode) *************** extract_bit_field (str_rtx, bitsize, bit *** 1292,1298 **** xoffset = (bitnum / unit) * GET_MODE_SIZE (bestmode); xbitpos = bitnum % unit; ! xop0 = change_address (xop0, bestmode, ! plus_constant (XEXP (xop0, 0), ! xoffset)); /* Fetch it to a register in that size. */ xop0 = force_reg (bestmode, xop0); --- 1287,1292 ---- xoffset = (bitnum / unit) * GET_MODE_SIZE (bestmode); xbitpos = bitnum % unit; ! xop0 = adjust_address (xop0, bestmode, xoffset); ! /* Fetch it to a register in that size. */ xop0 = force_reg (bestmode, xop0); *************** extract_bit_field (str_rtx, bitsize, bit *** 1302,1307 **** else /* Get ref to first byte containing part of the field. */ ! xop0 = change_address (xop0, byte_mode, ! plus_constant (XEXP (xop0, 0), xoffset)); volatile_ok = save_volatile_ok; --- 1296,1300 ---- else /* Get ref to first byte containing part of the field. */ ! xop0 = adjust_address (xop0, byte_mode, xoffset); volatile_ok = save_volatile_ok; *************** extract_bit_field (str_rtx, bitsize, bit *** 1429,1435 **** xoffset = (bitnum / unit) * GET_MODE_SIZE (bestmode); xbitpos = bitnum % unit; ! xop0 = change_address (xop0, bestmode, ! plus_constant (XEXP (xop0, 0), ! xoffset)); /* Fetch it to a register in that size. */ xop0 = force_reg (bestmode, xop0); --- 1422,1427 ---- xoffset = (bitnum / unit) * GET_MODE_SIZE (bestmode); xbitpos = bitnum % unit; ! xop0 = adjust_address (xop0, bestmode, xoffset); ! /* Fetch it to a register in that size. */ xop0 = force_reg (bestmode, xop0); *************** extract_bit_field (str_rtx, bitsize, bit *** 1439,1444 **** else /* Get ref to first byte containing part of the field. */ ! xop0 = change_address (xop0, byte_mode, ! plus_constant (XEXP (xop0, 0), xoffset)); } --- 1431,1435 ---- else /* Get ref to first byte containing part of the field. */ ! xop0 = adjust_address (xop0, byte_mode, xoffset); } *************** extract_fixed_bit_field (tmode, op0, off *** 1607,1612 **** bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT; offset -= (offset % (total_bits / BITS_PER_UNIT)); ! op0 = change_address (op0, mode, ! plus_constant (XEXP (op0, 0), offset)); } --- 1598,1602 ---- bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT; offset -= (offset % (total_bits / BITS_PER_UNIT)); ! op0 = adjust_address (op0, mode, offset); } *** expr.c 2001/07/01 20:49:58 1.331 --- expr.c 2001/07/02 15:34:23 *************** move_by_pieces_1 (genfun, mode, data) *** 1582,1587 **** } else ! to1 = change_address (data->to, mode, ! plus_constant (data->to_addr, data->offset)); } --- 1582,1586 ---- } else ! to1 = adjust_address (data->to, mode, data->offset); } *************** move_by_pieces_1 (genfun, mode, data) *** 1592,1597 **** } else ! from1 = change_address (data->from, mode, ! plus_constant (data->from_addr, data->offset)); if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0) --- 1591,1595 ---- } else ! from1 = adjust_address (data->from, mode, data->offset); if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0) *************** emit_group_load (dst, orig_src, ssize, a *** 2006,2013 **** { tmps[i] = gen_reg_rtx (mode); ! emit_move_insn (tmps[i], ! change_address (src, mode, ! plus_constant (XEXP (src, 0), ! bytepos))); } else if (GET_CODE (src) == CONCAT) --- 2004,2008 ---- { tmps[i] = gen_reg_rtx (mode); ! emit_move_insn (tmps[i], adjust_address (src, mode, bytepos)); } else if (GET_CODE (src) == CONCAT) *************** emit_group_store (orig_dst, src, ssize, *** 2129,2139 **** && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0 && bytelen == GET_MODE_SIZE (mode)) ! emit_move_insn (change_address (dst, mode, ! plus_constant (XEXP (dst, 0), ! bytepos)), ! tmps[i]); else store_bit_field (dst, bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT, ! mode, tmps[i], align, ssize); } --- 2124,2131 ---- && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0 && bytelen == GET_MODE_SIZE (mode)) ! emit_move_insn (adjust_address (dst, mode, bytepos), tmps[i]); else store_bit_field (dst, bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT, ! mode, tmps[i], align, ssize); } *************** store_by_pieces_2 (genfun, mode, data) *** 2522,2527 **** } else ! to1 = change_address (data->to, mode, ! plus_constant (data->to_addr, data->offset)); if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0) --- 2514,2518 ---- } else ! to1 = adjust_address (data->to, mode, data->offset); if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0) *************** emit_move_insn_1 (x, y) *** 2912,2916 **** rtx mem = assign_stack_temp (reg_mode, GET_MODE_SIZE (mode), 0); ! rtx cmem = change_address (mem, mode, NULL_RTX); cfun->cannot_inline --- 2903,2907 ---- rtx mem = assign_stack_temp (reg_mode, GET_MODE_SIZE (mode), 0); ! rtx cmem = adjust_address (mem, mode, 0); cfun->cannot_inline *************** emit_push_insn (x, mode, type, size, ali *** 3266,3271 **** if (partial != 0) ! xinner = change_address (xinner, BLKmode, ! plus_constant (XEXP (xinner, 0), used)); /* If the partial register-part of the arg counts in its stack size, --- 3257,3261 ---- if (partial != 0) ! xinner = adjust_address (xinner, BLKmode, used); /* If the partial register-part of the arg counts in its stack size, *************** expand_assignment (to, from, want_value, *** 3726,3733 **** && alignment == GET_MODE_ALIGNMENT (mode1)) { ! rtx temp = change_address (to_rtx, mode1, ! plus_constant (XEXP (to_rtx, 0), ! (bitpos / ! BITS_PER_UNIT))); if (GET_CODE (XEXP (temp, 0)) == REG) to_rtx = temp; --- 3716,3722 ---- && alignment == GET_MODE_ALIGNMENT (mode1)) { ! rtx temp ! = adjust_address (to_rtx, mode1, bitpos / BITS_PER_UNIT); ! if (GET_CODE (XEXP (temp, 0)) == REG) to_rtx = temp; *************** expand_assignment (to, from, want_value, *** 3811,3817 **** rtx from_rtx = expand_expr_unaligned (from, &from_align); rtx inner_to_rtx ! = change_address (to_rtx, BLKmode, ! plus_constant (XEXP (to_rtx, 0), ! bitpos / BITS_PER_UNIT)); emit_block_move (inner_to_rtx, from_rtx, expr_size (from), --- 3800,3804 ---- rtx from_rtx = expand_expr_unaligned (from, &from_align); rtx inner_to_rtx ! = adjust_address (to_rtx, BLKmode, bitpos / BITS_PER_UNIT); emit_block_move (inner_to_rtx, from_rtx, expr_size (from), *************** store_constructor_field (target, bitsize *** 4460,4470 **** if (bitpos != 0) target ! = change_address (target, GET_MODE (target) == BLKmode || 0 != (bitpos % GET_MODE_ALIGNMENT (GET_MODE (target))) ! ? BLKmode : VOIDmode, ! plus_constant (XEXP (target, 0), ! bitpos / BITS_PER_UNIT)); --- 4447,4455 ---- if (bitpos != 0) target ! = adjust_address (target, GET_MODE (target) == BLKmode || 0 != (bitpos % GET_MODE_ALIGNMENT (GET_MODE (target))) ! ? BLKmode : VOIDmode, bitpos / BITS_PER_UNIT); *************** store_constructor (exp, target, align, c *** 4992,4999 **** it's single-word. */ if (GET_CODE (target) == MEM) ! { ! to_rtx = plus_constant (XEXP (target, 0), offset); ! to_rtx = change_address (target, mode, to_rtx); ! } else if (offset == 0) to_rtx = target; --- 4977,4981 ---- it's single-word. */ if (GET_CODE (target) == MEM) ! to_rtx = adjust_address (target, mode, offset); else if (offset == 0) to_rtx = target; *************** store_field (target, bitsize, bitpos, mo *** 5253,5259 **** abort (); ! target = change_address (target, VOIDmode, ! plus_constant (XEXP (target, 0), ! bitpos / BITS_PER_UNIT)); /* Make sure that ALIGN is no stricter than the alignment of EXP. */ --- 5235,5239 ---- abort (); ! target = adjust_address (target, VOIDmode, bitpos / BITS_PER_UNIT); /* Make sure that ALIGN is no stricter than the alignment of EXP. */ *************** expand_expr (exp, target, tmode, modifie *** 7080,7087 **** && alignment == GET_MODE_ALIGNMENT (mode1)) { ! rtx temp = change_address (op0, mode1, ! plus_constant (XEXP (op0, 0), ! (bitpos / ! BITS_PER_UNIT))); if (GET_CODE (XEXP (temp, 0)) == REG) op0 = temp; --- 7060,7065 ---- && alignment == GET_MODE_ALIGNMENT (mode1)) { ! rtx temp = adjust_address (op0, mode1, bitpos / BITS_PER_UNIT); ! if (GET_CODE (XEXP (temp, 0)) == REG) op0 = temp; *************** expand_expr (exp, target, tmode, modifie *** 7182,7188 **** abort (); ! op0 = change_address (op0, VOIDmode, ! plus_constant (XEXP (op0, 0), ! bitpos / BITS_PER_UNIT)); if (target == 0) target = assign_temp (type, 0, 1, 1); --- 7160,7164 ---- abort (); ! op0 = adjust_address (op0, VOIDmode, bitpos / BITS_PER_UNIT); if (target == 0) target = assign_temp (type, 0, 1, 1); *************** expand_expr (exp, target, tmode, modifie *** 7249,7255 **** } else ! op0 = change_address (op0, mode1, ! plus_constant (XEXP (op0, 0), ! (bitpos / BITS_PER_UNIT))); set_mem_attributes (op0, exp, 0); --- 7225,7229 ---- } else ! op0 = adjust_address (op0, mode1, bitpos / BITS_PER_UNIT); set_mem_attributes (op0, exp, 0); *************** expand_expr (exp, target, tmode, modifie *** 7451,7455 **** /* Store data into beginning of memory target. */ store_expr (TREE_OPERAND (exp, 0), ! change_address (target, TYPE_MODE (valtype), 0), 0); else if (GET_CODE (target) == REG) --- 7425,7429 ---- /* Store data into beginning of memory target. */ store_expr (TREE_OPERAND (exp, 0), ! adjust_address (target, TYPE_MODE (valtype), 0), 0); else if (GET_CODE (target) == REG) *************** expand_expr_unaligned (exp, palign) *** 9123,9129 **** abort (); ! op0 = change_address (op0, VOIDmode, ! plus_constant (XEXP (op0, 0), ! bitpos / BITS_PER_UNIT)); } else --- 9097,9101 ---- abort (); ! op0 = adjust_address (op0, VOIDmode, bitpos / BITS_PER_UNIT); } else *************** expand_expr_unaligned (exp, palign) *** 9157,9163 **** else /* Get a reference to just this component. */ ! op0 = change_address (op0, mode1, ! plus_constant (XEXP (op0, 0), ! (bitpos / BITS_PER_UNIT))); MEM_ALIAS_SET (op0) = get_alias_set (exp); --- 9129,9133 ---- else /* Get a reference to just this component. */ ! op0 = adjust_address (op0, mode1, bitpos / BITS_PER_UNIT); MEM_ALIAS_SET (op0) = get_alias_set (exp); *** expr.h 2001/04/14 03:39:22 1.80 --- expr.h 2001/07/02 15:34:25 *************** extern rtx memory_address_noforce PARAMS *** 1151,1154 **** --- 1151,1158 ---- extern rtx change_address PARAMS ((rtx, enum machine_mode, rtx)); + /* Return a memory reference like MEMREF, but with its mode changed + to MODE and its address offset by OFFSET bytes. */ + extern rtx adjust_address PARAMS ((rtx, enum machine_mode, HOST_WIDE_INT)); + /* Return a memory reference like MEMREF, but which is known to have a valid address. */ *** function.c 2001/07/01 13:34:02 1.278 --- function.c 2001/07/02 15:34:35 *************** fixup_memory_subreg (x, insn, uncritical *** 2519,2528 **** abort (); ! addr = plus_constant (addr, offset); ! if (!flag_force_addr && memory_address_p (mode, addr)) /* Shortcut if no insns need be emitted. */ ! return change_address (SUBREG_REG (x), mode, addr); start_sequence (); ! result = change_address (SUBREG_REG (x), mode, addr); emit_insn_before (gen_sequence (), insn); end_sequence (); --- 2519,2529 ---- abort (); ! if (!flag_force_addr ! && memory_address_p (mode, plus_constant (addr, offset))) /* Shortcut if no insns need be emitted. */ ! return adjust_address (SUBREG_REG (x), mode, offset); ! start_sequence (); ! result = adjust_address (SUBREG_REG (x), mode, offset); emit_insn_before (gen_sequence (), insn); end_sequence (); *************** optimize_bit_field (body, insn, equiv_me *** 2722,2727 **** start_sequence (); ! memref = change_address (memref, mode, ! plus_constant (XEXP (memref, 0), offset)); insns = get_insns (); end_sequence (); --- 2723,2727 ---- start_sequence (); ! memref = adjust_address (memref, mode, offset); insns = get_insns (); end_sequence (); *************** assign_parms (fndecl) *** 4988,4996 **** TREE_UNSIGNED (TREE_TYPE (parm))); if (stack_parm) ! { ! /* ??? This may need a big-endian conversion on sparc64. */ ! stack_parm = change_address (stack_parm, nominal_mode, ! NULL_RTX); ! } conversion_insns = get_insns (); did_conversion = 1; --- 4988,4994 ---- TREE_UNSIGNED (TREE_TYPE (parm))); if (stack_parm) ! /* ??? This may need a big-endian conversion on sparc64. */ ! stack_parm = adjust_address (stack_parm, nominal_mode, 0); ! conversion_insns = get_insns (); did_conversion = 1; *** config/a29k/a29k.md 1999/10/15 06:38:01 1.4 --- config/a29k/a29k.md 2001/07/02 15:34:42 *************** *** 2376,2381 **** if (! memory_address_p (TImode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = change_address (operands[1], TImode, ! XEXP (operands[1], 0)); } }") --- 2377,2381 ---- if (! memory_address_p (TImode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = adjust_address (operands[1], TImode, 0); } }") *** config/alpha/alpha.c 2001/06/26 18:08:29 1.165 --- config/alpha/alpha.c 2001/07/02 15:34:52 *************** alpha_split_tfmode_pair (operands) *** 2398,2404 **** else if (GET_CODE (operands[1]) == MEM) { ! operands[3] = change_address (operands[1], DImode, ! plus_constant (XEXP (operands[1], 0), 8)); ! operands[2] = change_address (operands[1], DImode, NULL_RTX); } else if (operands[1] == CONST0_RTX (TFmode)) --- 2398,2403 ---- else if (GET_CODE (operands[1]) == MEM) { ! operands[3] = adjust_address (operands[1], DImode, 8); ! operands[2] = adjust_address (operands[1], DImode, 0); } else if (operands[1] == CONST0_RTX (TFmode)) *************** alpha_split_tfmode_pair (operands) *** 2414,2420 **** else if (GET_CODE (operands[0]) == MEM) { ! operands[1] = change_address (operands[0], DImode, ! plus_constant (XEXP (operands[0], 0), 8)); ! operands[0] = change_address (operands[0], DImode, NULL_RTX); } else --- 2413,2418 ---- else if (GET_CODE (operands[0]) == MEM) { ! operands[1] = adjust_address (operands[0], DImode, 8); ! operands[0] = adjust_address (operands[0], DImode, 0); } else *************** alpha_expand_unaligned_load_words (out_r *** 2695,2700 **** if (ofs != 0) ! smem = change_address (smem, GET_MODE (smem), ! plus_constant (XEXP (smem, 0), ofs)); /* Load up all of the source data. */ --- 2693,2697 ---- if (ofs != 0) ! smem = adjust_address (smem, GET_MODE (smem), ofs); /* Load up all of the source data. */ *************** alpha_expand_unaligned_store_words (data *** 2772,2778 **** if (ofs != 0) ! dmem = change_address (dmem, GET_MODE (dmem), ! plus_constant (XEXP (dmem, 0), ofs)); ! st_addr_2 = change_address (dmem, DImode, --- 2769,2773 ---- if (ofs != 0) ! dmem = adjust_address (dmem, GET_MODE (dmem), ofs); st_addr_2 = change_address (dmem, DImode, *************** alpha_expand_block_move (operands) *** 2951,2957 **** for (i = 0; i < words; ++i) emit_move_insn (data_regs[nregs + i], ! change_address (orig_src, DImode, ! plus_constant (XEXP (orig_src, 0), ! ofs + i * 8))); nregs += words; --- 2946,2950 ---- for (i = 0; i < words; ++i) emit_move_insn (data_regs[nregs + i], ! adjust_address (orig_src, DImode, ofs + i * 8)); nregs += words; *************** alpha_expand_block_move (operands) *** 3007,3014 **** do { data_regs[nregs++] = tmp = gen_reg_rtx (HImode); ! emit_move_insn (tmp, ! change_address (orig_src, HImode, ! plus_constant (XEXP (orig_src, 0), ! ofs))); bytes -= 2; ofs += 2; --- 3000,3004 ---- do { data_regs[nregs++] = tmp = gen_reg_rtx (HImode); ! emit_move_insn (tmp, adjust_address (orig_src, HImode, ofs)); bytes -= 2; ofs += 2; *************** alpha_expand_block_move (operands) *** 3027,3034 **** { data_regs[nregs++] = tmp = gen_reg_rtx (QImode); ! emit_move_insn (tmp, ! change_address (orig_src, QImode, ! plus_constant (XEXP (orig_src, 0), ! ofs))); bytes -= 1; ofs += 1; --- 3017,3021 ---- { data_regs[nregs++] = tmp = gen_reg_rtx (QImode); ! emit_move_insn (tmp, adjust_address (orig_src, QImode, ofs)); bytes -= 1; ofs += 1; *************** alpha_expand_block_move (operands) *** 3100,3106 **** while (i < nregs && GET_MODE (data_regs[i]) == DImode) { ! emit_move_insn (change_address (orig_dst, DImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), data_regs[i]); ofs += 8; --- 3087,3091 ---- while (i < nregs && GET_MODE (data_regs[i]) == DImode) { ! emit_move_insn (adjust_address (orig_dst, DImode, ofs), data_regs[i]); ofs += 8; *************** alpha_expand_block_move (operands) *** 3118,3128 **** NULL_RTX, 1, OPTAB_WIDEN); ! emit_move_insn (change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), gen_lowpart (SImode, data_regs[i])); ! emit_move_insn (change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs + 4)), gen_lowpart (SImode, tmp)); ofs += 8; --- 3103,3109 ---- NULL_RTX, 1, OPTAB_WIDEN); ! emit_move_insn (adjust_address (orig_dst, SImode, ofs), gen_lowpart (SImode, data_regs[i])); ! emit_move_insn (adjust_address (orig_dst, SImode, ofs + 4), gen_lowpart (SImode, tmp)); ofs += 8; *************** alpha_expand_block_move (operands) *** 3132,3138 **** while (i < nregs && GET_MODE (data_regs[i]) == SImode) { ! emit_move_insn (change_address(orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), data_regs[i]); ofs += 4; --- 3113,3117 ---- while (i < nregs && GET_MODE (data_regs[i]) == SImode) { ! emit_move_insn (adjust_address (orig_dst, SImode, ofs), data_regs[i]); ofs += 4; *************** alpha_expand_block_move (operands) *** 3172,3179 **** while (i < nregs && GET_MODE (data_regs[i]) == HImode) { ! emit_move_insn (change_address (orig_dst, HImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! data_regs[i]); i++; ofs += 2; --- 3151,3155 ---- while (i < nregs && GET_MODE (data_regs[i]) == HImode) { ! emit_move_insn (adjust_address (orig_dst, HImode, ofs), data_regs[i]); i++; ofs += 2; *************** alpha_expand_block_move (operands) *** 3189,3196 **** while (i < nregs && GET_MODE (data_regs[i]) == QImode) { ! emit_move_insn (change_address (orig_dst, QImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! data_regs[i]); i++; ofs += 1; --- 3165,3169 ---- while (i < nregs && GET_MODE (data_regs[i]) == QImode) { ! emit_move_insn (adjust_address (orig_dst, QImode, ofs), data_regs[i]); i++; ofs += 1; *************** alpha_expand_block_clear (operands) *** 3279,3285 **** HOST_WIDE_INT mask; ! mem = change_address (orig_dst, mode, ! plus_constant (XEXP (orig_dst, 0), ! ofs - inv_alignofs)); MEM_ALIAS_SET (mem) = 0; --- 3252,3256 ---- HOST_WIDE_INT mask; ! mem = adjust_address (orig_dst, mode, ofs - inv_alignofs); MEM_ALIAS_SET (mem) = 0; *************** alpha_expand_block_clear (operands) *** 3307,3314 **** if (TARGET_BWX && (alignofs & 1) && bytes >= 1) { ! emit_move_insn (change_address (orig_dst, QImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! const0_rtx); bytes -= 1; ofs += 1; --- 3278,3282 ---- if (TARGET_BWX && (alignofs & 1) && bytes >= 1) { ! emit_move_insn (adjust_address (orig_dst, QImode, ofs), const0_rtx); bytes -= 1; ofs += 1; *************** alpha_expand_block_clear (operands) *** 3317,3324 **** if (TARGET_BWX && align >= 16 && (alignofs & 3) == 2 && bytes >= 2) { ! emit_move_insn (change_address (orig_dst, HImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! const0_rtx); bytes -= 2; ofs += 2; --- 3285,3289 ---- if (TARGET_BWX && align >= 16 && (alignofs & 3) == 2 && bytes >= 2) { ! emit_move_insn (adjust_address (orig_dst, HImode, ofs), const0_rtx); bytes -= 2; ofs += 2; *************** alpha_expand_block_clear (operands) *** 3327,3334 **** if (alignofs == 4 && bytes >= 4) { ! emit_move_insn (change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! const0_rtx); bytes -= 4; ofs += 4; --- 3292,3296 ---- if (alignofs == 4 && bytes >= 4) { ! emit_move_insn (adjust_address (orig_dst, SImode, ofs), const0_rtx); bytes -= 4; ofs += 4; *************** alpha_expand_block_clear (operands) *** 3352,3359 **** for (i = 0; i < words; ++i) ! emit_move_insn (change_address(orig_dst, DImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs + i * 8)), ! const0_rtx); bytes -= words * 8; --- 3314,3319 ---- for (i = 0; i < words; ++i) ! emit_move_insn (adjust_address(orig_dst, DImode, ofs + i * 8), ! const0_rtx); bytes -= words * 8; *************** alpha_expand_block_clear (operands) *** 3366,3372 **** if (align >= 32 && bytes > 16) { ! emit_move_insn (change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ofs)), ! const0_rtx); bytes -= 4; ofs += 4; --- 3326,3330 ---- if (align >= 32 && bytes > 16) { ! emit_move_insn (adjust_address (orig_dst, SImode, ofs), const0_rtx); bytes -= 4; ofs += 4; *************** alpha_expand_block_clear (operands) *** 3401,3407 **** for (i = 0; i < words; ++i) ! emit_move_insn (change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs + i * 4)), const0_rtx); --- 3359,3363 ---- for (i = 0; i < words; ++i) ! emit_move_insn (adjust_address (orig_dst, SImode, ofs + i * 4), const0_rtx); *************** alpha_expand_block_clear (operands) *** 3441,3446 **** HOST_WIDE_INT mask; ! mem = change_address (orig_dst, DImode, ! plus_constant (XEXP (orig_dst, 0), ofs)); MEM_ALIAS_SET (mem) = 0; --- 3397,3401 ---- HOST_WIDE_INT mask; ! mem = adjust_address (orig_dst, DImode, ofs); MEM_ALIAS_SET (mem) = 0; *************** alpha_expand_block_clear (operands) *** 3458,3463 **** HOST_WIDE_INT mask; ! mem = change_address (orig_dst, SImode, ! plus_constant (XEXP (orig_dst, 0), ofs)); MEM_ALIAS_SET (mem) = 0; --- 3413,3417 ---- HOST_WIDE_INT mask; ! mem = adjust_address (orig_dst, SImode, ofs); MEM_ALIAS_SET (mem) = 0; *************** alpha_expand_block_clear (operands) *** 3485,3491 **** { do { ! emit_move_insn (change_address (orig_dst, HImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), const0_rtx); bytes -= 2; --- 3439,3443 ---- { do { ! emit_move_insn (adjust_address (orig_dst, HImode, ofs), const0_rtx); bytes -= 2; *************** alpha_expand_block_clear (operands) *** 3503,3510 **** while (bytes > 0) { ! emit_move_insn (change_address (orig_dst, QImode, ! plus_constant (XEXP (orig_dst, 0), ! ofs)), ! const0_rtx); bytes -= 1; ofs += 1; --- 3455,3459 ---- while (bytes > 0) { ! emit_move_insn (adjust_address (orig_dst, QImode, ofs), const0_rtx); bytes -= 1; ofs += 1; *** config/arm/arm.md 2001/05/18 12:45:03 1.81 --- config/arm/arm.md 2001/07/02 15:35:06 *************** *** 4292,4296 **** operands[4] = change_address (operands[1], QImode, plus_constant (addr, 1)); ! operands[1] = change_address (operands[1], QImode, NULL_RTX); operands[3] = gen_lowpart (QImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]); --- 4292,4296 ---- operands[4] = change_address (operands[1], QImode, plus_constant (addr, 1)); ! operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]); *************** *** 4316,4320 **** operands[4] = change_address (operands[1], QImode, plus_constant (addr, 1)); ! operands[1] = change_address (operands[1], QImode, NULL_RTX); operands[3] = gen_lowpart (QImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]); --- 4316,4320 ---- operands[4] = change_address (operands[1], QImode, plus_constant (addr, 1)); ! operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]); *************** *** 4365,4369 **** operands[3] = change_address (operands[0], QImode, plus_constant (addr, 1)); ! operands[0] = change_address (operands[0], QImode, NULL_RTX); }" ) --- 4365,4369 ---- operands[3] = change_address (operands[0], QImode, plus_constant (addr, 1)); ! operands[0] = adjust_address (operands[0], QImode, 0); }" ) *** config/convex/convex.c 2001/06/26 18:08:38 1.10 --- config/convex/convex.c 2001/07/02 15:35:07 *************** expand_movstr (operands) *** 370,375 **** /* Get src and dest in the right mode */ if (GET_MODE (src) != mode) ! src = change_address (src, mode, 0), ! dest = change_address (dest, mode, 0); /* Make load and store patterns for this piece */ --- 370,377 ---- /* Get src and dest in the right mode */ if (GET_MODE (src) != mode) ! { ! src = adjust_address (src, mode, 0); ! dest = adjust_address (dest, mode, 0); ! } /* Make load and store patterns for this piece */ *** config/dsp16xx/dsp16xx.md 2001/04/03 15:05:42 1.9 --- config/dsp16xx/dsp16xx.md 2001/07/02 15:35:09 *************** *** 1468,1472 **** stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = change_address (stack_slot, VOIDmode, XEXP (stack_slot, 0)); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; --- 1468,1472 ---- stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = validize_mem (stack_slot); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; *************** *** 1593,1597 **** stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = change_address (stack_slot, VOIDmode, XEXP (stack_slot, 0)); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; --- 1593,1597 ---- stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = validize_mem (stack_slot); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; *************** *** 1730,1743 **** emit_label (label1); ! if (GET_CODE(operands[2]) != MEM) { rtx stack_slot; stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = change_address (stack_slot, VOIDmode, XEXP (stack_slot, 0)); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; } ! emit_insn (gen_match_ashlhi3_nobmu (operands[0], operands[1], operands[2])); emit_label (label2); DONE; --- 1730,1745 ---- emit_label (label1); ! if (GET_CODE (operands[2]) != MEM) { rtx stack_slot; stack_slot = assign_stack_temp (QImode, GET_MODE_SIZE(QImode), 0); ! stack_slot = validize_mem (stack_slot); emit_move_insn (stack_slot, operands[2]); operands[2] = stack_slot; } ! ! emit_insn (gen_match_ashlhi3_nobmu (operands[0], operands[1], ! operands[2])); emit_label (label2); DONE; *** config/fr30/fr30.c 2001/06/26 18:08:42 1.10 --- config/fr30/fr30.c 2001/07/02 15:35:11 *************** fr30_move_double (operands) *** 1009,1015 **** if (reverse) { ! emit_insn (gen_rtx_SET (VOIDmode, dest1, change_address (src, SImode, addr))); ! emit_insn (gen_rtx_SET (SImode, dest0, gen_rtx_REG (SImode, REGNO (addr)))); ! emit_insn (gen_rtx_SET (SImode, dest0, plus_constant (dest0, UNITS_PER_WORD))); new_mem = gen_rtx_MEM (SImode, dest0); --- 1007,1016 ---- if (reverse) { ! emit_insn (gen_rtx_SET (VOIDmode, dest1, ! change_address (src, SImode, addr))); ! emit_insn (gen_rtx_SET (SImode, dest0, ! gen_rtx_REG (SImode, REGNO (addr)))); ! emit_insn (gen_rtx_SET (SImode, dest0, ! plus_constant (dest0, UNITS_PER_WORD))); new_mem = gen_rtx_MEM (SImode, dest0); *************** fr30_move_double (operands) *** 1020,1026 **** else { ! emit_insn (gen_rtx_SET (VOIDmode, dest0, change_address (src, SImode, addr))); ! emit_insn (gen_rtx_SET (SImode, dest1, gen_rtx_REG (SImode, REGNO (addr)))); ! emit_insn (gen_rtx_SET (SImode, dest1, plus_constant (dest1, UNITS_PER_WORD))); new_mem = gen_rtx_MEM (SImode, dest1); --- 1021,1030 ---- else { ! emit_insn (gen_rtx_SET (VOIDmode, dest0, ! change_address (src, SImode, addr))); ! emit_insn (gen_rtx_SET (SImode, dest1, ! gen_rtx_REG (SImode, REGNO (addr)))); ! emit_insn (gen_rtx_SET (SImode, dest1, ! plus_constant (dest1, UNITS_PER_WORD))); new_mem = gen_rtx_MEM (SImode, dest1); *************** fr30_move_double (operands) *** 1055,1064 **** src1 = operand_subword (src, 1, TRUE, mode); ! emit_insn (gen_rtx_SET (VOIDmode, change_address (dest, SImode, addr), src0)); ! ! if (REGNO (addr) == STACK_POINTER_REGNUM) ! emit_insn (gen_rtx_SET (VOIDmode, change_address (dest, SImode, plus_constant (stack_pointer_rtx, UNITS_PER_WORD)), src1)); ! else if (REGNO (addr) == FRAME_POINTER_REGNUM) ! emit_insn (gen_rtx_SET (VOIDmode, change_address (dest, SImode, plus_constant (frame_pointer_rtx, UNITS_PER_WORD)), src1)); else { --- 1059,1071 ---- src1 = operand_subword (src, 1, TRUE, mode); ! emit_insn (gen_rtx_SET (VOIDmode, ! change_address (dest, SImode, addr), ! src0)); ! ! if (REGNO (addr) == STACK_POINTER_REGNUM ! || REGNO (addr) == FRAME_POINTER_REGNUM) ! emit_insn (gen_rtx_SET (VOIDmode, ! adjust_address (dest, SImode, UNITS_PER_WORD), ! src1)); else { *** config/i386/i386.c 2001/06/29 17:21:13 1.273 --- config/i386/i386.c 2001/07/02 15:35:27 *************** split_di (operands, num, lo_half, hi_hal *** 4409,4415 **** else if (offsettable_memref_p (op)) { - rtx lo_addr = XEXP (op, 0); rtx hi_addr = XEXP (adj_offsettable_operand (op, 4), 0); ! lo_half[num] = change_address (op, SImode, lo_addr); hi_half[num] = change_address (op, SImode, hi_addr); } --- 4409,4415 ---- else if (offsettable_memref_p (op)) { rtx hi_addr = XEXP (adj_offsettable_operand (op, 4), 0); ! ! lo_half[num] = adjust_address (op, SImode, 0); hi_half[num] = change_address (op, SImode, hi_addr); } *************** ix86_split_to_parts (operand, parts, mod *** 6866,6870 **** else if (offsettable_memref_p (operand)) { ! operand = change_address (operand, SImode, XEXP (operand, 0)); parts[0] = operand; parts[1] = adj_offsettable_operand (operand, 4); --- 6866,6870 ---- else if (offsettable_memref_p (operand)) { ! operand = adjust_address (operand, SImode, 0); parts[0] = operand; parts[1] = adj_offsettable_operand (operand, 4); *************** ix86_split_long_move (operands) *** 7062,7066 **** { if (GET_CODE (part[1][1]) == MEM) ! part[1][1] = change_address (part[1][1], DImode, XEXP (part[1][1], 0)); else if (REG_P (part[1][1])) part[1][1] = gen_rtx_REG (DImode, REGNO (part[1][1])); --- 7062,7066 ---- { if (GET_CODE (part[1][1]) == MEM) ! part[1][1] = adjust_address (part[1][1], DImode, 0); else if (REG_P (part[1][1])) part[1][1] = gen_rtx_REG (DImode, REGNO (part[1][1])); *************** ix86_expand_builtin (exp, target, subtar *** 10186,10194 **** target = assign_386_stack_local (SFmode, 0); arg0 = TREE_VALUE (arglist); ! emit_move_insn (change_address (target, SFmode, XEXP (target, 0)), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); ! emit_insn (gen_sse_loadss (op0, change_address (target, V4SFmode, ! XEXP (target, 0)))); emit_insn (gen_sse_shufps (op0, op0, op0, GEN_INT (0))); return op0; --- 10186,10193 ---- target = assign_386_stack_local (SFmode, 0); arg0 = TREE_VALUE (arglist); ! emit_move_insn (adjust_address (target, SFmode, 0), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); ! emit_insn (gen_sse_loadss (op0, adjust_address (target, V4SFmode, 0))); emit_insn (gen_sse_shufps (op0, op0, op0, GEN_INT (0))); return op0; *************** ix86_expand_builtin (exp, target, subtar *** 10196,10200 **** case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); ! op0 = change_address (target, SFmode, XEXP (target, 0)); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); --- 10195,10199 ---- case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); ! op0 = adjust_address (target, SFmode, 0); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); *** config/i386/i386.md 2001/06/28 21:50:05 1.282 --- config/i386/i386.md 2001/07/02 15:35:52 *************** *** 8060,8064 **** { mode = smallest_mode_for_size (pos + len, MODE_INT); ! operands[0] = change_address (operands[0], mode, NULL_RTX); } } --- 8060,8064 ---- { mode = smallest_mode_for_size (pos + len, MODE_INT); ! operands[0] = adjust_address (operands[0], mode, 0); } } *** config/ia64/ia64.c 2001/06/26 18:08:52 1.97 --- config/ia64/ia64.c 2001/07/02 15:36:00 *************** ia64_split_timode (out, in, scratch) *** 929,937 **** { case REG: ! out[0] = change_address (in, DImode, NULL_RTX); break; case POST_MODIFY: base = XEXP (base, 0); ! out[0] = change_address (in, DImode, NULL_RTX); break; --- 929,937 ---- { case REG: ! out[0] = adjust_address (in, DImode, 0); break; case POST_MODIFY: base = XEXP (base, 0); ! out[0] = adjust_address (in, DImode, 0); break; *************** ia64_split_timode (out, in, scratch) *** 942,952 **** case POST_INC: base = XEXP (base, 0); ! out[0] = change_address (in, DImode, ! gen_rtx_POST_MODIFY (Pmode, base,plus_constant (base, 16))); break; case POST_DEC: base = XEXP (base, 0); ! out[0] = change_address (in, DImode, ! gen_rtx_POST_MODIFY (Pmode, base,plus_constant (base, -16))); break; default: --- 942,956 ---- case POST_INC: base = XEXP (base, 0); ! out[0] ! = change_address (in, DImode, ! gen_rtx_POST_MODIFY ! (Pmode, base, plus_constant (base, 16))); break; case POST_DEC: base = XEXP (base, 0); ! out[0] ! = change_address (in, DImode, ! gen_rtx_POST_MODIFY ! (Pmode, base, plus_constant (base, -16))); break; default: *************** spill_tfmode_operand (in, force) *** 999,1005 **** else if (GET_CODE (in) == MEM && GET_CODE (XEXP (in, 0)) == ADDRESSOF) ! { ! return change_address (in, TFmode, copy_to_reg (XEXP (in, 0))); ! } else return in; --- 1003,1007 ---- else if (GET_CODE (in) == MEM && GET_CODE (XEXP (in, 0)) == ADDRESSOF) ! return change_address (in, TFmode, copy_to_reg (XEXP (in, 0))); else return in; *** config/ia64/ia64.md 2001/06/26 03:50:48 1.66 --- config/ia64/ia64.md 2001/07/02 15:36:04 *************** *** 726,734 **** out[!WORDS_BIG_ENDIAN] = gen_rtx_REG (DImode, REGNO (operands[0])+1); ! emit_move_insn (out[0], change_address (operands[1], DImode, NULL)); ! emit_move_insn (out[1], ! change_address (operands[1], DImode, ! plus_constant (XEXP (operands[1], 0), ! 8))); DONE; } --- 726,731 ---- out[!WORDS_BIG_ENDIAN] = gen_rtx_REG (DImode, REGNO (operands[0])+1); ! emit_move_insn (out[0], adjust_address (operands[1], DImode, 0)); ! emit_move_insn (out[1], adjust_address (operands[1], DImode, 8)); DONE; } *** config/m32r/m32r.c 2001/06/29 17:21:14 1.28 --- config/m32r/m32r.c 2001/07/02 15:36:08 *************** gen_split_move_double (operands) *** 1264,1269 **** /* If the high-address word is used in the address, we must load it last. Otherwise, load it first. */ ! rtx addr = XEXP (src, 0); ! int reverse = (refers_to_regno_p (dregno, dregno+1, addr, 0) != 0); /* We used to optimize loads from single registers as --- 1265,1270 ---- /* If the high-address word is used in the address, we must load it last. Otherwise, load it first. */ ! int reverse ! = (refers_to_regno_p (dregno, dregno + 1, XEXP (src, 0), 0) != 0); /* We used to optimize loads from single registers as *************** gen_split_move_double (operands) *** 1280,1292 **** emit_insn (gen_rtx_SET (VOIDmode, operand_subword (dest, reverse, TRUE, mode), ! change_address (src, SImode, ! plus_constant (addr, ! reverse * UNITS_PER_WORD)))); emit_insn (gen_rtx_SET (VOIDmode, operand_subword (dest, !reverse, TRUE, mode), ! change_address (src, SImode, ! plus_constant (addr, ! (!reverse) * UNITS_PER_WORD)))); } --- 1281,1291 ---- emit_insn (gen_rtx_SET (VOIDmode, operand_subword (dest, reverse, TRUE, mode), ! adjust_address (src, SImode, ! reverse * UNITS_PER_WORD))); emit_insn (gen_rtx_SET (VOIDmode, operand_subword (dest, !reverse, TRUE, mode), ! adjust_address (src, SImode, ! !reverse * UNITS_PER_WORD))); } *************** gen_split_move_double (operands) *** 1309,1321 **** else if (GET_CODE (dest) == MEM && GET_CODE (src) == REG) { - rtx addr = XEXP (dest, 0); - emit_insn (gen_rtx_SET (VOIDmode, ! change_address (dest, SImode, addr), operand_subword (src, 0, TRUE, mode))); emit_insn (gen_rtx_SET (VOIDmode, ! change_address (dest, SImode, ! plus_constant (addr, UNITS_PER_WORD)), operand_subword (src, 1, TRUE, mode))); } --- 1308,1317 ---- else if (GET_CODE (dest) == MEM && GET_CODE (src) == REG) { emit_insn (gen_rtx_SET (VOIDmode, ! adjust_address (dest, SImode, 0), operand_subword (src, 0, TRUE, mode))); emit_insn (gen_rtx_SET (VOIDmode, ! adjust_address (dest, SImode, UNITS_PER_WORD), operand_subword (src, 1, TRUE, mode))); } *** config/m68k/m68k.md 2001/06/09 19:11:22 1.39 --- config/m68k/m68k.md 2001/07/02 15:36:14 *************** *** 1256,1261 **** if (! memory_address_p (XFmode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = change_address (operands[1], XFmode, ! XEXP (operands[1], 0)); } if (flag_pic && TARGET_PCREL && ! reload_in_progress) --- 1256,1260 ---- if (! memory_address_p (XFmode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = adjust_address (operands[1], XFmode, 0); } if (flag_pic && TARGET_PCREL && ! reload_in_progress) *** config/m88k/m88k.c 2001/06/26 18:09:00 1.31 --- config/m88k/m88k.c 2001/07/02 15:36:16 *************** m88k_builtin_saveregs () *** 2614,2620 **** if (fixed < 8) { ! dest = change_address (addr, Pmode, ! plus_constant (XEXP (addr, 0), ! fixed * UNITS_PER_WORD)); move_block_from_reg (2 + fixed, dest, 8 - fixed, UNITS_PER_WORD * (8 - fixed)); --- 2614,2618 ---- if (fixed < 8) { ! dest = adjust_address (addr, Pmode, fixed * UNITS_PER_WORD); move_block_from_reg (2 + fixed, dest, 8 - fixed, UNITS_PER_WORD * (8 - fixed)); *** config/mips/mips.md 2001/06/14 20:15:19 1.95 --- config/mips/mips.md 2001/07/02 15:36:25 *************** move\\t%0,%z4\\n\\ *** 4543,4547 **** /* Change the mode to BLKmode for aliasing purposes. */ ! operands[1] = change_address (operands[1], BLKmode, XEXP (operands[1], 0)); /* Otherwise, emit a l[wd]l/l[wd]r pair to load the value. */ --- 4543,4547 ---- /* Change the mode to BLKmode for aliasing purposes. */ ! operands[1] = adjust_address (operands[1], BLKmode, 0); /* Otherwise, emit a l[wd]l/l[wd]r pair to load the value. */ *************** move\\t%0,%z4\\n\\ *** 4591,4595 **** /* Change the mode to BLKmode for aliasing purposes. */ ! operands[1] = change_address (operands[1], BLKmode, XEXP (operands[1], 0)); /* Otherwise, emit a lwl/lwr pair to load the value. */ --- 4591,4595 ---- /* Change the mode to BLKmode for aliasing purposes. */ ! operands[1] = adjust_address (operands[1], BLKmode, 0); /* Otherwise, emit a lwl/lwr pair to load the value. */ *************** move\\t%0,%z4\\n\\ *** 4639,4643 **** /* Change the mode to BLKmode for aliasing purposes. */ ! operands[0] = change_address (operands[0], BLKmode, XEXP (operands[0], 0)); /* Otherwise, emit a s[wd]l/s[wd]r pair to load the value. */ --- 4639,4643 ---- /* Change the mode to BLKmode for aliasing purposes. */ ! operands[0] = adjust_address (operands[0], BLKmode, 0); /* Otherwise, emit a s[wd]l/s[wd]r pair to load the value. */ *************** move\\t%0,%z4\\n\\ *** 5070,5074 **** scratch = gen_rtx_REG (SImode, REGNO (scratch)); ! memword = change_address (op1, SImode, NULL_RTX); offword = change_address (adj_offsettable_operand (op1, 4), SImode, NULL_RTX); --- 5070,5074 ---- scratch = gen_rtx_REG (SImode, REGNO (scratch)); ! memword = adjust_address (op1, SImode, 0); offword = change_address (adj_offsettable_operand (op1, 4), SImode, NULL_RTX); *************** move\\t%0,%z4\\n\\ *** 5150,5154 **** scratch = gen_rtx_REG (SImode, REGNO (operands[2])); ! memword = change_address (op0, SImode, NULL_RTX); offword = change_address (adj_offsettable_operand (op0, 4), SImode, NULL_RTX); --- 5150,5154 ---- scratch = gen_rtx_REG (SImode, REGNO (operands[2])); ! memword = adjust_address (op0, SImode, 0); offword = change_address (adj_offsettable_operand (op0, 4), SImode, NULL_RTX); *************** move\\t%0,%z4\\n\\ *** 5680,5684 **** recognized. */ if (GET_CODE (operands[1]) == MEM) ! source = change_address (operands[1], SFmode, NULL_RTX); else if (GET_CODE (operands[1]) == REG || GET_CODE (operands[1]) == SUBREG) source = gen_rtx_REG (SFmode, true_regnum (operands[1])); --- 5680,5684 ---- recognized. */ if (GET_CODE (operands[1]) == MEM) ! source = adjust_address (operands[1], SFmode, 0); else if (GET_CODE (operands[1]) == REG || GET_CODE (operands[1]) == SUBREG) source = gen_rtx_REG (SFmode, true_regnum (operands[1])); *** ns32k.c 2001/06/29 17:21:14 1.14 --- ns32k.c 2001/07/02 15:36:26 *************** move_tail (operands, bytes, offset) *** 424,444 **** if (bytes & 2) { ! rtx src, dest; ! dest = change_address (operands[0], HImode, ! plus_constant (XEXP (operands[0], 0), offset)); ! src = change_address (operands[1], HImode, ! plus_constant (XEXP (operands[1], 0), offset)); ! emit_move_insn (dest, src); offset += 2; } if (bytes & 1) ! { ! rtx src, dest; ! dest = change_address (operands[0], QImode, ! plus_constant (XEXP (operands[0], 0), offset)); ! src = change_address (operands[1], QImode, ! plus_constant (XEXP (operands[1], 0), offset)); ! emit_move_insn (dest, src); ! } } --- 424,434 ---- if (bytes & 2) { ! emit_move_insn (adjust_address (operands[0], HImode, offset), ! adjust_address (operands[1], HImode, offset)); offset += 2; } if (bytes & 1) ! emit_move_insn (adjust_address (operands[0], QImode, offset), ! adjust_address (operands[1], QImode, offset)); } *************** expand_block_move (operands) *** 462,465 **** --- 452,456 ---- { int words = bytes >> 2; + if (words) { *************** expand_block_move (operands) *** 467,479 **** { int offset = 0; for (; words; words--, offset += 4) ! { ! rtx src, dest; ! dest = change_address (operands[0], SImode, ! plus_constant (XEXP (operands[0], 0), offset)); ! src = change_address (operands[1], SImode, ! plus_constant (XEXP (operands[1], 0), offset)); ! emit_move_insn (dest, src); ! } } else --- 458,465 ---- { int offset = 0; + for (; words; words--, offset += 4) ! emit_move_insn (adjust_address (operands[0], SImode, offset), ! adjust_address (operands[1], SImode, offset)); } else *** config/rs6000/rs6000.c 2001/06/29 17:21:14 1.186 --- config/rs6000/rs6000.c 2001/07/02 15:36:32 *************** rs6000_emit_move (dest, source, mode) *** 1887,1892 **** && ! memory_address_p (mode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = change_address (operands[1], mode, ! XEXP (operands[1], 0)); emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); --- 1887,1891 ---- && ! memory_address_p (mode, XEXP (operands[1], 0)) && ! reload_in_progress) ! operands[1] = adjust_address (operands[1], mode, 0); emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); *** config/sh/sh.c 2001/06/26 18:09:17 1.102 --- config/sh/sh.c 2001/07/02 15:36:36 *************** sh_builtin_saveregs () *** 4233,4240 **** if (n_intregs > 0) move_block_from_reg (BASE_ARG_REG (SImode) + first_intreg, ! change_address (regbuf, BLKmode, ! plus_constant (XEXP (regbuf, 0), ! (n_floatregs ! * UNITS_PER_WORD))), n_intregs, n_intregs * UNITS_PER_WORD); --- 4233,4238 ---- if (n_intregs > 0) move_block_from_reg (BASE_ARG_REG (SImode) + first_intreg, ! adjust_address (regbuf, BLKmode, ! n_floatregs * UNITS_PER_WORD), n_intregs, n_intregs * UNITS_PER_WORD); *** config/sparc/sparc.md 2001/04/26 20:56:08 1.124 --- config/sparc/sparc.md 2001/07/02 15:36:44 *************** *** 2958,2962 **** " { ! rtx word0 = change_address (operands[1], SImode, NULL_RTX); rtx word1 = change_address (operands[1], SImode, plus_constant_for_output (XEXP (word0, 0), 4)); --- 2958,2962 ---- " { ! rtx word0 = adjust_address (operands[1], SImode, 0); rtx word1 = change_address (operands[1], SImode, plus_constant_for_output (XEXP (word0, 0), 4)); *************** *** 2986,2990 **** " { ! rtx word0 = change_address (operands[0], SImode, NULL_RTX); rtx word1 = change_address (operands[0], SImode, plus_constant_for_output (XEXP (word0, 0), 4)); --- 2986,2990 ---- " { ! rtx word0 = adjust_address (operands[0], SImode, 0); rtx word1 = change_address (operands[0], SImode, plus_constant_for_output (XEXP (word0, 0), 4)); *************** *** 3595,3599 **** " { ! rtx word0 = change_address (operands[1], SFmode, NULL_RTX); rtx word1 = change_address (operands[1], SFmode, plus_constant_for_output (XEXP (word0, 0), 4)); --- 3595,3599 ---- " { ! rtx word0 = adjust_address (operands[1], SFmode, 0); rtx word1 = change_address (operands[1], SFmode, plus_constant_for_output (XEXP (word0, 0), 4)); *************** *** 3630,3634 **** " { ! rtx word0 = change_address (operands[0], SFmode, NULL_RTX); rtx word1 = change_address (operands[0], SFmode, plus_constant_for_output (XEXP (word0, 0), 4)); --- 3630,3634 ---- " { ! rtx word0 = adjust_address (operands[0], SFmode, 0); rtx word1 = change_address (operands[0], SFmode, plus_constant_for_output (XEXP (word0, 0), 4)); *************** *** 3656,3660 **** rtx dest1, dest2; ! dest1 = change_address (operands[0], SFmode, NULL_RTX); dest2 = change_address (operands[0], SFmode, plus_constant_for_output (XEXP (dest1, 0), 4)); --- 3656,3660 ---- rtx dest1, dest2; ! dest1 = adjust_address (operands[0], SFmode, 0); dest2 = change_address (operands[0], SFmode, plus_constant_for_output (XEXP (dest1, 0), 4)); *************** *** 3930,3934 **** break; case MEM: ! dest1 = change_address (set_dest, DFmode, NULL_RTX); dest2 = change_address (set_dest, DFmode, plus_constant_for_output (XEXP (dest1, 0), 8)); --- 3930,3934 ---- break; case MEM: ! dest1 = adjust_address (set_dest, DFmode, 0); dest2 = change_address (set_dest, DFmode, plus_constant_for_output (XEXP (dest1, 0), 8)); *************** *** 3951,3955 **** " { ! rtx word0 = change_address (operands[1], DFmode, NULL_RTX); rtx word1 = change_address (operands[1], DFmode, plus_constant_for_output (XEXP (word0, 0), 8)); --- 3951,3955 ---- " { ! rtx word0 = adjust_address (operands[1], DFmode, 0); rtx word1 = change_address (operands[1], DFmode, plus_constant_for_output (XEXP (word0, 0), 8)); *************** *** 3987,3991 **** " { ! rtx word1 = change_address (operands[0], DFmode, NULL_RTX); rtx word2 = change_address (operands[0], DFmode, plus_constant_for_output (XEXP (word1, 0), 8)); --- 3987,3991 ---- " { ! rtx word1 = adjust_address (operands[0], DFmode, 0); rtx word2 = change_address (operands[0], DFmode, plus_constant_for_output (XEXP (word1, 0), 8)); *************** *** 8907,8914 **** /* Reload the function value registers. */ ! emit_move_insn (valreg1, change_address (result, DImode, XEXP (result, 0))); emit_move_insn (valreg2, ! change_address (result, TARGET_ARCH64 ? TFmode : DFmode, ! plus_constant (XEXP (result, 0), 8))); /* Put USE insns before the return. */ --- 8907,8913 ---- /* Reload the function value registers. */ ! emit_move_insn (valreg1, adjust_address (result, DImode, 0)); emit_move_insn (valreg2, ! adjust_address (result, TARGET_ARCH64 ? TFmode : DFmode, 8)); /* Put USE insns before the return. */ From gcc-patches-return-37914-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:51:59 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10351 invoked by alias); 2 Jul 2001 19:51:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10186 invoked from network); 2 Jul 2001 19:51:48 -0000 Received: from unknown (HELO disaster.jaj.com) (209.64.26.39) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:51:48 -0000 Received: (from pedwards@localhost) by disaster.jaj.com (8.9.3/8.9.3) id OAA03649; Mon, 2 Jul 2001 14:35:40 -0400 Date: Mon, 2 Jul 2001 14:35:40 -0400 From: Phil Edwards To: Benjamin Kosnik Cc: "Stephen M. Webb" , libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: [libstdc++-v3] Remove std::construct and std::destroy Message-ID: <20010702143540.A3622@disaster.jaj.com> References: <01070108464800.00282@umbriel> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from bkoz@redhat.com on Mon, Jul 02, 2001 at 12:48:57PM -0700 On Mon, Jul 02, 2001 at 12:48:57PM -0700, Benjamin Kosnik wrote: > > Hey Stephen. This is in, thanks. > > > Bootstrapped on an i686-pc-linux-gnu system, no regressions. Targetted at the > > trunk but is good for the 3.01 branch, too. > > I just checked it in to the trunk. I'm uncertain what to do with patches > that remove functions from std:: or otherwise change the library > significantly. (Say this patch, or the iterator work.) Right now I'm now > checking them into the branch, although this might be a mistake. I think it's okay. Users who have been using 'std::' are going to get bitten by their practices no matter what happens. Phil -- Would I had phrases that are not known, utterances that are strange, in new language that has not been used, free from repetition, not an utterance which has grown stale, which men of old have spoken. - anonymous Egyptian scribe, c.1700 BC From gcc-patches-return-37915-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 19:53:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11560 invoked by alias); 2 Jul 2001 19:53:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11483 invoked from network); 2 Jul 2001 19:53:38 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 19:53:38 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id VAA05512; Mon, 2 Jul 2001 21:53:35 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62JrZu21297; Mon, 2 Jul 2001 21:53:35 +0200 (MEST) From: Rainer Orth Message-ID: <15168.53565.737108.533887@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 21:53:33 +0200 (MEST) To: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: 3.0.1 PATCH: Typo in libjava configure.in X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Trying to build GCC 3.0 for mips-sgi-irix5.3 with --enable-libgcj and with implicit detection of the need for sjlj exceptions, libjava failed to configure (unlike the case when I explicitly specified --enable-sjlj-exceptions) with checking for exception model to use... configure: error: unable to detect exception model It turns out that this is due to a simple typo in configure.in. The patch below fixes this and allows the bootstrap to continue. Ok for branch and mainline? Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE Mon Jul 2 21:52:20 2001 Rainer Orth * configure.in (test for eh model): Fixed typo. --- libjava/configure.in 2001/06/08 23:38:55 1.1 +++ libjava/configure.in 2001/06/08 21:38:55 @@ -113,7 +113,7 @@ EOF old_CXXFLAGS="$CXXFLAGS" CXXFLAGS=-S if AC_TRY_EVAL(ac_compile); then - if grep _Unwind_Sjlj_Resume conftest.s >/dev/null 2>&1 ; then + if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=yes elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then enable_sjlj_exceptions=no From gcc-patches-return-37916-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:00:51 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16325 invoked by alias); 2 Jul 2001 20:00:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16268 invoked from network); 2 Jul 2001 20:00:46 -0000 Received: from unknown (HELO thief.cygnus.com) (205.180.231.32) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:00:46 -0000 Received: (from geoffk@localhost) by thief.cygnus.com (8.11.0/8.11.0) id f62K0jU19126; Mon, 2 Jul 2001 13:00:45 -0700 Date: Mon, 2 Jul 2001 13:00:45 -0700 From: Geoffrey Keating Message-Id: <200107022000.f62K0jU19126@thief.cygnus.com> To: gcc-patches@gcc.gnu.org CC: toshiyasu.morita@hsa.hitachi.com Subject: Patch to document STACK_PUSH_CODE, deal with it, and other things. Reply-To: geoffk@redhat.com This deals with two issues in emit_move_insn_1 in the same (rarely used) chunk of code. The code operates only when a push insn is generated but there is no mov* expander for the appropriate mode, and it was wrong in a number of ways. I'm also taking this opportunity to commit Toshi's patch. Bootstrapped and tested on x86-linux, and also tested on the internal Red Hat tree with a currently-confidential port. -- Geoff Keating ===File ~/patches/gcc-stackpushcode.patch=================== 2001-07-02 Geoffrey Keating * doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE. * expr.c (emit_move_insn_1): Deal with non-default STACK_PUSH_CODE. * expr.c (emit_single_push_insn): Fix warning. 2001-07-02 Toshiyasu Morita * expr.c (emit_move_insn_1): Avoid modifying cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined. Index: expr.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/expr.c,v retrieving revision 1.331 diff -p -u -p -r1.331 expr.c --- expr.c 2001/07/01 20:49:58 1.331 +++ expr.c 2001/07/02 19:56:54 @@ -2973,8 +2973,39 @@ emit_move_insn_1 (x, y) X with a reference to the stack pointer. */ if (push_operand (x, GET_MODE (x))) { - anti_adjust_stack (GEN_INT (GET_MODE_SIZE (GET_MODE (x)))); - x = change_address (x, VOIDmode, stack_pointer_rtx); + rtx temp; + enum rtx_code code; + + /* Do not use anti_adjust_stack, since we don't want to update + stack_pointer_delta. */ + temp = expand_binop (Pmode, +#ifdef STACK_GROWS_DOWNWARD + sub_optab, +#else + add_optab, +#endif + stack_pointer_rtx, + GEN_INT + (PUSH_ROUNDING (GET_MODE_SIZE (GET_MODE (x)))), + stack_pointer_rtx, + 0, + OPTAB_LIB_WIDEN); + if (temp != stack_pointer_rtx) + emit_move_insn (stack_pointer_rtx, temp); + + code = GET_CODE (XEXP (x, 0)); + /* Just hope that small offsets off SP are OK. */ + if (code == POST_INC) + temp = gen_rtx_PLUS (Pmode, stack_pointer_rtx, + GEN_INT (-(HOST_WIDE_INT) + GET_MODE_SIZE (GET_MODE (x)))); + else if (code == POST_DEC) + temp = gen_rtx_PLUS (Pmode, stack_pointer_rtx, + GEN_INT (GET_MODE_SIZE (GET_MODE (x)))); + else + temp = stack_pointer_rtx; + + x = change_address (x, VOIDmode, temp); } #endif @@ -3142,7 +3173,7 @@ emit_single_push_insn (mode, x, type) { #ifdef PUSH_ROUNDING rtx dest_addr; - int rounded_size = PUSH_ROUNDING (GET_MODE_SIZE (mode)); + unsigned rounded_size = PUSH_ROUNDING (GET_MODE_SIZE (mode)); rtx dest; if (GET_MODE_SIZE (mode) == rounded_size) @@ -3151,7 +3182,7 @@ emit_single_push_insn (mode, x, type) { #ifdef STACK_GROWS_DOWNWARD dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, - GEN_INT (-rounded_size)); + GEN_INT (-(HOST_WIDE_INT)rounded_size)); #else dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (rounded_size)); Index: doc/tm.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/tm.texi,v retrieving revision 1.20 diff -p -u -p -r1.20 tm.texi --- tm.texi 2001/07/01 23:21:11 1.20 +++ tm.texi 2001/07/02 19:56:56 @@ -2507,6 +2507,23 @@ When we say, ``define this macro if @dot compiler checks this macro only with @code{#ifdef} so the precise definition used does not matter. +@findex STACK_PUSH_CODE +@item STACK_PUSH_CODE + +This macro defines the operation used when something is pushed +on the stack. In RTL, a push operation will be +@code{(set (mem (STACK_PUSH_CODE (reg sp))) ...)} + +The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC}, +and @code{POST_INC}. Which of these is correct depends on +the stack direction and on whether the stack pointer points +to the last item on the stack or whether it points to the +space for the next item on the stack. + +The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is +defined, which is almost always right, and @code{PRE_INC} otherwise, +which is often wrong. + @findex FRAME_GROWS_DOWNWARD @item FRAME_GROWS_DOWNWARD Define this macro if the addresses of local variable slots are at negative ============================================================ From gcc-patches-return-37917-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:09:51 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19633 invoked by alias); 2 Jul 2001 20:09:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19566 invoked from network); 2 Jul 2001 20:09:49 -0000 Received: from unknown (HELO gash2.peakpeak.com) (207.174.178.17) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:09:49 -0000 Received: from creche.cygnus.com (tq0146.peakpeak.com [207.174.177.146]) by gash2.peakpeak.com (8.9.3/8.9.3) with ESMTP id OAA08230; Mon, 2 Jul 2001 14:09:46 -0600 Received: (from tromey@localhost) by creche.cygnus.com (8.9.3/8.9.3) id OAA09944; Mon, 2 Jul 2001 14:30:16 -0600 To: Rainer Orth Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Typo in libjava configure.in References: <15168.53565.737108.533887@xayide.TechFak.Uni-Bielefeld.DE> X-Zippy: I feel like I'm in a Toilet Bowl with a thumbtack in my forehead!! X-Attribution: Tom Reply-To: tromey@redhat.com From: Tom Tromey Date: 02 Jul 2001 14:30:14 -0600 In-Reply-To: Rainer Orth's message of "Mon, 2 Jul 2001 21:53:33 +0200 (MEST)" Message-ID: <87d77jhy5l.fsf@creche.redhat.com> Lines: 14 X-Mailer: Gnus v5.7/Emacs 20.5 >>>>> "Rainer" == Rainer Orth writes: Rainer> It turns out that this is due to a simple typo in Rainer> configure.in. The patch below fixes this and allows the Rainer> bootstrap to continue. Rainer> Ok for branch and mainline? I don't think I can approve or reject patches for the branch. However, this is fine for the trunk. Please check it in. Thanks. Tom From gcc-patches-return-37918-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:15:26 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21572 invoked by alias); 2 Jul 2001 20:15:25 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21535 invoked from network); 2 Jul 2001 20:15:24 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:15:24 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id WAA06114; Mon, 2 Jul 2001 22:15:21 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62KFKG21468; Mon, 2 Jul 2001 22:15:20 +0200 (MEST) From: Rainer Orth Message-ID: <15168.54871.167835.712801@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 22:15:19 +0200 (MEST) To: tromey@redhat.com Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Typo in libjava configure.in In-Reply-To: <87d77jhy5l.fsf@creche.redhat.com> References: <15168.53565.737108.533887@xayide.TechFak.Uni-Bielefeld.DE> <87d77jhy5l.fsf@creche.redhat.com> X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Tom Tromey writes: > Rainer> Ok for branch and mainline? > > I don't think I can approve or reject patches for the branch. > > However, this is fine for the trunk. Please check it in. Mark's message about GCC 3.0.1 http://gcc.gnu.org/ml/gcc/2001-06/msg01382.html suggests otherwise. Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37919-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:18:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 22547 invoked by alias); 2 Jul 2001 20:18:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22490 invoked from network); 2 Jul 2001 20:18:10 -0000 Received: from unknown (HELO gash2.peakpeak.com) (207.174.178.17) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:18:10 -0000 Received: from creche.cygnus.com (tq0146.peakpeak.com [207.174.177.146]) by gash2.peakpeak.com (8.9.3/8.9.3) with ESMTP id OAA09675; Mon, 2 Jul 2001 14:18:06 -0600 Received: (from tromey@localhost) by creche.cygnus.com (8.9.3/8.9.3) id OAA10298; Mon, 2 Jul 2001 14:38:36 -0600 To: Rainer Orth Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Typo in libjava configure.in References: <15168.53565.737108.533887@xayide.TechFak.Uni-Bielefeld.DE> <87d77jhy5l.fsf@creche.redhat.com> <15168.54871.167835.712801@xayide.TechFak.Uni-Bielefeld.DE> X-Zippy: QUIET!! I'm being CREATIVE!! Is it GREAT yet? It's s'posed to SMOKEY THE BEAR... X-Attribution: Tom Reply-To: tromey@redhat.com From: Tom Tromey Date: 02 Jul 2001 14:38:36 -0600 In-Reply-To: Rainer Orth's message of "Mon, 2 Jul 2001 22:15:19 +0200 (MEST)" Message-ID: <87hewv9icz.fsf@creche.redhat.com> Lines: 13 X-Mailer: Gnus v5.7/Emacs 20.5 >>>>> "Rainer" == Rainer Orth writes: >> I don't think I can approve or reject patches for the branch. Rainer> Mark's message about GCC 3.0.1 Rainer> http://gcc.gnu.org/ml/gcc/2001-06/msg01382.html Rainer> suggests otherwise. So it does. Please check this in on the branch as well. Thanks. Tom From gcc-patches-return-37920-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:18:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23056 invoked by alias); 2 Jul 2001 20:18:53 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23022 invoked from network); 2 Jul 2001 20:18:52 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:18:52 -0000 Received: from localhost.localdomain (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id NAA19221 for ; Mon, 2 Jul 2001 13:18:48 -0700 (PDT) Received: from localhost.localdomain (law@localhost) by localhost.localdomain (8.11.0/8.11.0) with ESMTP id f62KLZU31202 for ; Mon, 2 Jul 2001 13:21:35 -0700 X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4 To: gcc-patches@gcc.gnu.org Reply-to: law@redhat.com From: law@redhat.com Subject: Moving the SSA path Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 13:21:35 -0700 Message-ID: <31201.994105295@localhost.localdomain> As mentioned on the main mailing list, I'm moving the SSA path to an earlier point in the compilation process. In the process of updating the documentation, I noticed that all the dump #s mentioned in invoke.texi were incorrect. So I fixed them too. Bootstrapped ia32-linux. * toplev.c (dump_file_index): Move SSA dumps just after first jump dump. (dump_file): Corresponding changes. (rest_of_compilation): Move SSA path to just after the first jump pass. * doc/gcc.texi (Passes): Update due to movement of SSA path. * doc/invoke.texi: Update dump file #s as they were completely out of date with reality. Index: toplev.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/toplev.c,v retrieving revision 1.476 diff -c -3 -p -r1.476 toplev.c *** toplev.c 2001/06/29 20:35:53 1.476 --- toplev.c 2001/07/02 19:58:44 *************** enum dump_file_index *** 253,263 **** DFI_sibling, DFI_eh, DFI_jump, - DFI_cse, - DFI_addressof, DFI_ssa, DFI_ssa_dce, DFI_ussa, DFI_gcse, DFI_loop, DFI_cse2, --- 253,263 ---- DFI_sibling, DFI_eh, DFI_jump, DFI_ssa, DFI_ssa_dce, DFI_ussa, + DFI_cse, + DFI_addressof, DFI_gcse, DFI_loop, DFI_cse2, *************** struct dump_file_info dump_file[DFI_MAX] *** 299,309 **** { "sibling", 'i', 0, 0, 0 }, { "eh", 'h', 0, 0, 0 }, { "jump", 'j', 0, 0, 0 }, - { "cse", 's', 0, 0, 0 }, - { "addressof", 'F', 0, 0, 0 }, { "ssa", 'e', 1, 0, 0 }, { "ssadce", 'X', 1, 0, 0 }, { "ussa", 'e', 1, 0, 0 }, /* Yes, duplicate enable switch. */ { "gcse", 'G', 1, 0, 0 }, { "loop", 'L', 1, 0, 0 }, { "cse2", 't', 1, 0, 0 }, --- 299,309 ---- { "sibling", 'i', 0, 0, 0 }, { "eh", 'h', 0, 0, 0 }, { "jump", 'j', 0, 0, 0 }, { "ssa", 'e', 1, 0, 0 }, { "ssadce", 'X', 1, 0, 0 }, { "ussa", 'e', 1, 0, 0 }, /* Yes, duplicate enable switch. */ + { "cse", 's', 0, 0, 0 }, + { "addressof", 'F', 0, 0, 0 }, { "gcse", 'G', 1, 0, 0 }, { "loop", 'L', 1, 0, 0 }, { "cse2", 't', 1, 0, 0 }, *************** rest_of_compilation (decl) *** 2947,2952 **** --- 2947,3007 ---- goto exit_rest_of_compilation; } + /* Long term, this should probably move before the jump optimizer too, + but I didn't want to disturb the rtl_dump_and_exit and related + stuff at this time. */ + if (optimize > 0 && flag_ssa) + { + /* Convert to SSA form. */ + + timevar_push (TV_TO_SSA); + open_dump_file (DFI_ssa, decl); + + find_basic_blocks (insns, max_reg_num (), rtl_dump_file); + cleanup_cfg (); + convert_to_ssa (); + + close_dump_file (DFI_ssa, print_rtl_with_bb, insns); + timevar_pop (TV_TO_SSA); + + /* The SSA implementation uses basic block numbers in its phi + nodes. Thus, changing the control-flow graph or the basic + blocks, e.g., calling find_basic_blocks () or cleanup_cfg (), + may cause problems. */ + + if (flag_ssa_dce) + { + /* Remove dead code. */ + + timevar_push (TV_SSA_DCE); + open_dump_file (DFI_ssa_dce, decl); + + insns = get_insns (); + ssa_eliminate_dead_code(); + + close_dump_file (DFI_ssa_dce, print_rtl_with_bb, insns); + timevar_pop (TV_SSA_DCE); + } + + /* Convert from SSA form. */ + + timevar_push (TV_FROM_SSA); + open_dump_file (DFI_ussa, decl); + + convert_from_ssa (); + /* New registers have been created. Rescan their usage. */ + reg_scan (insns, max_reg_num (), 1); + /* Life analysis used in SSA adds log_links but these + shouldn't be there until the flow stage, so clear + them away. */ + clear_log_links (insns); + + close_dump_file (DFI_ussa, print_rtl_with_bb, insns); + timevar_pop (TV_FROM_SSA); + + ggc_collect (); + } + timevar_push (TV_JUMP); if (optimize > 0) *************** rest_of_compilation (decl) *** 3044,3101 **** close_dump_file (DFI_addressof, print_rtl, insns); ggc_collect (); - - if (optimize > 0 && flag_ssa) - { - /* Convert to SSA form. */ - - timevar_push (TV_TO_SSA); - open_dump_file (DFI_ssa, decl); - - find_basic_blocks (insns, max_reg_num (), rtl_dump_file); - cleanup_cfg (); - convert_to_ssa (); - - close_dump_file (DFI_ssa, print_rtl_with_bb, insns); - timevar_pop (TV_TO_SSA); - - /* The SSA implementation uses basic block numbers in its phi - nodes. Thus, changing the control-flow graph or the basic - blocks, e.g., calling find_basic_blocks () or cleanup_cfg (), - may cause problems. */ - - if (flag_ssa_dce) - { - /* Remove dead code. */ - - timevar_push (TV_SSA_DCE); - open_dump_file (DFI_ssa_dce, decl); - - insns = get_insns (); - ssa_eliminate_dead_code(); - - close_dump_file (DFI_ssa_dce, print_rtl_with_bb, insns); - timevar_pop (TV_SSA_DCE); - } - - /* Convert from SSA form. */ - - timevar_push (TV_FROM_SSA); - open_dump_file (DFI_ussa, decl); - - convert_from_ssa (); - /* New registers have been created. Rescan their usage. */ - reg_scan (insns, max_reg_num (), 1); - /* Life analysis used in SSA adds log_links but these - shouldn't be there until the flow stage, so clear - them away. */ - clear_log_links (insns); - - close_dump_file (DFI_ussa, print_rtl_with_bb, insns); - timevar_pop (TV_FROM_SSA); - - ggc_collect (); - } /* Perform global cse. */ --- 3099,3104 ---- Index: doc/gcc.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/gcc.texi,v retrieving revision 1.23 diff -c -3 -p -r1.23 gcc.texi *** gcc.texi 2001/06/29 22:04:40 1.23 --- gcc.texi 2001/07/02 19:59:22 *************** The option @option{-dj} causes a debuggi *** 3372,3377 **** --- 3372,3378 ---- this pass is run for the first time. This dump file's name is made by appending @samp{.jump} to the input file name. + @cindex register use analysis @item Register scan. This pass finds the first and last use of each *************** the second conditional test. The source *** 3387,3406 **** @file{jump.c}. This optimization is only performed if @option{-fthread-jumps} is enabled. - @cindex common subexpression elimination - @cindex constant propagation - @item - Common subexpression elimination. This pass also does constant - propagation. Its source files are @file{cse.c}, and @file{cselib.c}. - If constant propagation causes conditional jumps to become - unconditional or to become no-ops, jump optimization is run again when - CSE is finished. - - @opindex ds - The option @option{-ds} causes a debugging dump of the RTL code after - this pass. This dump file's name is made by appending @samp{.cse} to - the input file name. - @cindex SSA optimizations @cindex Single Static Assignment optimizations @opindex fssa --- 3388,3393 ---- *************** The option @option{-dX} causes a debuggi *** 3435,3440 **** --- 3422,3442 ---- this pass. This dump file's name is made by appending @samp{.ssadce} to the input file name. @end itemize + + @cindex common subexpression elimination + @cindex constant propagation + @item + Common subexpression elimination. This pass also does constant + propagation. Its source files are @file{cse.c}, and @file{cselib.c}. + If constant propagation causes conditional jumps to become + unconditional or to become no-ops, jump optimization is run again when + CSE is finished. + + @opindex ds + The option @option{-ds} causes a debugging dump of the RTL code after + this pass. This dump file's name is made by appending @samp{.cse} to + the input file name. + @cindex global common subexpression elimination @cindex constant propagation @cindex copy propagation Index: doc/invoke.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/invoke.texi,v retrieving revision 1.28 diff -c -3 -p -r1.28 invoke.texi *** invoke.texi 2001/07/02 12:55:33 1.28 --- invoke.texi 2001/07/02 19:59:59 *************** Here are the possible letters for use in *** 2856,2956 **** Annotate the assembler output with miscellaneous debugging information. @item b @opindex db ! Dump after computing branch probabilities, to @file{@var{file}.11.bp}. @item B @opindex dB ! Dump after block reordering, to @file{@var{file}.26.bbro}. @item c @opindex dc ! Dump after instruction combination, to the file @file{@var{file}.14.combine}. @item C @opindex dC ! Dump after the first if conversion, to the file @file{@var{file}.15.ce}. @item d @opindex dd ! Dump after delayed branch scheduling, to @file{@var{file}.29.dbr}. @item D @opindex dD Dump all macro definitions, at the end of preprocessing, in addition to normal output. @item e @opindex de ! Dump after SSA optimizations, to @file{@var{file}.05.ssa} and @file{@var{file}.06.ussa}. @item E @opindex dE ! Dump after the second if conversion, to @file{@var{file}.24.ce2}. @item f @opindex df ! Dump after life analysis, to @file{@var{file}.13.life}. @item F @opindex dF ! Dump after purging @code{ADDRESSOF} codes, to @file{@var{file}.04.addressof}. @item g @opindex dg ! Dump after global register allocation, to @file{@var{file}.19.greg}. @item o @opindex do ! Dump after post-reload CSE and other optimizations, to @file{@var{file}.20.postreload}. @item G @opindex dG ! Dump after GCSE, to @file{@var{file}.08.gcse}. @item i @opindex di Dump after sibling call optimizations, to @file{@var{file}.01.sibling}. @item j @opindex dj ! Dump after the first jump optimization, to @file{@var{file}.02.jump}. @item J @opindex dJ ! Dump after the last jump optimization, to @file{@var{file}.27.jump2}. @item k @opindex dk ! Dump after conversion from registers to stack, to @file{@var{file}.29.stack}. @item l @opindex dl ! Dump after local register allocation, to @file{@var{file}.18.lreg}. @item L @opindex dL ! Dump after loop optimization, to @file{@var{file}.09.loop}. @item M @opindex dM Dump after performing the machine dependent reorganisation pass, to ! @file{@var{file}.28.mach}. @item n @opindex dn ! Dump after register renumbering, to @file{@var{file}.23.rnreg}. @item N @opindex dN ! Dump after the register move pass, to @file{@var{file}.16.regmove}. @item r @opindex dr Dump after RTL generation, to @file{@var{file}.00.rtl}. @item R @opindex dR Dump after the second instruction scheduling pass, to ! @file{@var{file}.25.sched2}. @item s @opindex ds Dump after CSE (including the jump optimization that sometimes follows ! CSE), to @file{@var{file}.03.cse}. @item S @opindex dS Dump after the first instruction scheduling pass, to ! @file{@var{file}.17.sched}. @item t @opindex dt Dump after the second CSE pass (including the jump optimization that ! sometimes follows CSE), to @file{@var{file}.10.cse2}. @item w @opindex dw ! Dump after the second flow pass, to @file{@var{file}.21.flow2}. @item X @opindex dX ! Dump after SSA aggressive dead code elimination, to @file{@var{file}.06.ssadce}. @item z @opindex dz ! Dump after the peephole pass, to @file{@var{file}.22.peephole2}. @item a @opindex da Produce all the dumps listed above. --- 2856,2960 ---- Annotate the assembler output with miscellaneous debugging information. @item b @opindex db ! Dump after computing branch probabilities, to @file{@var{file}.13.bp}. @item B @opindex dB ! Dump after block reordering, to @file{@var{file}.27.bbro}. @item c @opindex dc ! Dump after instruction combination, to the file @file{@var{file}.15.combine}. @item C @opindex dC ! Dump after the first if conversion, to the file @file{@var{file}.16.ce}. @item d @opindex dd ! Dump after delayed branch scheduling, to @file{@var{file}.30.dbr}. @item D @opindex dD Dump all macro definitions, at the end of preprocessing, in addition to normal output. @item e @opindex de ! Dump after SSA optimizations, to @file{@var{file}.04.ssa} and @file{@var{file}.06.ussa}. @item E @opindex dE ! Dump after the second if conversion, to @file{@var{file}.25.ce2}. @item f @opindex df ! Dump after life analysis, to @file{@var{file}.14.life}. @item F @opindex dF ! Dump after purging @code{ADDRESSOF} codes, to @file{@var{file}.08.addressof}. @item g @opindex dg ! Dump after global register allocation, to @file{@var{file}.20.greg}. ! @item h ! @opindex dh ! Dump after finalization of EH handling code, to @file{@var{file}.02.eh}. @item o + @item o @opindex do ! Dump after post-reload CSE and other optimizations, to @file{@var{file}.21.postreload}. @item G @opindex dG ! Dump after GCSE, to @file{@var{file}.09.gcse}. @item i @opindex di Dump after sibling call optimizations, to @file{@var{file}.01.sibling}. @item j @opindex dj ! Dump after the first jump optimization, to @file{@var{file}.03.jump}. @item J @opindex dJ ! Dump after the last jump optimization, to @file{@var{file}.28.jump2}. @item k @opindex dk ! Dump after conversion from registers to stack, to @file{@var{file}.31.stack}. @item l @opindex dl ! Dump after local register allocation, to @file{@var{file}.19.lreg}. @item L @opindex dL ! Dump after loop optimization, to @file{@var{file}.10.loop}. @item M @opindex dM Dump after performing the machine dependent reorganisation pass, to ! @file{@var{file}.29.mach}. @item n @opindex dn ! Dump after register renumbering, to @file{@var{file}.24.rnreg}. @item N @opindex dN ! Dump after the register move pass, to @file{@var{file}.17.regmove}. @item r @opindex dr Dump after RTL generation, to @file{@var{file}.00.rtl}. @item R @opindex dR Dump after the second instruction scheduling pass, to ! @file{@var{file}.26.sched2}. @item s @opindex ds Dump after CSE (including the jump optimization that sometimes follows ! CSE), to @file{@var{file}.07.cse}. @item S @opindex dS Dump after the first instruction scheduling pass, to ! @file{@var{file}.18.sched}. @item t @opindex dt Dump after the second CSE pass (including the jump optimization that ! sometimes follows CSE), to @file{@var{file}.11.cse2}. @item w @opindex dw ! Dump after the second flow pass, to @file{@var{file}.22.flow2}. @item X @opindex dX ! Dump after SSA aggressive dead code elimination, to @file{@var{file}.05.ssadce}. @item z @opindex dz ! Dump after the peephole pass, to @file{@var{file}.23.peephole2}. @item a @opindex da Produce all the dumps listed above. From gcc-patches-return-37921-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:25:35 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25360 invoked by alias); 2 Jul 2001 20:25:35 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25266 invoked from network); 2 Jul 2001 20:25:32 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:25:32 -0000 Received: from localhost.localdomain (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id NAA19908 for ; Mon, 2 Jul 2001 13:25:28 -0700 (PDT) Received: from localhost.localdomain (law@localhost) by localhost.localdomain (8.11.0/8.11.0) with ESMTP id f62KSCh31220 for ; Mon, 2 Jul 2001 13:28:14 -0700 X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4 To: gcc-patches@gcc.gnu.org Reply-to: law@redhat.com From: law@redhat.com Subject: ChangeLog rotated Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 02 Jul 2001 13:28:12 -0700 Message-ID: <31219.994105692@localhost.localdomain> I rotated gcc/ChangeLog. Someone suggested gcc3.0 as a nice break point. However, there's no strong correlation between any particular ChangeLog entry in the mainline tree and the actual GCC 3.0 release mark. So, in keeping with the tradition starting in early 2000, I rotated out the changes from the first half of the year into a new file (ChangeLog.5 covering Jan 1, 2001 to June 30, 2001 inclusive). jeff From gcc-patches-return-37922-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:27:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26189 invoked by alias); 2 Jul 2001 20:27:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26154 invoked from network); 2 Jul 2001 20:27:53 -0000 Received: from unknown (HELO thief.cygnus.com) (205.180.231.32) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:27:53 -0000 Received: (from geoffk@localhost) by thief.cygnus.com (8.11.0/8.11.0) id f62KRrh26065; Mon, 2 Jul 2001 13:27:53 -0700 Date: Mon, 2 Jul 2001 13:27:53 -0700 From: Geoffrey Keating Message-Id: <200107022027.f62KRrh26065@thief.cygnus.com> To: gcc-patches@gcc.gnu.org Subject: cse patch to not extend hard reg lifetimes in bad situations Reply-To: geoffk@redhat.com For some reason, CSE seems to be in the business of trying to eliminate hard register copies. IMHO, this is much too early in the compilation to do this---the right place is during register allocation---and an internal port I have shows why. It has an instruction, for which one of the inputs must be a particular hard register. This is achieved by having a class that holds that register, and an appropriate constraint on that input. The register is also an argument-passing register. CSE extended the lifetime of an incoming argument in the hard register to be nearly the whole function, causing reload to fail because the only register that reload could use for the input was already in use. The port is not SMALL_REGISTER_CLASSES because it actually has lots of general registers, only a few instructions have really small register choices. I will commit this patch after the bootstrap & test on x86-linux succeeds. -- Geoff Keating ===File ~/patches/gcc-cselikelyspilled.patch================ 2001-07-02 Geoffrey Keating * cse.c (canon_hash): Don't register registers in very small register classes, as extending their lifetime might cause reload to fail. Index: cse.c =================================================================== RCS file: /cvs/cvsfiles/devo/gcc/cse.c,v retrieving revision 1.217 diff -p -u -p -r1.217 cse.c --- cse.c 2001/06/04 18:09:05 1.217 +++ cse.c 2001/07/02 20:19:50 @@ -2273,10 +2273,13 @@ canon_hash (x, mode) failure to do so leads to failure to simplify 0<100 type of conditionals. - On all machines, we can't record any global registers. */ + On all machines, we can't record any global registers. + Nor should we record any register that is in a small + class, as defined by CLASS_LIKELY_SPILLED_P. */ if (regno < FIRST_PSEUDO_REGISTER && (global_regs[regno] + || CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (regno)) || (SMALL_REGISTER_CLASSES && ! fixed_regs[regno] && regno != FRAME_POINTER_REGNUM ============================================================ From gcc-patches-return-37923-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:32:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28453 invoked by alias); 2 Jul 2001 20:32:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28389 invoked from network); 2 Jul 2001 20:31:58 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:31:58 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id WAA06451; Mon, 2 Jul 2001 22:31:52 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f62KVpU21691; Mon, 2 Jul 2001 22:31:51 +0200 (MEST) From: Rainer Orth Message-ID: <15168.55861.433853.243020@xayide.TechFak.Uni-Bielefeld.DE> Date: Mon, 2 Jul 2001 22:31:49 +0200 (MEST) To: tromey@redhat.com Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Typo in libjava configure.in In-Reply-To: <87hewv9icz.fsf@creche.redhat.com> References: <15168.53565.737108.533887@xayide.TechFak.Uni-Bielefeld.DE> <87d77jhy5l.fsf@creche.redhat.com> <15168.54871.167835.712801@xayide.TechFak.Uni-Bielefeld.DE> <87hewv9icz.fsf@creche.redhat.com> X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Tom Tromey writes: > Please check this in on the branch as well. Done, thanks. I noticed this typo only existed on the branch ;-) Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37924-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:42:32 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30708 invoked by alias); 2 Jul 2001 20:42:32 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30682 invoked from network); 2 Jul 2001 20:42:31 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:42:31 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62KIV601821; Mon, 2 Jul 2001 13:18:36 -0700 Date: Mon, 02 Jul 2001 13:18:30 -0700 From: Mark Mitchell To: DJ Delorie , "zackw@Stanford.EDU" cc: "pfeifer@dbai.tuwien.ac.at" , "neil@daikokuya.demon.co.uk" , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <157060000.994105109@warlock.codesourcery.com> In-Reply-To: <200107021854.OAA17300@greed.delorie.com> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline > I am opposed to this change, and request that it be reverted. There > are systems that support man pages but not perl (or at least, one > cannot assume perl is available, or that it is capable of running the > pod2man script). Those systems will not be able to build the man > pages. Configure and the Makefile were careful to detect these The important thing is that on such systems we do not try to build the manual pages. Hopefully, Zack's change didn't change that; I don't think it did. So, if you build on such a system, from CVS, you will get no man pages. That's not really a very big deal. The important thing is that even on such systems you will get the man pages in a release. And, you will, because the release script will build them before packaging them up as a tarfile. It may be that your expectation is that building from CVS on a system with limitations would produce the same thing as building from a release tarball. That expectation is not true, in general, and I think we're tending to move further away from that. There are good and bad things about that, but overall I think it's the right decision. > systems and use the CVS man pages when needed (although Mark never > changed the $(STAMP) thing back as I requested, which I again request > he do). I forgot about this in the mayhem before GCC 3.0. I will add it to my to-do list. Sorry. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37925-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 20:51:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5757 invoked by alias); 2 Jul 2001 20:51:53 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5650 invoked from network); 2 Jul 2001 20:51:51 -0000 Received: from unknown (HELO motgate4.mot.com) (144.189.100.102) by sourceware.cygnus.com with SMTP; 2 Jul 2001 20:51:51 -0000 Received: [from mothost.mot.com (mothost.mot.com [129.188.137.101]) by motgate4.mot.com (motgate4 2.1) with ESMTP id NAA03073; Mon, 2 Jul 2001 13:51:50 -0700 (MST)] Received: [from latour.rsch.comm.mot.com (latour.rsch.comm.mot.com [145.1.80.116]) by mothost.mot.com (MOT-mothost 2.0) with ESMTP id NAA14870; Mon, 2 Jul 2001 13:51:50 -0700 (MST)] Received: (from rittle@localhost) by latour.rsch.comm.mot.com (8.11.1/8.11.1) id f62KpnX81420; Mon, 2 Jul 2001 15:51:49 -0500 (CDT) (envelope-from rittle) Date: Mon, 2 Jul 2001 15:51:49 -0500 (CDT) From: Loren James Rittle Message-Id: <200107022051.f62KpnX81420@latour.rsch.comm.mot.com> To: libstdc++@gcc.gnu.org CC: gcc-patches@gcc.gnu.org Subject: PATCH for libstdc++/2211 (some discussion held on gcc-bugs) Reply-to: rittle@labs.mot.com User-Agent: SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/20.5 (i386-unknown-freebsdelf3.2) MULE/4.0 (HANANOEN) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII This patch removes an old hack that was impeding performance when C++ IO is unsynchronized from C IO (actually, it further refines where the input buffer size of cin must be constrained to a size of 1 byte and documents that condition). Bootstrapped and checked on i386-unknown-freebsd4.2. Approved by Benjamin. Applied to mainline only since it only improves performance. 2001-07-02 Loren J. Rittle libstdc++/2211 * src/ios.cc (ios_base::Init::_S_ios_create): Rename __bufsize to __out_bufsize. Add __in_bufsize, document it and use it. Index: libstdc++-v3/src/ios.cc =================================================================== RCS file: /cvs/gcc/egcs/libstdc++-v3/src/ios.cc,v retrieving revision 1.19 diff -c -r1.19 ios.cc *** ios.cc 2001/06/06 01:31:58 1.19 --- ios.cc 2001/07/02 20:41:25 *************** *** 144,157 **** void ios_base::Init::_S_ios_create(bool __sync) { ! int __bufsize = __sync ? 0 : static_cast(BUFSIZ); // NB: The file globals.cc creates the four standard files // with NULL buffers. At this point, we swap out the dummy NULL // [io]stream objects and buffers with the real deal. ! new (&buf_cout) filebuf(stdout, ios_base::out, __bufsize); ! new (&buf_cin) filebuf(stdin, ios_base::in, 1); ! new (&buf_cerr) filebuf(stderr, ios_base::out, __bufsize); new (&cout) ostream(&buf_cout); new (&cin) istream(&buf_cin); new (&cerr) ostream(&buf_cerr); --- 144,166 ---- void ios_base::Init::_S_ios_create(bool __sync) { ! int __out_bufsize = __sync ? 0 : static_cast(BUFSIZ); ! int __in_bufsize = __sync ? 1 : static_cast(BUFSIZ); + #if _GLIBCPP_AVOID_FSEEK + // Platforms that prefer to avoid fseek() calls on streams only + // get their desire when the C++-layer input buffer size is 1. + // This hack hurts performance but keeps correctness across + // all types of streams that might be attached to (e.g.) cin. + __in_bufsize = 1; + #endif + // NB: The file globals.cc creates the four standard files // with NULL buffers. At this point, we swap out the dummy NULL // [io]stream objects and buffers with the real deal. ! new (&buf_cout) filebuf(stdout, ios_base::out, __out_bufsize); ! new (&buf_cin) filebuf(stdin, ios_base::in, __in_bufsize); ! new (&buf_cerr) filebuf(stderr, ios_base::out, __out_bufsize); new (&cout) ostream(&buf_cout); new (&cin) istream(&buf_cin); new (&cerr) ostream(&buf_cerr); *************** *** 160,168 **** cerr.flags(ios_base::unitbuf); #ifdef _GLIBCPP_USE_WCHAR_T ! new (&buf_wcout) wfilebuf(stdout, ios_base::out, __bufsize); ! new (&buf_wcin) wfilebuf(stdin, ios_base::in, 1); ! new (&buf_wcerr) wfilebuf(stderr, ios_base::out, __bufsize); new (&wcout) wostream(&buf_wcout); new (&wcin) wistream(&buf_wcin); new (&wcerr) wostream(&buf_wcerr); --- 169,177 ---- cerr.flags(ios_base::unitbuf); #ifdef _GLIBCPP_USE_WCHAR_T ! new (&buf_wcout) wfilebuf(stdout, ios_base::out, __out_bufsize); ! new (&buf_wcin) wfilebuf(stdin, ios_base::in, __in_bufsize); ! new (&buf_wcerr) wfilebuf(stderr, ios_base::out, __out_bufsize); new (&wcout) wostream(&buf_wcout); new (&wcin) wistream(&buf_wcin); new (&wcerr) wostream(&buf_wcerr); From gcc-patches-return-37926-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:08:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17219 invoked by alias); 2 Jul 2001 21:08:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17185 invoked from network); 2 Jul 2001 21:08:14 -0000 Received: from unknown (HELO atrey.karlin.mff.cuni.cz) (195.113.31.123) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:08:14 -0000 Received: (from hubicka@localhost) by atrey.karlin.mff.cuni.cz (8.9.3/8.9.3/Debian 8.9.3-21) id XAA31372; Mon, 2 Jul 2001 23:08:15 +0200 Date: Mon, 2 Jul 2001 23:08:15 +0200 From: Jan Hubicka To: gcc-patches@gcc.gnu.org, rth@cygnus.com, patches@x86-64.org Subject: edge redirection function Message-ID: <20010702230815.C30762@atrey.karlin.mff.cuni.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.15i Hi, just one infrastructure bit - function that redirects edge even at expense of creating new insns/basic blocks. Mon Jul 2 22:57:48 CEST 2001 Jan Hubicka * flow.c (redirect_edge_and_branch_force): New. *** flow.c.new Mon Jul 2 13:20:22 2001 --- flow.c Mon Jul 2 22:56:30 2001 *************** static int flow_loops_level_compute PARA *** 477,482 **** --- 477,483 ---- static void allocate_bb_life_data PARAMS ((void)); static void find_sub_basic_blocks PARAMS ((basic_block)); static bool redirect_edge_and_branch PARAMS ((edge, basic_block)); + static bool redirect_edge_and_branch_force PARAMS ((edge, basic_block)); static rtx block_label PARAMS ((basic_block)); /* Find basic blocks of the current function. *************** redirect_edge_and_branch (e, target) *** 1843,1848 **** --- 1846,1960 ---- return 1; } + /* Redirect edge even at the expense of creating new jump insn or + basic block. Return new basic block if created, NULL otherwise. + Abort if converison is impossible. */ + basic_block + redirect_edge_and_branch_force (e, target) + edge e; + basic_block target; + { + basic_block new_bb; + edge new_edge; + rtx label; + rtx bb_note; + int i, j; + + if (redirect_edge_and_branch (e, target)) + return NULL; + if (e->dest == target) + return NULL; + if (e->flags & EDGE_ABNORMAL) + abort (); + if (!(e->flags & EDGE_FALLTHRU)) + abort (); + + e->flags &= ~EDGE_FALLTHRU; + label = block_label (target); + /* Case of the fallthru block. */ + if (!e->src->succ->succ_next) + { + verify_flow_info (); + e->src->end = emit_jump_insn_after (gen_jump (label), e->src->end); + JUMP_LABEL (e->src->end) = label; + LABEL_NUSES (label)++; + emit_barrier_after (e->src->end); + if (rtl_dump_file) + fprintf (rtl_dump_file, + "Emitting jump insn %i to redirect edge %i->%i to %i\n", + INSN_UID (e->src->end), e->src->index, e->dest->index, + target->index); + redirect_edge_succ (e, target); + verify_flow_info (); + return NULL; + } + /* Redirecting fallthru edge of the conditional needs extra work. */ + + if (rtl_dump_file) + fprintf (rtl_dump_file, + "Emitting jump insn %i in new BB to redirect edge %i->%i to %i\n", + INSN_UID (e->src->end), e->src->index, e->dest->index, + target->index); + + /* Create the new structures. */ + new_bb = (basic_block) obstack_alloc (&flow_obstack, sizeof (*new_bb)); + new_edge = (edge) xcalloc (1, sizeof (*new_edge)); + n_edges++; + + memset (new_bb, 0, sizeof (*new_bb)); + + new_bb->end = new_bb->head = e->src->end; + new_bb->succ = NULL; + new_bb->pred = new_edge; + new_bb->count = e->count; + new_bb->frequency = e->probability * e->src->frequency / REG_BR_PROB_BASE; + new_bb->loop_depth = e->dest->loop_depth; + + new_edge->flags = EDGE_FALLTHRU; + new_edge->probability = e->probability; + new_edge->count = e->count; + + /* Wire edge in. */ + new_edge->src = e->src; + new_edge->dest = new_bb; + new_edge->succ_next = e->src->succ; + e->src->succ = new_edge; + new_edge->pred_next = NULL; + + /* Redirect old edge. */ + redirect_edge_succ (e, target); + redirect_edge_pred (e, new_bb); + e->probability = REG_BR_PROB_BASE; + + /* Place the new block just after the block being split. */ + VARRAY_GROW (basic_block_info, ++n_basic_blocks); + + /* Some parts of the compiler expect blocks to be number in + sequential order so insert the new block immediately after the + block being split.. */ + j = new_edge->src->index; + for (i = n_basic_blocks - 1; i > j + 1; --i) + { + basic_block tmp = BASIC_BLOCK (i - 1); + BASIC_BLOCK (i) = tmp; + tmp->index = i; + } + + BASIC_BLOCK (i) = new_bb; + new_bb->index = i; + + /* Create the basic block note. */ + bb_note = emit_note_after (NOTE_INSN_BASIC_BLOCK, new_bb->head); + NOTE_BASIC_BLOCK (bb_note) = new_bb; + new_bb->head = bb_note; + + new_bb->end = emit_jump_insn_after (gen_jump (label), new_bb->head); + JUMP_LABEL (new_bb->end) = label; + LABEL_NUSES (label)++; + emit_barrier_after (new_bb->end); + return new_bb; + } + /* Split a (typically critical) edge. Return the new block. Abort on abnormal edges. From gcc-patches-return-37927-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:13:27 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19632 invoked by alias); 2 Jul 2001 21:13:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19601 invoked from network); 2 Jul 2001 21:13:26 -0000 Received: from unknown (HELO monkey.daikokuya.demon.co.uk) (158.152.184.26) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:13:26 -0000 Received: from neil by monkey.daikokuya.demon.co.uk with local (Exim 3.22 #1 (Debian)) id 15HB0L-0004EA-00; Mon, 02 Jul 2001 22:13:13 +0100 Date: Mon, 2 Jul 2001 22:13:13 +0100 From: Neil Booth To: Graham Stott Cc: "Billinghurst, David (CRTS)" , gcc-patches@gcc.gnu.org Subject: Fix target struct for cygwin targets Message-ID: <20010702221313.A16193@daikokuya.demon.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.18i Graham Stott wrote:- > Joseph I agree Neils patch has broken the cygwin toolchain because the > cygwin specific validation routines arn't being used on cygwin. Graham / David, Could you try this patch? It's bootstrapped x86 Linux for me, and compiled stage1 as a cygwin target. If you give me the thumbs-up, I'll commit it. Neil. [alpha/vms will be fixed separately...] config: * i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE, VALID_MACHINE_TYPE_ATTRIBUTE): Remove. * i386/i386-protos.h (i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p): Add. * i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets. * i386/winnt.c (i386_valid_decl_attribute_p): Return directly. Index: cygwin.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/i386/cygwin.h,v retrieving revision 1.46 diff -u -p -r1.46 cygwin.h --- cygwin.h 2001/06/26 18:08:47 1.46 +++ cygwin.h 2001/07/02 21:05:41 @@ -182,26 +182,8 @@ Boston, MA 02111-1307, USA. */ /* Enable parsing of #pragma pack(push,) and #pragma pack(pop). */ #define HANDLE_PRAGMA_PACK_PUSH_POP 1 -/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS - is a valid machine specific attribute for DECL. - The attributes in ATTRIBUTES have previously been assigned to DECL. */ - union tree_node; #define TREE union tree_node * - -#undef VALID_MACHINE_DECL_ATTRIBUTE -#define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \ - i386_pe_valid_decl_attribute_p (DECL, ATTRIBUTES, IDENTIFIER, ARGS) -extern int i386_pe_valid_decl_attribute_p PARAMS ((TREE, TREE, TREE, TREE)); - -/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS - is a valid machine specific attribute for TYPE. - The attributes in ATTRIBUTES have previously been assigned to TYPE. */ - -#undef VALID_MACHINE_TYPE_ATTRIBUTE -#define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, IDENTIFIER, ARGS) \ - i386_pe_valid_type_attribute_p (TYPE, ATTRIBUTES, IDENTIFIER, ARGS) -extern int i386_pe_valid_type_attribute_p PARAMS ((TREE, TREE, TREE, TREE)); /* Used to implement dllexport overriding dllimport semantics. It's also used to handle vtables - the first pass won't do anything because Index: i386-protos.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/i386/i386-protos.h,v retrieving revision 1.53 diff -u -p -r1.53 i386-protos.h --- i386-protos.h 2001/06/29 17:21:13 1.53 +++ i386-protos.h 2001/07/02 21:05:47 @@ -175,4 +175,6 @@ extern int ix86_data_alignment PARAMS (( extern int ix86_local_alignment PARAMS ((tree, int)); extern int ix86_constant_alignment PARAMS ((tree, int)); extern int ix86_valid_type_attribute_p PARAMS ((tree, tree, tree, tree)); +extern int i386_pe_valid_decl_attribute_p PARAMS ((tree, tree, tree, tree)); +extern int i386_pe_valid_type_attribute_p PARAMS ((tree, tree, tree, tree)); #endif Index: i386.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.c,v retrieving revision 1.274 diff -u -p -r1.274 i386.c --- i386.c 2001/07/02 19:47:41 1.274 +++ i386.c 2001/07/02 21:06:10 @@ -610,13 +610,16 @@ static void ix86_compute_frame_layout PA static int ix86_comp_type_attributes PARAMS ((tree, tree)); /* Initialize the GCC target structure. */ +#undef TARGET_VALID_TYPE_ATTRIBUTE #ifdef TARGET_DLLIMPORT_DECL_ATTRIBUTES -#undef TARGET_MERGE_DECL_ATTRIBUTES -#define TARGET_MERGE_DECL_ATTRIBUTES merge_dllimport_decl_attributes +# define TARGET_VALID_TYPE_ATTRIBUTE i386_pe_valid_type_attribute_p +# undef TARGET_VALID_DECL_ATTRIBUTE +# define TARGET_VALID_DECL_ATTRIBUTE i386_pe_valid_decl_attribute_p +# undef TARGET_MERGE_DECL_ATTRIBUTES +# define TARGET_MERGE_DECL_ATTRIBUTES merge_dllimport_decl_attributes +#else +# define TARGET_VALID_TYPE_ATTRIBUTE ix86_valid_type_attribute_p #endif - -#undef TARGET_VALID_TYPE_ATTRIBUTE -#define TARGET_VALID_TYPE_ATTRIBUTE ix86_valid_type_attribute_p #undef TARGET_COMP_TYPE_ATTRIBUTES #define TARGET_COMP_TYPE_ATTRIBUTES ix86_comp_type_attributes Index: winnt.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/i386/winnt.c,v retrieving revision 1.21 diff -u -p -r1.21 winnt.c --- winnt.c 2001/06/26 18:08:49 1.21 +++ winnt.c 2001/07/02 21:06:18 @@ -69,7 +69,7 @@ i386_pe_valid_decl_attribute_p (decl, at return TREE_CODE (decl) == VAR_DECL; } - return ix86_valid_decl_attribute_p (decl, attributes, attr, args); + return 0; } /* Return nonzero if ATTR is a valid attribute for TYPE. @@ -94,7 +94,6 @@ i386_pe_valid_type_attribute_p (type, at return ix86_valid_type_attribute_p (type, attributes, attr, args); } - /* Return the type that we should use to determine if DECL is imported or exported. */ From gcc-patches-return-37928-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:17:55 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23097 invoked by alias); 2 Jul 2001 21:17:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23052 invoked from network); 2 Jul 2001 21:17:54 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:17:54 -0000 Received: from greed.delorie.com (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id OAA25135; Mon, 2 Jul 2001 14:17:32 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.9.3/8.9.3) id RAA18212; Mon, 2 Jul 2001 17:17:30 -0400 Date: Mon, 2 Jul 2001 17:17:30 -0400 Message-Id: <200107022117.RAA18212@greed.delorie.com> From: DJ Delorie To: mark@codesourcery.com CC: zackw@Stanford.EDU, pfeifer@dbai.tuwien.ac.at, neil@daikokuya.demon.co.uk, gcc-patches@gcc.gnu.org In-reply-to: <157060000.994105109@warlock.codesourcery.com> (message from Mark Mitchell on Mon, 02 Jul 2001 13:18:30 -0700) Subject: Re: More cpp.texi updates References: <157060000.994105109@warlock.codesourcery.com> > The important thing is that on such systems we do not try to build > the manual pages. Hopefully, Zack's change didn't change that; I > don't think it did. So, if you build on such a system, from CVS, > you will get no man pages. That's not really a very big deal. IMHO it is a big enough deal that the tiny amount of effort required to keep the *.1 files in CVS is justified. > The important thing is that even on such systems you will get the > man pages in a release. And, you will, because the release script > will build them before packaging them up as a tarfile. It means you cannot build a binary release on a system that doesn't support building the man pages. This breaks DJGPP's release system, since GCC releases are built with DJGPP (at least, when I did them they were). To us (djgpp'ers) at least, this is no different than removing configure from CVS and expecting the user to have autoconf. From gcc-patches-return-37929-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:18:14 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23434 invoked by alias); 2 Jul 2001 21:18:14 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23396 invoked from network); 2 Jul 2001 21:18:13 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:18:13 -0000 Received: from bolero.cs.tu-berlin.de (doko@bolero.cs.tu-berlin.de [130.149.19.1]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id XAA14817; Mon, 2 Jul 2001 23:13:09 +0200 (MET DST) Received: (from doko@localhost) by bolero.cs.tu-berlin.de (8.10.2+Sun/8.9.3) id f62LD8110212; Mon, 2 Jul 2001 23:13:08 +0200 (MEST) From: Matthias Klose MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15168.58340.525902.202263@gargle.gargle.HOWL> Date: Mon, 2 Jul 2001 23:13:08 +0200 To: gcc-patches@gcc.gnu.org, java@gcc.gnu.org CC: "Joseph S. Myers" , Stephane Carrez Subject: [3.0] RFC: generate java man pages from texi sources X-Mailer: VM 6.89 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid This patch adds support for generation and installation of man pages for the java tools (gcj, gcjh, jv-scan, jcf-convert, gij). - texi2pod.pl is merged from binutils and extended to support the '-' in program names. - unsure about how to handle the installation of gij.1. It's documented in gcc/java/gcj.1, but built in libjava. Unfortunately not for all targets that gcj is built for. - gcc/configure and generated man pages are not included. - gcj.texi: Added command options, that are output with --help. bootstrap currently running. verified that the generated gcc man pages are the same as with the old texi2pod.pl. 2001-07-02 Matthias Klose * texi2pod.pl: Merge changes from binutil's texi2pod.pl. allows generation of more than one man page from one source. Add '-' to set of valid chars for an identifier. diff -b -r -u --exclude=Makefile --exclude=configure gcc-3.0/contrib/texi2pod.pl gcc-3.0.x/contrib/texi2pod.pl --- gcc-3.0/contrib/texi2pod.pl Fri May 4 00:01:39 2001 +++ gcc-3.0.x/contrib/texi2pod.pl Mon Jul 2 21:50:03 2001 @@ -41,11 +41,20 @@ } else { $flag = shift; } + $value=$flag; + $value =~ s,^[a-zA-Z0-9_-]+,,; + $value =~ s,.*=,,; + $flag =~ s,=.*$,,; die "no flag specified for -D\n" unless $flag ne ""; + # gcc's die "flags may only contain letters, digits, hyphens, and underscores\n" unless $flag =~ /^[a-zA-Z0-9_-]+$/; - $defs{$flag} = ""; + + #print STDERR "FL = $flag, V = $value\n"; + #$defs{$flag} = ""; + $defs{$flag} = $value; + } elsif (/^-/) { usage(); } else { @@ -77,11 +86,25 @@ # Look for filename and title markers. /^\@setfilename\s+([^.]+)/ and $fn = $1, next; - /^\@settitle\s+([^.]+)/ and $tl = $1, next; + /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next; + + # Identify a man title but keep only the one we are interested in. + /^\@c man title ([A-Za-z0-9-]+) (.+)/ and do { + if (exists $defs{$1}) { + $fn = $1; + $tl = postprocess($2); + } + next; + }; # Look for blocks surrounded by @c man begin SECTION ... @c man end. # This really oughta be @ifman ... @end ifman and the like, but such # would require rev'ing all other Texinfo translators. + /^\@c man begin ([A-Z]+) ([A-Za-z0-9-]+)/ and do { + $output = 1 if exists $defs{$2}; + $sect = $1; + next; + }; /^\@c man begin ([A-Z]+)/ and $sect = $1, $output = 1, next; /^\@c man end/ and do { $sects{$sect} = "" unless exists $sects{$sect}; @@ -266,6 +289,12 @@ local $_ = $_[0]; # @value{foo} is replaced by whatever 'foo' is defined as. + if (/\@value\{([a-zA-Z0-9_-]+)\}/) { + if (! exists $defs{$1}) { + print STDERR "Option $1 not define\n"; + } + + } s/\@value\{([a-zA-Z0-9_-]+)\}/$defs{$1}/g; # Formatting commands. @@ -348,4 +377,3 @@ $sects{FOOTNOTES} .= $_[0]; $sects{FOOTNOTES} .= "\n\n"; } - 2001-07-02 Matthias Klose * configure.in: Add $(GENERATED_JAVA_MANPAGES) to GENERATED_MANPAGES. diff -b -r -u --exclude=Makefile --exclude=configure gcc-3.0/gcc/configure.in gcc-3.0.x/gcc/configure.in --- gcc-3.0/gcc/configure.in Wed Jun 13 23:36:35 2001 +++ gcc-3.0.x/gcc/configure.in Mon Jul 2 21:14:38 2001 @@ -479,7 +479,7 @@ AC_MSG_CHECKING([for recent Pod::Man]) if perl -e 'use 1.10 Pod::Man' >/dev/null 2>&1; then AC_MSG_RESULT(yes) - GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES) + GENERATED_MANPAGES='generated-manpages $(GENERATED_JAVA_MANPAGES)' AC_SUBST(GENERATED_MANPAGES) else AC_MSG_RESULT(no) GENERATED_MANPAGES= 2001-07-02 Matthias Klose * gcj.texi: Markup for man page generation. Document missing options printed by --help. * Make-lang.in (generated-java-manpages, $(srcdir)/java/*.1): New targets. (java.install-man, java.uninstall, java-maintainer-clean) Updated. diff -b -r -u --exclude=Makefile --exclude=configure gcc-3.0/gcc/java/Make-lang.in gcc-3.0.x/gcc/java/Make-lang.in --- gcc-3.0/gcc/java/Make-lang.in Fri Jun 8 23:43:45 2001 +++ gcc-3.0.x/gcc/java/Make-lang.in Mon Jul 2 22:40:55 2001 @@ -177,11 +177,15 @@ fi ; \ done -java.install-man: - java.uninstall: -rm -rf $(bindir)/$(JAVA_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(JAVA_CROSS_NAME)$(exeext) + -rm -rf $(man1dir)/$(JAVA_INSTALL_NAME)$(manext) + -rm -rf $(man1dir)/$(JAVA_CROSS_NAME)$(manext) + -rm -rf $(man1dir)/gcjh$(manext) + -rm -rf $(man1dir)/jv-scan$(manext) + -rm -rf $(man1dir)/jcf-dump$(manext) + -rm -rf $(man1dir)/gij$(manext) java.install-info: if [ -f jc1$(exeext) ] ; then \ @@ -215,6 +219,7 @@ java.extraclean: java.maintainer-clean: -rm -f java/parse.c java/parse-scan.c java/parse.output java/y.tab.c + -rm -f $(srcdir)/java/gcj.1 $(srcdir)/java/gcjh.1 $(srcdir)/java/jv-scan.1 $(srcdir)/java/jcf-dump.1 $(srcdir)/java/gij.1 # # Stage hooks: # The main makefile has already created stage?/java. @@ -303,3 +308,75 @@ java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/fdl.texi s=`cd $(srcdir); pwd`; export s; \ cd java && $(TEXI2DVI) -I $$s/doc $$s/java/gcj.texi + +GENERATED_JAVA_MANPAGES = generated-java-manpages + +generated-java-manpages: $(srcdir)/java/gcj.1 $(srcdir)/java/gcjh.1 \ + $(srcdir)/java/jv-scan.1 $(srcdir)/java/jcf-dump.1 \ + $(srcdir)/java/gij.1 + +$(srcdir)/java/gcj.1: $(srcdir)/java/gcj.texi + $(STAMP) $(srcdir)/java/gcj.1 + -$(TEXI2POD) -D gcj < $(srcdir)/java/gcj.texi > gcj.pod + -($(POD2MAN) gcj.pod > $(srcdir)/java/gcj.1.T$$$$ && \ + mv -f $(srcdir)/java/gcj.1.T$$$$ $(srcdir)/java/gcj.1) || \ + (rm -f $(srcdir)/java/gcj.1.T$$$$ && exit 1) + -rm -f gcj.pod + +$(srcdir)/java/gcjh.1: $(srcdir)/java/gcj.texi + $(STAMP) $(srcdir)/java/gcjh.1 + -$(TEXI2POD) -D gcjh < $(srcdir)/java/gcj.texi > gcjh.pod + -($(POD2MAN) gcjh.pod > $(srcdir)/java/gcjh.1.T$$$$ && \ + mv -f $(srcdir)/java/gcjh.1.T$$$$ $(srcdir)/java/gcjh.1) || \ + (rm -f $(srcdir)/java/gcjh.1.T$$$$ && exit 1) + -rm -f gcjh.pod + +$(srcdir)/java/jv-scan.1: $(srcdir)/java/gcj.texi + $(STAMP) $(srcdir)/java/jv-scan.1 + -$(TEXI2POD) -D jv-scan < $(srcdir)/java/gcj.texi > jv-scan.pod + -($(POD2MAN) jv-scan.pod > $(srcdir)/java/jv-scan.1.T$$$$ && \ + mv -f $(srcdir)/java/jv-scan.1.T$$$$ $(srcdir)/java/jv-scan.1) || \ + (rm -f $(srcdir)/java/jv-scan.1.T$$$$ && exit 1) + -rm -f jv-scan.pod + +$(srcdir)/java/jcf-dump.1: $(srcdir)/java/gcj.texi + $(STAMP) $(srcdir)/java/jcf-dump.1 + -$(TEXI2POD) -D jcf-dump < $(srcdir)/java/gcj.texi > jcf-dump.pod + -($(POD2MAN) jcf-dump.pod > $(srcdir)/java/jcf-dump.1.T$$$$ && \ + mv -f $(srcdir)/java/jcf-dump.1.T$$$$ $(srcdir)/java/jcf-dump.1) || \ + (rm -f $(srcdir)/java/jcf-dump.1.T$$$$ && exit 1) + -rm -f jcf-dump.pod + +$(srcdir)/java/gij.1: $(srcdir)/java/gcj.texi + $(STAMP) $(srcdir)/java/gij.1 + -$(TEXI2POD) -D gij < $(srcdir)/java/gcj.texi > gij.pod + -($(POD2MAN) gij.pod > $(srcdir)/java/gij.1.T$$$$ && \ + mv -f $(srcdir)/java/gij.1.T$$$$ $(srcdir)/java/gij.1) || \ + (rm -f $(srcdir)/java/gij.1.T$$$$ && exit 1) + -rm -f gij.pod + +# Install the man pages. +java.install-man: installdirs $(GENERATED_JAVA_MANPAGES) + -if [ -f $(GCJ)$(exeext) ]; then \ + if [ -f $(GCJ)-cross$(exeext) ]; then \ + rm -f $(man1dir)/$(JAVA_CROSS_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(man1dir)/$(JAVA_CROSS_NAME)$(manext); \ + chmod a-x $(man1dir)/$(JAVA_CROSS_NAME)$(manext); \ + else \ + rm -f $(man1dir)/$(JAVA_INSTALL_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(man1dir)/$(JAVA_INSTALL_NAME)$(manext); \ + chmod a-x $(man1dir)/$(JAVA_INSTALL_NAME)$(manext); \ + fi ; \ + fi + -rm -f $(man1dir)/gcjh$(manext) + -$(INSTALL_DATA) $(srcdir)/java/gcjh.1 $(man1dir)/gcjh$(manext) + -chmod a-x $(man1dir)/gcjh$(manext) + -rm -f $(man1dir)/jv-scan$(manext) + -$(INSTALL_DATA) $(srcdir)/java/jv-scan.1 $(man1dir)/jv-scan$(manext) + -chmod a-x $(man1dir)/jv-scan$(manext) + -rm -f $(man1dir)/jcf-dump$(manext) + -$(INSTALL_DATA) $(srcdir)/java/jcf-dump.1 $(man1dir)/jcf-dump$(manext) + -chmod a-x $(man1dir)/jcf-dump$(manext) + -rm -f $(man1dir)/gij$(manext) + -$(INSTALL_DATA) $(srcdir)/java/gij.1 $(man1dir)/gij$(manext) + -chmod a-x $(man1dir)/gij$(manext) diff -b -r -u --exclude=Makefile --exclude=configure gcc-3.0/gcc/java/gcj.texi gcc-3.0.x/gcc/java/gcj.texi --- gcc-3.0/gcc/java/gcj.texi Fri Jun 8 23:43:45 2001 +++ gcc-3.0.x/gcc/java/gcj.texi Mon Jul 2 22:56:13 2001 @@ -7,6 +7,10 @@ @c This is necessary due to Sun's restrictions on the use of @c the word ``Java'. +@macro gcctabopt{body} +@code{\body\} +@end macro + @c When this manual is copyrighted. @set copyrights-gcj 2001 @@ -42,6 +46,21 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. +Copyright (C) @value{copyrights-gcj} Free Software Foundation, Inc. + +@ignore +@c man begin COPYRIGHT +Copyright (C) 2001 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being ``GNU General Public License'', the Front-Cover +texts being (a) (see below), and with the Back-Cover Texts being (b) +(see below). A copy of the license is included in the section entitled +``GNU Free Documentation License''. +@c man end +@end ignore (a) The FSF's Front-Cover Text is: @@ -511,11 +530,32 @@ @node Invoking gcj @chapter Invoking gcj +@c man title gcj Ahead-of-time compiler for the Java language + +@ignore +@c man begin SYNOPSIS gcj +gcj [@option{-I}@var{dir}@dots{}] [@option{-d}@var{dir}@dots{}] + [@option{--classpath}=@var{path}] [@option{--CLASSPATH}=@var{path}] + [@option{-f}@var{option}@dots{}] [@option{--encoding}@var{name}] + [@option{--main=}@var{classname}] [@option{-C}] + [@option{-W}@var{warn}@dots{}] [@option{-D}@var{name}[=@var{value}]@dots{}] + @var{sourcefile}@dots{} +@c man end +@c man begin SEEALSO gcj +gcc(1), gcjh(1), gij(1), jv-scan(1), jcf-dump(1), +and the Info entries for @file{gcj} and @file{gcc}. +@c man end +@end ignore + +@c man begin DESCRIPTION gcj + As @code{gcj} is just another front end to @code{gcc}, it supports many of the same options as gcc. @xref{Option Summary, , Option Summary, gcc, Using the GNU Compiler Collection}. This manual only documents the options specific to @code{gcj}. +@c man end + @menu * Input and output files:: * Input Options:: How gcj finds files @@ -525,6 +565,8 @@ * Configure-time Options:: Options you won't use @end menu +@c man begin OPTIONS gcj + @node Input and output files @section Input and output files @@ -532,7 +574,7 @@ consists of a number of options and file names. The following kinds of input file names are supported: -@table @code +@table @gcctabopt @item @var{file}.java Java source files. @item @var{file}.class @@ -583,7 +625,7 @@ actual directory on the filesystem, or to a @file{.zip} or @file{.jar} file, which @code{gcj} will search as if it is a directory. -@table @code +@table @gcctabopt @item -I@var{dir} All directories specified by @code{-I} are kept in order and prepended to the class path constructed from all the other options. Unless @@ -636,7 +678,7 @@ @code{-fforce-classes-archive-check} can be used to overide this behavior in this particular case.) -@table @code +@table @gcctabopt @item -fforce-classes-archive-check This forces the compiler to always check for the special zero length attribute @code{gnu.gcj.gcj-compiled} in @code{java.lang.Object} and @@ -678,7 +720,7 @@ document the form of the warning which will have an effect -- the default being the opposite of what is listed. -@table @code +@table @gcctabopt @item -Wredundant-modifiers With this flag, @code{gcj} will warn about redundant modifiers. For instance, it will warn if an interface method is declared @code{public}. @@ -707,7 +749,7 @@ In addition to the many @code{gcc} options controlling code generation, @code{gcj} has several options specific to itself. -@table @code +@table @gcctabopt @item --main=@var{CLASSNAME} This option is used when linking to specify the name of the class whose @code{main} method should be invoked when the resulting executable is @@ -760,7 +802,7 @@ options are listed here for completeness; if you are using @code{libgcj} then you won't want to touch these options. -@table @code +@table @gcctabopt @item -fuse-boehm-gc This enables the use of the Boehm GC bitmap marking code. In particular this causes @code{gcj} to put an object marking descriptor into each @@ -778,6 +820,7 @@ dividing by zero. @end table +@c man end @node Compatibility @chapter Compatibility with the Java Platform @@ -815,12 +858,37 @@ @node Invoking gcjh @chapter Invoking gcjh +@c man title gcjh generate header files from Java class files + +@c man begin DESCRIPTION gcjh + The @code{gcjh} program is used to generate header files from class files. It can generate both CNI and JNI header files, as well as stub implementation files which can be used as a basis for implementing the required native methods. -@table @code +@c man end + +@ignore +@c man begin SYNOPSIS gcjh +gcjh [@option{-stubs}] [@option{-jni}] + [@option{-add}@var{text}] [@option{-append}@var{text}] [@option{-friend}@var{text}] [@option{-preprend}@var{text}] + [@option{--classpath}=@var{path}] [@option{--CLASSPATH}=@var{path}] + [@option{-I}@var{dir}@dots{}] [@option{-d}@var{dir}@dots{}] + [@option{-o}@var{file}] [@option{-td}@var{dir}] + [@option{-M}] [@option{-MM}] [@option{-MD}] [@option{-MMD}] + [@option{--version}] [@option{--help}] [@option{-v}] [@option{--verbose}] + @var{classname}@dots{} +@c man end +@c man begin SEEALSO gcjh +gcc(1), gcj(1), gij(1), jv-scan(1), jcf-dump(1), +and the Info entries for @file{gcj} and @file{gcc}. +@c man end +@end ignore + +@c man begin OPTIONS gcjh + +@table @gcctabopt @item -stubs This causes @code{gcjh} to generate stub files instead of header files. By default the stub file will be named after the class, with a suffix of @@ -860,24 +928,61 @@ @item -td @var{directory} Sets the name of the directory to use for temporary files. +@item -M +Print all dependencies to stdout; suppress ordinary output. + +@item -MM +Print non-system dependencies to stdout; suppress ordinary output. + +@item -MD +Print all dependencies to stdout. + +@item -MMD +Print non-system dependencies to stdout. + @item --help Print help about @code{gcjh} and exit. No further processing is done. @item --version Print version information for @code{gcjh} and exit. No further processing is done. + +@item -v, --verbose +Print extra information while running. @end table All remaining options are considered to be names of classes. +@c man end @node Invoking jv-scan @chapter Invoking jv-scan +@c man title jv-scan print information about Java source file + +@c man begin DESCRIPTION jv-scan + The @code{jv-scan} program can be used to print information about a Java source file (@file{.java} file). -@table @code +@c man end + +@ignore +@c man begin SYNOPSIS jv-scan +jv-scan [@option{--complexity}] [@option{--encoding}@var{name}] + [@option{--print-main}] [@option{--list-class}] [@option{--list-filename}] + [@option{--version}] [@option{--help}] + [@option{-o}@var{file}] @var{inputfile}@dots{} +@c man end +@c man begin SEEALSO jv-scan +gcc(1), gcj(1), gcjh(1), gij(1), jcf-dump(1), +and the Info entries for @file{gcj} and @file{gcc}. +@c man end +@end ignore + +@c man begin OPTIONS jv-scan + +@table @gcctabopt @item --complexity This prints a complexity measure, related to cyclomatic complexity, for each input file. @@ -898,17 +1003,46 @@ @item -o @var{file} Print output to the named file. + +@item --help +Print help, then exit. + +@item --version +Print version number, then exit. @end table +@c man end @node Invoking jcf-dump @chapter Invoking jcf-dump +@c man title jcf-dump print information about Java class files + +@ignore +@c man begin SYNOPSIS jcf-dump +jcf-dump [@option{-c}] [@option{--javap}] + [@option{--classpath}=@var{path}] [@option{--CLASSPATH}=@var{path}] + [@option{-I}@var{dir}@dots{}] [@option{-o}@var{file}] + [@option{--version}] [@option{--help}] [@option{-v}] [@option{--verbose}] + @var{classname}@dots{} +@c man end +@c man begin SEEALSO jcf-dump +gcc(1), gcj(1), gcjh(1), gij(1), jcf-dump(1), +and the Info entries for @file{gcj} and @file{gcc}. +@c man end +@end ignore + +@c man begin DESCRIPTION jcf-dump + This is a class file examiner, similar to @code{javap}. It will print information about a number of classes, which are specifed by class name or file name. -@table @code +@c man end + +@c man begin OPTIONS jcf-dump + +@table @gcctabopt @item -c Disassemble method bodies. By default method bodies are not printed. @@ -921,12 +1055,42 @@ @itemx -I@var{directory} @itemx -o @var{file} These options as the same as the corresponding @code{gcj} options. + +@item --help +Print help, then exit. + +@item --version +Print version number, then exit. + +@item -v, --verbose +Print extra information while running. @end table +@c man end @node Invoking gij @chapter Invoking gij +@c man title gij GNU interpreter for Java bytecode + +@ignore +@c man begin SYNOPSIS gij +gij [@option{OPTION}] @dots{} @var{JARFILE} [@var{ARGS}@dots{}] + +gij [@option{-jar}] [@option{OPTION}] @dots{} @var{CLASS} [@var{ARGS}@dots{}] + + [@option{-D}@var{name}[=@var{value}]@dots{}] + [@option{-ms=}@var{number}] [@option{-mx=}@var{number}] + [@option{--version}] [@option{--help}] +@c man end +@c man begin SEEALSO gij +gcc(1), gcj(1), gcjh(1), jv-scan(1), jcf-dump(1), +and the Info entries for @file{gcj} and @file{gcc}. +@c man end +@end ignore + +@c man begin DESCRIPTION gij + @code{gij} is a Java bytecode interpreter included with @code{libgcj}. @code{gij} is not available on every platform; porting it requires a small amount of assembly programming which has not been done for all the @@ -952,7 +1116,11 @@ objects, it is possible to give @code{gij} the name of a class which has been compiled and put into a shared library on the class path. -@table @code +@c man end + +@c man begin OPTIONS gij + +@table @gcctabopt @item -D@var{name}[=@var{value}] This defines a system property named @var{name} with value @var{value}. If @var{value} is not specified then it defaults to the empty string. @@ -969,8 +1137,15 @@ @item -jar This indicates that the name passed to @code{gij} should be interpreted as the name of a jar file, not a class. + +@item --help +Print help, then exit. + +@item --version +Print version number, then exit. @end table +@c man end @node Resources @chapter Resources From gcc-patches-return-37930-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:24:21 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27840 invoked by alias); 2 Jul 2001 21:24:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27754 invoked from network); 2 Jul 2001 21:24:20 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:24:20 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id OAA25821; Mon, 2 Jul 2001 14:24:07 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f62LO2B24411; Mon, 2 Jul 2001 14:24:02 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Mon, 2 Jul 2001 14:24:02 -0700 From: Richard Henderson To: Jan Hubicka Cc: gcc-patches@gcc.gnu.org, patches@x86-64.org Subject: Re: edge redirection function Message-ID: <20010702142402.C24228@redhat.com> Mail-Followup-To: Richard Henderson , Jan Hubicka , gcc-patches@gcc.gnu.org, patches@x86-64.org References: <20010702230815.C30762@atrey.karlin.mff.cuni.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010702230815.C30762@atrey.karlin.mff.cuni.cz>; from jh@suse.cz on Mon, Jul 02, 2001 at 11:08:15PM +0200 On Mon, Jul 02, 2001 at 11:08:15PM +0200, Jan Hubicka wrote: > * flow.c (redirect_edge_and_branch_force): New. Ok, but, > + static bool redirect_edge_and_branch_force PARAMS ((edge, basic_block)); [...] > + basic_block > + redirect_edge_and_branch_force (e, target) static-ness needs to match for K&R. > + verify_flow_info (); Kill debugging bits before installing. r~ From gcc-patches-return-37931-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:35:52 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1730 invoked by alias); 2 Jul 2001 21:35:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1639 invoked from network); 2 Jul 2001 21:35:49 -0000 Received: from unknown (HELO ftpbox.mot.com) (129.188.136.101) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:35:49 -0000 Received: [from pobox.mot.com (pobox.mot.com [129.188.137.100]) by ftpbox.mot.com (ftpbox 2.1) with ESMTP id OAA11234; Mon, 2 Jul 2001 14:35:47 -0700 (MST)] Received: [from latour.rsch.comm.mot.com (latour.rsch.comm.mot.com [145.1.80.116]) by pobox.mot.com (MOT-pobox 2.0) with ESMTP id OAA22920; Mon, 2 Jul 2001 14:35:46 -0700 (MST)] Received: (from rittle@localhost) by latour.rsch.comm.mot.com (8.11.1/8.11.1) id f62LZko82001; Mon, 2 Jul 2001 16:35:46 -0500 (CDT) (envelope-from rittle) Date: Mon, 2 Jul 2001 16:35:46 -0500 (CDT) From: Loren James Rittle Message-Id: <200107022135.f62LZko82001@latour.rsch.comm.mot.com> To: libstdc++@gcc.gnu.org CC: gcc-patches@gcc.gnu.org Subject: [3.0.1 and mainline] PATCH for libstdc++/3243 Reply-to: rittle@labs.mot.com User-Agent: SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/20.5 (i386-unknown-freebsdelf3.2) MULE/4.0 (HANANOEN) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII This patch was approved for use on 3.0.1 and mainline over a week ago by Alexandre Oliva. Fully bootstrapped and checked with no regressions in either location on i386-unknown-freebsd4.2. Installed on both. Sorry for the delay. [I will check in the fix for the dreaded Mandrake 8.0 bootstrap failure libstdc++/3284 next after it finishes bootstrapping here.] 2001-07-02 Loren J. Rittle libstdc++/3243 * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Add relative path to staged/installed area to support -I-. Document. * aclocal.m4: Regenerate. * configure: Regenerate. Index: libstdc++-v3/acinclude.m4 =================================================================== RCS file: /cvs/gcc/egcs/libstdc++-v3/acinclude.m4,v retrieving revision 1.161 diff -c -r1.161 acinclude.m4 *** acinclude.m4 2001/06/26 23:35:19 1.161 --- acinclude.m4 2001/07/02 21:13:57 *************** *** 1142,1148 **** dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) --- 1142,1149 ---- dnl and process to with an output command. The reason for a two- dnl stage process here is to correctly handle $srcdir!=$objdir without dnl having to write complex code (the sed commands to clean the macro ! dnl namespace are complex and fragile enough as it is). We must also ! dnl add a relative path so that -I- is supported properly. dnl AC_DEFUN(GLIBCPP_ENABLE_THREADS, [ AC_MSG_CHECKING([for thread model used by GCC]) *************** *** 1160,1166 **** fi AC_OUTPUT_COMMANDS([d=include/bits rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ --- 1161,1168 ---- fi AC_OUTPUT_COMMANDS([d=include/bits rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ ! | sed 's,"gthr-,"bits/gthr-,' >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ From gcc-patches-return-37932-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 21:50:14 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15999 invoked by alias); 2 Jul 2001 21:50:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15936 invoked from network); 2 Jul 2001 21:50:12 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 21:50:12 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id OAA28535; Mon, 2 Jul 2001 14:50:09 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f62Lo7F24458; Mon, 2 Jul 2001 14:50:07 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Mon, 2 Jul 2001 14:50:07 -0700 From: Richard Henderson To: Andreas Jaeger Cc: Zack Weinberg , gcc-patches@gcc.gnu.org Subject: Re: Fix warning in insn-recog.c Message-ID: <20010702145007.A24451@redhat.com> Mail-Followup-To: Richard Henderson , Andreas Jaeger , Zack Weinberg , gcc-patches@gcc.gnu.org References: <20010701113111.A18369@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from aj@suse.de on Mon, Jul 02, 2001 at 08:39:58AM +0200 On Mon, Jul 02, 2001 at 08:39:58AM +0200, Andreas Jaeger wrote: > * Makefile.in (insn-recog.o): Add dependency on reload.h. > * genrecog.c (write_header): Include reload.h for prototypes in > insn-recog.c. Ok. r~ From gcc-patches-return-37933-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:05:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25927 invoked by alias); 2 Jul 2001 22:05:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25895 invoked from network); 2 Jul 2001 22:05:08 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:05:08 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f62M4w400313; Mon, 2 Jul 2001 15:04:58 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 15:04:58 -0700 Date: Mon, 2 Jul 2001 15:04:58 -0700 From: "Zack Weinberg" To: DJ Delorie Cc: mark@codesourcery.com, pfeifer@dbai.tuwien.ac.at, neil@daikokuya.demon.co.uk, gcc-patches@gcc.gnu.org Subject: Re: More cpp.texi updates Message-ID: <20010702150458.F12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200107022117.RAA18212@greed.delorie.com> User-Agent: Mutt/1.3.18i On Mon, Jul 02, 2001 at 05:17:30PM -0400, DJ Delorie wrote: > > It means you cannot build a binary release on a system that doesn't > support building the man pages. Only if you build the binary release from CVS, not an official source release. It seems to me that building binary releases straight from CVS is a bad idea for other reasons, such as the possibility that you got something other than the official release. -- zw I *will* wrestle it into shape eventually. I *will* clean it out, *without* resorting to the redirection of a major navigable river. -- Ray Radlein on lumber rooms From gcc-patches-return-37934-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:06:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27029 invoked by alias); 2 Jul 2001 22:06:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27003 invoked from network); 2 Jul 2001 22:06:22 -0000 Received: from unknown (HELO smtp1.Stanford.EDU) (171.64.14.23) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:06:22 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp1.Stanford.EDU (8.11.1/8.11.3) with SMTP id f62M6I400550; Mon, 2 Jul 2001 15:06:18 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 15:06:19 -0700 Date: Mon, 2 Jul 2001 15:06:19 -0700 From: "Zack Weinberg" To: Richard.Earnshaw@arm.com Cc: gcc-patches@gcc.gnu.org Subject: Re: Some syntactic sugar for machine descriptions Message-ID: <20010702150619.G12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200107021529.QAA11789@cam-mail2.cambridge.arm.com> User-Agent: Mutt/1.3.18i On Mon, Jul 02, 2001 at 04:29:06PM +0100, Richard Earnshaw wrote: > > Why the extra level of scoping? IMO it would be cleaner to have the const > char *str at the scope of the entire switch, rather than for just for a > few cases. Honestly, I'm not sure why I did that. I did the patch immediately upon waking up and may not have been thinking clearly enough. I'll re-do it without the extra narrow scope. OK to apply with that change? -- zw Well, there's another triumph for clean hands, a pure heart, a good soul...and vastly superior technology. -- _Undocumented Features: Out in the Cold_ From gcc-patches-return-37935-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:10:32 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30109 invoked by alias); 2 Jul 2001 22:10:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30019 invoked from network); 2 Jul 2001 22:10:30 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:10:30 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA00999; Mon, 2 Jul 2001 15:10:29 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f62MATp24495; Mon, 2 Jul 2001 15:10:29 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Mon, 2 Jul 2001 15:10:29 -0700 From: Richard Henderson To: Rainer Orth Cc: gcc-patches@gcc.gnu.org Subject: Re: Unreviewed patches for 3.0.1 Message-ID: <20010702151029.B24451@redhat.com> Mail-Followup-To: Richard Henderson , Rainer Orth , gcc-patches@gcc.gnu.org References: <15168.47952.775888.739861@xayide.TechFak.Uni-Bielefeld.DE> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <15168.47952.775888.739861@xayide.TechFak.Uni-Bielefeld.DE>; from ro@TechFak.Uni-Bielefeld.DE on Mon, Jul 02, 2001 at 08:20:00PM +0200 On Mon, Jul 02, 2001 at 08:20:00PM +0200, Rainer Orth wrote: > http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01561.html Ok. > http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01559.html Ok. r~ From gcc-patches-return-37936-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:12:45 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 31728 invoked by alias); 2 Jul 2001 22:12:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31691 invoked from network); 2 Jul 2001 22:12:44 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:12:44 -0000 Received: from greed.delorie.com (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA01295; Mon, 2 Jul 2001 15:12:42 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.9.3/8.9.3) id SAA20191; Mon, 2 Jul 2001 18:12:41 -0400 Date: Mon, 2 Jul 2001 18:12:41 -0400 Message-Id: <200107022212.SAA20191@greed.delorie.com> From: DJ Delorie To: zackw@Stanford.EDU CC: gcc-patches@gcc.gnu.org In-reply-to: <20010702150458.F12723@stanford.edu> (zackw@Stanford.EDU) Subject: Re: More cpp.texi updates References: <20010702150458.F12723@stanford.edu> > Only if you build the binary release from CVS, not an official source > release. It seems to me that building binary releases straight from > CVS is a bad idea for other reasons, such as the possibility that you > got something other than the official release. On DJGPP we do this all the time. They're called test releases. Since rebuilding gcc under djgpp is so difficult anyway, this is pretty much the only way to get people to test them, and the only way to know if a gcc release is going to work out of the box or not before it's too late to fix anything. From gcc-patches-return-37937-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:12:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32019 invoked by alias); 2 Jul 2001 22:12:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31704 invoked from network); 2 Jul 2001 22:12:44 -0000 Received: from unknown (HELO mailhub.air.net.au) (203.24.38.233) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:12:44 -0000 Received: from scooby.brisbane.redhat.com (arc.air.net.au [203.24.38.230]) by mailhub.air.net.au (Postfix) with ESMTP id ED8FD2E12 for ; Tue, 3 Jul 2001 08:12:42 +1000 (EST) Received: by scooby.brisbane.redhat.com (Postfix, from userid 500) id 3ADF210EE1; Tue, 3 Jul 2001 08:12:42 +1000 (EST) From: Ben Elliston MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15168.61914.222663.596047@scooby.brisbane.redhat.com> Date: Tue, 3 Jul 2001 08:12:42 +1000 (EST) To: Graham Stott Cc: config-patches@gnu.org, gcc-patches@gcc.gnu.org Subject: Re: Fix typo config.sub In-Reply-To: <3B409976.D7BCAE5B@redhat.com> References: <3B409976.D7BCAE5B@redhat.com> X-Mailer: VM 6.72 under 21.1 (patch 12) "Channel Islands" XEmacs Lucid >>>>> "Graham" == Graham Stott writes: Graham> The following patch fixes a typo exposed when trying to Graham> configure for a mips64vr5xxxel-elf target. Thanks. I've applied your patch. Ben From gcc-patches-return-37938-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:15:03 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1523 invoked by alias); 2 Jul 2001 22:15:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1479 invoked from network); 2 Jul 2001 22:15:02 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:15:02 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA01594; Mon, 2 Jul 2001 15:15:01 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f62MF0624502; Mon, 2 Jul 2001 15:15:00 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Mon, 2 Jul 2001 15:15:00 -0700 From: Richard Henderson To: Steve Ellcey Cc: gcc-patches@gcc.gnu.org Subject: Re: IA64 patch / build question Message-ID: <20010702151500.C24451@redhat.com> Mail-Followup-To: Richard Henderson , Steve Ellcey , gcc-patches@gcc.gnu.org References: <200107021726.KAA10833@hpsje.cup.hp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107021726.KAA10833@hpsje.cup.hp.com>; from sje@cup.hp.com on Mon, Jul 02, 2001 at 10:26:09AM -0700 On Mon, Jul 02, 2001 at 10:26:09AM -0700, Steve Ellcey wrote: > The t-ia64 Makefile segment overrides some of the functions from > LIB2FUNCS. Specifically, it has its own optimized versions of _divdi3, > _moddi3, _udivdi3, and _umoddi3 in lib1funcs.asm. This patch cannot possibly be correct. The crucial part that you are missing is that the bits that get built from libgcc2.c are *not* actually __divdi3 etc, rather __divti3 and so on. After your patch, we no longer have TImode division functions. r~ From gcc-patches-return-37939-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:21:55 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4102 invoked by alias); 2 Jul 2001 22:21:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4066 invoked from network); 2 Jul 2001 22:21:51 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:21:51 -0000 Received: from emperor.cygnus.com (emperor.cygnus.com [205.180.231.124]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA02247 for ; Mon, 2 Jul 2001 15:21:51 -0700 (PDT) Received: by emperor.cygnus.com (8.8.8+Sun/SMI-SVR4) id PAA29796; Mon, 2 Jul 2001 15:21:51 -0700 (PDT) Date: Mon, 2 Jul 2001 15:21:50 -0700 (PDT) From: Chandra Chavva To: gcc-patches@gcc.gnu.org Subject: Problem with regrename_optimize () (fwd) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII ---------- Forwarded message ---------- Date: Mon, 2 Jul 2001 12:44:43 -0700 (PDT) From: Chandra Chavva To: gcc-local@emperor.cygnus.com Cc: Bernd Schmidt Subject: Problem with regrename_optimize () Hi Bernd, The following sequence of insns from .22.flow2 stage (insn 9052 9050 9053 (set (reg:SI 1 r1) (reg:SI 11 r11)) 116 {*movsi_media_nofpu} (nil) (nil)) (insn 9053 9052 9055 (set (subreg:DI (reg:SF 3 r3) 0) (const_int 0 [0x0])) -1 (nil) (expr_list:REG_EQUIV (const_double:SF (cc0) 0 [0x0] 0 [0x0] [0]) (nil))) (insn 9055 9053 9056 (set (reg:SF 2 r2) (reg:SF 1 r1)) 136 {movsf_media_nofpu} (insn_list 9052 (insn_list 9052 (nil))) (expr_list:REG_DEAD (reg:SF 1 r1) (nil))) get changed into in .24.rnreg phase (insn 9052 9050 9053 (set (reg:SI 3 r3) (reg:SI 11 r11)) 116 {*movsi_media_nofpu} (nil) (expr_list:REG_UNUSED (reg:SI 3 r3) (nil))) (insn 9053 9052 9055 (set (subreg:DI (reg:SF 3 r3) 0) (const_int 0 [0x0])) 126 {*movdi_media_nofpu} (nil) (expr_list:REG_EQUIV (const_double:SF (cc0) 0 [0x0] 0 [0x0] [0]) (nil))) (insn 9055 9053 9056 (set (reg:SF 2 r2) (reg:SF 3 r3)) 136 {movsf_media_nofpu} (insn_list 9052 (insn_list 9052 (`nil))) (nil)) The following check in note_sets() is causing to use reg r3 for insn 9052. if (GET_CODE (x) != REG) return; Since the GET_CODE for insn 9053 is not a REG it is a SUBREG. Is it okay to apply the following patch. * regrename.c (note_sets): Test XEXP (x, 0) is a REG for a SUBREG. Index: regrename.c =================================================================== RCS file: /cvs/cvsfiles/devo/gcc/regrename.c,v retrieving revision 1.7.12.6 diff -p -r1.7.12.6 regrename.c *** regrename.c 2001/05/15 22:54:35 1.7.12.6 --- regrename.c 2001/07/02 19:40:53 *************** note_sets (x, set, data) *** 108,113 **** --- 108,115 ---- HARD_REG_SET *pset = (HARD_REG_SET *) data; unsigned int regno; int nregs; + if (GET_CODE (x) == SUBREG) + x = XEXP (x, 0); if (GET_CODE (x) != REG) return; regno = REGNO (x); Thanks Chandra From gcc-patches-return-37940-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:30:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5564 invoked by alias); 2 Jul 2001 22:30:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5541 invoked from network); 2 Jul 2001 22:30:23 -0000 Received: from unknown (HELO smtp2.Stanford.EDU) (171.64.14.116) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:30:23 -0000 Received: from wolery.stanford.edu (wolery.Stanford.EDU [128.12.196.30]) by smtp2.Stanford.EDU (8.11.3/8.11.3) with SMTP id f62MU9H03438; Mon, 2 Jul 2001 15:30:10 -0700 (PDT) Received: by wolery.stanford.edu (sSMTP sendmail emulation); Mon, 2 Jul 2001 15:30:09 -0700 From: "Zack Weinberg" Date: Mon, 2 Jul 2001 15:30:09 -0700 To: gcc-patches@gcc.gnu.org Cc: Toon Moene Subject: libf2c: remove unnecessary variables from FLAGS_TO_PASS Message-ID: <20010702153009.J12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.18i libf2c's Makefiles have never had any use for $(RUNTESTFLAGS) or $(PICFLAG), but they appear in libf2c/Makefile.in's version of FLAGS_TO_PASS anyway. This can cause problems with nested shell quotes. For instance $ make check RUNTESTFLAGS="--tool_opts '-fPIC -march=i686'" will barf, if config.status is out of date. The simplest fix seems to be to remove these variables from FLAGS_TO_PASS. Patch appended. Bootstrapping on i686-linux now. zw * Makefile.in: Take PICFLAG and RUNTESTFLAGS out of FLAGS_TO_PASS. =================================================================== Index: libf2c/Makefile.in --- libf2c/Makefile.in 1999/09/14 07:44:19 1.33 +++ libf2c/Makefile.in 2001/07/02 22:28:18 @@ -59,15 +59,12 @@ CFLAGS = @CFLAGS@ # List of variables to pass to sub-makes. # Quote this way so that it can be used to set shell variables too. -# Currently no use for PICFLAG, RUNTESTFLAGS -- check usage. FLAGS_TO_PASS= \ CC='$(CC)' \ CFLAGS='$(CFLAGS)' \ CPPFLAGS='$(CPPFLAGS)' \ AR='$(AR)' \ RANLIB='$(RANLIB)' \ - PICFLAG='$(PICFLAG)' \ - RUNTESTFLAGS='$(RUNTESTFLAGS)' \ prefix='$(prefix)' \ exec_prefix='$(exec_prefix)' \ libdir='$(libdir)' \ From gcc-patches-return-37941-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:37:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8358 invoked by alias); 2 Jul 2001 22:37:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8223 invoked from network); 2 Jul 2001 22:37:11 -0000 Received: from unknown (HELO ftpbox.mot.com) (129.188.136.101) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:37:11 -0000 Received: [from pobox3.mot.com (pobox3.mot.com [10.64.251.242]) by ftpbox.mot.com (ftpbox 2.1) with ESMTP id PAA12712; Mon, 2 Jul 2001 15:32:34 -0700 (MST)] Received: [from latour.rsch.comm.mot.com (latour.rsch.comm.mot.com [145.1.80.116]) by pobox3.mot.com (MOT-pobox3 2.0) with ESMTP id PAA27819; Mon, 2 Jul 2001 15:25:33 -0700 (MST)] Received: (from rittle@localhost) by latour.rsch.comm.mot.com (8.11.1/8.11.1) id f62MWXW23497; Mon, 2 Jul 2001 17:32:33 -0500 (CDT) (envelope-from rittle) Date: Mon, 2 Jul 2001 17:32:33 -0500 (CDT) From: Loren James Rittle Message-Id: <200107022232.f62MWXW23497@latour.rsch.comm.mot.com> To: libstdc++@gcc.gnu.org CC: gcc-patches@gcc.gnu.org Subject: [3.0.1 and mainline] PATCH for libstdc++/3284 Reply-to: rittle@labs.mot.com User-Agent: SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/20.5 (i386-unknown-freebsdelf3.2) MULE/4.0 (HANANOEN) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII This patch was pre-approved for use on 3.0.1 and mainline over a week ago by Alexandre Oliva. Fully rebuilt libstdc++-v3 and checked with no regressions in either location on i386-unknown-freebsd4.2. (I also verified that the staged include/bits/gthr*.h files were identical before and after this patch.) Installed on mainline and 3.0.1 branch. It is strongly believed that this will allow Mandrake 8.0 to bootstrap without users having to reset locale, etc. Either way, the old construct was not considered portable by our shell/autoconf expert. But I will only close the PR once a report comes in from a Mandrake 8.0 user that gcc bootstrap works with 3.0.1 (or mainline, since they had the exact same issue) without unsetting their locale. 2001-07-02 Loren J. Rittle libstdc++/3284 * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Portability enhancement. * aclocal.m4: Regenerate. * configure: Regenerate. Index: libstdc++-v3/acinclude.m4 =================================================================== RCS file: /cvs/gcc/egcs/libstdc++-v3/acinclude.m4,v retrieving revision 1.162 diff -c -r1.162 acinclude.m4 *** acinclude.m4 2001/07/02 21:30:30 1.162 --- acinclude.m4 2001/07/02 21:50:49 *************** *** 1159,1173 **** AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! AC_OUTPUT_COMMANDS([d=include/bits rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\([A-Z_][A-Z_]*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ | sed 's,"gthr-,"bits/gthr-,' >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC[A-Z_]*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\([A-Z_]*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) --- 1159,1173 ---- AC_DEFINE(HAVE_GTHR_DEFAULT) AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__) fi ! AC_OUTPUT_COMMANDS([d=include/bits; a='[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]' rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\('$a$a'*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ | sed 's,"gthr-,"bits/gthr-,' >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC'$a'*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC'$a'*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\('$a'*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) From gcc-patches-return-37942-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:40:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10295 invoked by alias); 2 Jul 2001 22:40:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10270 invoked from network); 2 Jul 2001 22:40:10 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:40:10 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f62MJt602096; Mon, 2 Jul 2001 15:19:56 -0700 Date: Mon, 02 Jul 2001 15:19:55 -0700 From: Mark Mitchell To: Zack Weinberg , DJ Delorie cc: "pfeifer@dbai.tuwien.ac.at" , "neil@daikokuya.demon.co.uk" , "gcc-patches@gcc.gnu.org" Subject: Re: More cpp.texi updates Message-ID: <832850000.994112395@warlock.codesourcery.com> In-Reply-To: <20010702150458.F12723@stanford.edu> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, July 02, 2001 03:04:58 PM -0700 Zack Weinberg wrote: > On Mon, Jul 02, 2001 at 05:17:30PM -0400, DJ Delorie wrote: >> >> It means you cannot build a binary release on a system that doesn't >> support building the man pages. > > Only if you build the binary release from CVS, not an official source > release. It seems to me that building binary releases straight from > CVS is a bad idea for other reasons, such as the possibility that you > got something other than the official release. Exactly. It is much better that we cause this minor inconvenience than that we risk shipping a release whose manual pages are not up to date, which is what could happen if we try to keep them in synch in CVS. However, the issue that DJ raises is exactly why I think snapshots should be as release-like as possible; then you could build from a snapshot and simulate building the next release. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-37943-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:56:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21415 invoked by alias); 2 Jul 2001 22:56:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21078 invoked from network); 2 Jul 2001 22:56:22 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:56:22 -0000 Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA05672; Mon, 2 Jul 2001 15:56:20 -0700 (PDT) Received: (from aoliva@localhost) by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f62MuHq03284; Mon, 2 Jul 2001 19:56:17 -0300 To: rittle@labs.mot.com Cc: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: [3.0.1 and mainline] PATCH for libstdc++/3284 References: <200107022232.f62MWXW23497@latour.rsch.comm.mot.com> From: Alexandre Oliva Organization: GCC Team, Red Hat Date: 02 Jul 2001 19:56:17 -0300 In-Reply-To: <200107022232.f62MWXW23497@latour.rsch.comm.mot.com> (Loren James Rittle's message of "Mon, 2 Jul 2001 17:32:33 -0500 (CDT)") Message-ID: Lines: 20 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Jul 2, 2001, Loren James Rittle wrote: > ! AC_OUTPUT_COMMANDS([d=include/bits; a='[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]' > rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h > ! sed '/^#/s/\('$a$a'*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ I'm afraid this is not good enough. The presence of an unquoted [ABCDE..._] will cause the shell to look for files named /^#/s/\( followed by two capital letters or underscores, and then *\)/_GLIBCPP_\1/g. Of course, nobody would have a file named like that, but why take the risk? Please enclose $a in double quotes. Similarly for the other occurrences of it. Thanks for taking care of the problem! -- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ Red Hat GCC Developer aoliva@{cygnus.com, redhat.com} CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} Free Software Evangelist *Please* write to mailing lists, not to me From gcc-patches-return-37944-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 22:57:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21896 invoked by alias); 2 Jul 2001 22:57:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21853 invoked from network); 2 Jul 2001 22:57:12 -0000 Received: from unknown (HELO palrel2.hp.com) (156.153.255.234) by sourceware.cygnus.com with SMTP; 2 Jul 2001 22:57:12 -0000 Received: from hpda.cup.hp.com (hpda.cup.hp.com [15.75.208.53]) by palrel2.hp.com (Postfix) with ESMTP id 9210D10E1; Mon, 2 Jul 2001 15:57:11 -0700 (PDT) Received: from hpsje.cup.hp.com (hpsje.cup.hp.com [15.0.98.5]) by hpda.cup.hp.com (Postfix) with ESMTP id DAB9C6C3E; Mon, 2 Jul 2001 15:57:10 -0700 (PDT) Received: (from sje@localhost) by hpsje.cup.hp.com (8.8.6 (PHNE_17190)/8.7.3 TIS Messaging 5.0) id PAA09877; Mon, 2 Jul 2001 15:57:10 -0700 (PDT) Date: Mon, 2 Jul 2001 15:57:10 -0700 (PDT) From: Steve Ellcey Message-Id: <200107022257.PAA09877@hpsje.cup.hp.com> To: rth@redhat.com, wilson@redhat.com Cc: gcc-patches@gcc.gnu.org Subject: Re: IA64 patch / build question > On Mon, Jul 02, 2001 at 10:26:09AM -0700, Steve Ellcey wrote: > > The t-ia64 Makefile segment overrides some of the functions from > > LIB2FUNCS. Specifically, it has its own optimized versions of _divdi3, > > _moddi3, _udivdi3, and _umoddi3 in lib1funcs.asm. > > This patch cannot possibly be correct. The crucial part that > you are missing is that the bits that get built from libgcc2.c > are *not* actually __divdi3 etc, rather __divti3 and so on. > > After your patch, we no longer have TImode division functions. Well, I did say I tested it on IA64 HP-UX and not IA64 Linux. It looks like it worked for me because in my config/ia64/hpux.h I have: #define MIN_UNITS_PER_WORD 4 which may or may not be right but I needed it at one point to get libgcc to build. With this defined the bits getting built are __divdi3 and not __divti3. Feel free to remove it (or have Jim Wilson remove it) if it is breaking IA64 Linux. I don't have write permission so I can't undo it myself. Steve Ellcey sje@cup.hp.com From gcc-patches-return-37945-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:05:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25148 invoked by alias); 2 Jul 2001 23:05:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25023 invoked from network); 2 Jul 2001 23:05:08 -0000 Received: from unknown (HELO hiauly1.hia.nrc.ca) (132.246.100.193) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:05:08 -0000 Received: (from dave@localhost) by hiauly1.hia.nrc.ca (8.9.3/8.9.3) id TAA25463; Mon, 2 Jul 2001 19:05:04 -0400 (EDT) Message-Id: <200107022305.TAA25463@hiauly1.hia.nrc.ca> Subject: Re: [rfa] const char *lbasename(const char *); To: ac131313@cygnus.com (Andrew Cagney) Date: Mon, 2 Jul 2001 19:05:04 -0400 (EDT) From: "John David Anglin" Cc: gcc-patches@gcc.gnu.org In-Reply-To: <3B40AAF7.6010805@cygnus.com> from "Andrew Cagney" at Jul 2, 2001 01:10:15 pm X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > > In a follow up message, the uses in gcc/cp were missed. Some of these > > involve writeable "strings" if I remember correctly. > > > Would you remember the details? The only potential problem I noticed > was with cp/repo.c:get_base_filename() and I think that should be > returning a const char *. I believe the main issues were with VMS which needed a basename function that handed writeable strings. Previously, this was file_name_nondirectory. This function got replaced by lbasename but the special characteristics that it had under VMS were lost. The VMS FILE_NAME_NONDIRECTORY macro needs to work on writeable strings. This was my proposed solution back in February. Basically, I was just trying to prevent VMS from being further buried. I don't have a VMS system and as far as I am aware nobody with a VMS system has come forward with patches for 3.x, although from time to time I hear rumours that work is being done. The VMS implementation is currently non functional. Thus, it might be argued that we shouldn't worry about it. Hope this helps. Dave -- J. David Anglin dave.anglin@nrc.ca National Research Council of Canada (613) 990-0752 (FAX: 952-6605) 2001-02-25 John David Anglin * alpha/xm-vms.h (CASE_INSENSITIVE_FILENAMES): Define. * vax/xm-vms.h (CASE_INSENSITIVE_FILENAMES): Define. (FILE_NAME_NONDIRECTORY): Delete obsolete macro. * toplev.c (file_name_nondirectory): Delete function. (strcpy_lc): New function to copy and translate destination string to lower case. (output_file_directive, main): Use basename function instead of file_name_nondirectory. * dwarf2out.c (compute_section_prefix): Likewise. * cp/lex.c (handle_pragma_interface, handle_pragma_implementation): Likewise. * cp/repo.c (get_base_filename, open_repo_file): Likewise. * toplev.h (strcpy_lc): Declare. * cp-tree.h (strcpy_lc): Declare. * system.h (IS_ABSOLUTE_PATHNAME): Provide VMS definition. (CASE_INSENSITIVE_FILENAMES): Provide default definition. --- ./config/alpha/xm-vms.h.orig Wed Sep 22 10:23:22 1999 +++ ./config/alpha/xm-vms.h Sun Feb 25 15:45:14 2001 @@ -61,6 +61,13 @@ { 0, 0, 0, 0 } \ } +/* Define CASE_INSENSITIVE_FILENAMES to translate base file names to lower + case. This allows cp/lex.c to properly compare filenames to determine + if a file implements a class on machines with case insensitive file + names. */ + +#define CASE_INSENSITIVE_FILENAMES 1 + /* Define a local equivalent (sort of) for unlink */ #define unlink remove --- cp/cp-tree.h.orig Mon Feb 19 16:49:45 2001 +++ cp/cp-tree.h Sun Feb 25 17:10:55 2001 @@ -4042,8 +4042,10 @@ /* in input.c */ +/* in toplev.c */ +extern char *strcpy_lc PARAMS ((char *, const char *)); + /* in lex.c */ -extern char *file_name_nondirectory PARAMS ((const char *)); extern tree make_pointer_declarator PARAMS ((tree, tree)); extern tree make_reference_declarator PARAMS ((tree, tree)); extern tree make_call_declarator PARAMS ((tree, tree, tree, tree)); --- dwarf2out.c.orig Fri Feb 16 17:17:26 2001 +++ dwarf2out.c Sun Feb 25 13:14:03 2001 @@ -5445,7 +5445,7 @@ die_checksum (unit_die, &ctx); md5_finish_ctx (&ctx, checksum); - p = file_name_nondirectory (get_AT_string (unit_die, DW_AT_name)); + p = basename (get_AT_string (unit_die, DW_AT_name)); name = (char *) alloca (strlen (p) + 64); sprintf (name, "%s.", p); --- cp/lex.c.orig Mon Feb 12 04:58:18 2001 +++ cp/lex.c Sun Feb 25 20:01:07 2001 @@ -1109,10 +1109,17 @@ if (fname == (tree)-1) return; else if (fname == 0) - main_filename = file_name_nondirectory (input_filename); + main_filename = basename (input_filename); else main_filename = TREE_STRING_POINTER (fname); + if (CASE_INSENSITIVE_FILENAMES) + { + char *d = (char *) alloca (strlen (main_filename) + 1); + + main_filename = strcpy_lc (d, main_filename); + } + finfo = get_fileinfo (input_filename); if (impl_file_chain == 0) @@ -1158,7 +1165,7 @@ main_filename = main_input_filename; else main_filename = input_filename; - main_filename = file_name_nondirectory (main_filename); + main_filename = basename (main_filename); } else { @@ -1166,6 +1173,13 @@ if (cpp_included (parse_in, main_filename)) warning ("#pragma implementation for %s appears after file is included", main_filename); + } + + if (CASE_INSENSITIVE_FILENAMES) + { + char *d = (char *) alloca (strlen (main_filename) + 1); + + main_filename = strcpy_lc (d, main_filename); } for (; ifiles; ifiles = ifiles->next) --- cp/repo.c.orig Mon Feb 12 04:58:18 2001 +++ cp/repo.c Sun Feb 25 20:02:22 2001 @@ -268,7 +268,7 @@ return NULL; } - return file_name_nondirectory (filename); + return basename (filename); } static void @@ -281,10 +281,18 @@ if (s == NULL) return; - p = file_name_nondirectory (s); + p = basename (s); + p = strrchr (p, '.'); if (! p) p = s + strlen (s); + + if (CASE_INSENSITIVE_FILENAMES) + { + char *d = (char *) alloca (strlen (s) + 1); + + s = strcpy_lc (d, s); + } obstack_grow (&permanent_obstack, s, p - s); repo_name = obstack_copy0 (&permanent_obstack, ".rpo", 4); --- ./system.h.orig Fri Dec 22 07:27:36 2000 +++ ./system.h Sun Feb 25 14:02:46 2001 @@ -474,8 +474,18 @@ (IS_DIR_SEPARATOR ((STR)[0]) || (STR)[0] == '$' \ || ((STR)[0] != '\0' && (STR)[1] == ':' && IS_DIR_SEPARATOR ((STR)[2]))) #else +#ifdef VMS +/* FIXME: ??? */ +#define IS_ABSOLUTE_PATHNAME(STR) 1 +#else #define IS_ABSOLUTE_PATHNAME(STR) \ (IS_DIR_SEPARATOR ((STR)[0]) || (STR)[0] == '$') +#endif +#endif + +/* if defined, within-directory file names are translated to lower case. */ +#ifndef CASE_INSENSITIVE_FILENAMES +#define CASE_INSENSITIVE_FILENAMES 0 #endif /* Get libiberty declarations. */ --- toplev.c.orig Fri Feb 16 17:17:37 2001 +++ toplev.c Sun Feb 25 19:59:01 2001 @@ -1725,19 +1725,26 @@ } } -/* Given a file name X, return the nondirectory portion. */ +/* Copy SRC including the terminating '\0' character to DEST translating + to lower case. */ char * -file_name_nondirectory (x) - const char *x; -{ - char *tmp = (char *) strrchr (x, '/'); - if (DIR_SEPARATOR != '/' && ! tmp) - tmp = (char *) strrchr (x, DIR_SEPARATOR); - if (tmp) - return (char *) (tmp + 1); - else - return (char *) x; +strcpy_lc (dest, src) + char *dest; + const char *src; +{ + register char c; + char *s = (char *) src; + char *d = dest; + + do + { + c = TOLOWER (*s++); + *d++ = c; + } + while (c != '\0'); + + return dest; } /* Output a quoted string. */ @@ -1770,15 +1777,13 @@ FILE *asm_file; const char *input_name; { - int len = strlen (input_name); - const char *na = input_name + len; + const char *na = basename (input_name); - /* NA gets INPUT_NAME sans directory names. */ - while (na > input_name) + if (CASE_INSENSITIVE_FILENAMES) { - if (IS_DIR_SEPARATOR (na[-1])) - break; - na--; + char *d = (char *) alloca (strlen (na) + 1); + + na = strcpy_lc (d, na); } #ifdef ASM_OUTPUT_MAIN_SOURCE_FILENAME @@ -4545,16 +4550,19 @@ char **argv; { register int i; - char *p; /* save in case md file wants to emit args as a comment. */ save_argc = argc; save_argv = argv; - p = argv[0] + strlen (argv[0]); - while (p != argv[0] && !IS_DIR_SEPARATOR (p[-1])) - --p; - progname = p; + progname = basename (argv[0]); + + if (CASE_INSENSITIVE_FILENAMES) + { + char *d = xstrdup (progname); + + progname = strcpy_lc (d, progname); + } xmalloc_set_program_name (progname); --- toplev.h.orig Fri Feb 16 17:17:38 2001 +++ toplev.h Sun Feb 25 17:09:46 2001 @@ -35,7 +35,7 @@ const int)); extern int count_error PARAMS ((int)); extern void strip_off_ending PARAMS ((char *, int)); -extern char *file_name_nondirectory PARAMS ((const char *)); +extern char *strcpy_lc PARAMS ((char *, const char *)); extern void print_time PARAMS ((const char *, long)); extern void debug_start_source_file PARAMS ((const char *)); extern void debug_end_source_file PARAMS ((unsigned)); --- ./config/vax/xm-vms.h.orig Thu Nov 9 02:45:15 2000 +++ ./config/vax/xm-vms.h Sun Feb 25 15:45:46 2001 @@ -84,25 +84,12 @@ #define MAX_READ_LEN (32 * 512) #define MAX_WRITE_LEN (32 * 512) -/* Under VMS a directory specification can be enclosed either in square - brackets or in angle brackets. Thus we need to check both. This - macro is used to help compare filenames in cp-lex.c. +/* Define CASE_INSENSITIVE_FILENAMES to translate base file names to lower + case. This allows cp/lex.c to properly compare filenames to determine + if a file implements a class on machines with case insensitive file + names. */ - We also need to make sure that the names are all lower case, because - we must be able to compare filenames to determine if a file implements - a class. */ - -#define FILE_NAME_NONDIRECTORY(C) \ -({ \ - char * pnt_ = (C), * pnt1_; \ - pnt1_ = pnt_ - 1; \ - while (*++pnt1_) \ - if ((*pnt1_ >= 'A' && *pnt1_ <= 'Z')) *pnt1_ |= 0x20; \ - pnt1_ = strrchr (pnt_, ']'); \ - pnt1_ = (pnt1_ == 0 ? strrchr (pnt_, '>') : pnt1_); \ - pnt1_ = (pnt1_ == 0 ? strrchr (pnt_, ':') : pnt1_); \ - (pnt1_ == 0 ? pnt_ : pnt1_ + 1); \ - }) +#define CASE_INSENSITIVE_FILENAMES 1 /* Macro to generate the name of the cross reference file. The standard one does not work, since it was written assuming that the conventions From gcc-patches-return-37946-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:06:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25792 invoked by alias); 2 Jul 2001 23:06:46 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25751 invoked from network); 2 Jul 2001 23:06:44 -0000 Received: from unknown (HELO ftpbox.mot.com) (129.188.136.101) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:06:44 -0000 Received: [from pobox.mot.com (pobox.mot.com [129.188.137.100]) by ftpbox.mot.com (ftpbox 2.1) with ESMTP id QAA27554; Mon, 2 Jul 2001 16:06:43 -0700 (MST)] Received: [from latour.rsch.comm.mot.com (latour.rsch.comm.mot.com [145.1.80.116]) by pobox.mot.com (MOT-pobox 2.0) with ESMTP id QAA21007; Mon, 2 Jul 2001 16:06:42 -0700 (MST)] Received: (from rittle@localhost) by latour.rsch.comm.mot.com (8.11.1/8.11.1) id f62N6gp41779; Mon, 2 Jul 2001 18:06:42 -0500 (CDT) (envelope-from rittle) Date: Mon, 2 Jul 2001 18:06:42 -0500 (CDT) From: Loren James Rittle Message-Id: <200107022306.f62N6gp41779@latour.rsch.comm.mot.com> To: aoliva@redhat.com, rittle@labs.mot.com Subject: Re: [3.0.1 and mainline] PATCH for libstdc++/3284 Cc: gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org In-Reply-To: Yikes! That will teach you to pre-approve anything from me. ;-) I will obviously fix this issue ASAP. >I'm afraid this is not good enough. The presence of an unquoted >[ABCDE..._] will cause the shell to look for files named /^#/s/\( Yes, I knew this. For years I have used a shell that doesn't have this problem (es) and it causes me to forget the limitation of borne... Regards, Loren From gcc-patches-return-37947-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:07:49 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26582 invoked by alias); 2 Jul 2001 23:07:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26543 invoked from network); 2 Jul 2001 23:07:40 -0000 Received: from unknown (HELO fillmore.constant.com) (63.198.197.20) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:07:40 -0000 Received: (from bkoz@localhost) by fillmore.constant.com (8.11.2/8.11.2) id f62N7bC32748; Mon, 2 Jul 2001 16:07:37 -0700 Date: Mon, 2 Jul 2001 16:07:37 -0700 Message-Id: <200107022307.f62N7bC32748@fillmore.constant.com> To: gcc-patches@gcc.gnu.org Subject: [v3] locale init, testsuite tweaks From: Benjamin Kosnik X-Organization: Red Hat/LOwer HAight . X-URL: http://gcc.gnu.org/libstdc++ More testsuite-sanity-fixing. Some problems with creating named locales before std::locale::locale() and friends were called, fixed. Combine passes the newly-constructed _Impl to a locale ctor that increments the refcount, so adjust the _Impl __tmp creation accordingly. 2001-07-02 Benjamin Kosnik * src/locale.cc (locale::locale(const char*)): Make sure global locales are initialized. * include/bits/locale_facets.tcc (locale::combine): Refcout should be zero, not one as it's return-by-value. * testsuite/27_io/ios_base_callbacks.cc (test01): Don't check for named locales here. * testsuite/22_locale/ctor_copy_dtor.cc (test01): Instead, check for it here. (test02): Add test. * libsupc++/eh_alloc.cc: Use climits, not limits.h. Index: include/bits/locale_facets.tcc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/locale_facets.tcc,v retrieving revision 1.17 diff -c -p -r1.17 locale_facets.tcc *** locale_facets.tcc 2001/06/30 04:35:47 1.17 --- locale_facets.tcc 2001/07/02 23:04:21 *************** namespace std *** 48,54 **** locale locale::combine(const locale& __other) { ! _Impl* __tmp = new _Impl(*_M_impl, 1); __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); return locale(__tmp); } --- 48,54 ---- locale locale::combine(const locale& __other) { ! _Impl* __tmp = new _Impl(*_M_impl, 0); __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); return locale(__tmp); } Index: libsupc++/eh_alloc.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/libsupc++/eh_alloc.cc,v retrieving revision 1.5 diff -c -p -r1.5 eh_alloc.cc *** eh_alloc.cc 2001/06/08 03:55:43 1.5 --- eh_alloc.cc 2001/07/02 23:04:22 *************** *** 33,39 **** #include #include #include ! #include #include "unwind-cxx.h" #include "bits/c++config.h" #include "bits/gthr.h" --- 33,39 ---- #include #include #include ! #include #include "unwind-cxx.h" #include "bits/c++config.h" #include "bits/gthr.h" Index: src/locale.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/src/locale.cc,v retrieving revision 1.34 diff -c -p -r1.34 locale.cc *** locale.cc 2001/06/30 04:35:48 1.34 --- locale.cc 2001/07/02 23:04:24 *************** namespace std *** 371,376 **** --- 371,377 ---- { if (__s) { + _S_initialize(); if (strcmp(__s, "C") == 0 || strcmp(__s, "POSIX") == 0) (_M_impl = _S_classic)->_M_add_reference(); else Index: testsuite/22_locale/ctor_copy_dtor.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc,v retrieving revision 1.8 diff -c -p -r1.8 ctor_copy_dtor.cc *** ctor_copy_dtor.cc 2001/01/30 09:18:51 1.8 --- ctor_copy_dtor.cc 2001/07/02 23:04:26 *************** *** 25,30 **** --- 25,38 ---- #include #include + + void test00() + { + // Should be able to do this as the first thing that happens in a + // file and have it not crash. + std::locale loc("C"); + } + #if _GLIBCPP_USE_WCHAR_T typedef std::codecvt c_codecvt; typedef std::codecvt_byname c_codecvt_byname; *************** void test01() *** 126,131 **** --- 134,146 ---- catch(...) { VERIFY (false); } + try + { locale loc08("saturn_SUN*RA"); } + catch(runtime_error& obj) + { VERIFY (true); } + catch(...) + { VERIFY (false); } + // 4 // locale(const locale& other, const char* std_name, category) { *************** void test01() *** 226,231 **** --- 241,248 ---- int main () { + test00(); + #if _GLIBCPP_USE_WCHAR_T test01(); #endif Index: testsuite/27_io/ios_base_callbacks.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/27_io/ios_base_callbacks.cc,v retrieving revision 1.3 diff -c -p -r1.3 ios_base_callbacks.cc *** ios_base_callbacks.cc 2001/05/12 16:51:42 1.3 --- ios_base_callbacks.cc 2001/07/02 23:04:26 *************** callb03(std::ios_base::event e, std::io *** 42,55 **** bool test01() { bool test = true; ! std::locale locco("saturn_SUN*RA"); std::stringbuf strbuf01; std::ios ios01(&strbuf01); ios01.register_callback(callb03, 1); ios01.register_callback(callb02, 1); ios01.register_callback(callb01, 1); ! ios01.imbue(locco); VERIFY( str01 == str02 ); #ifdef DEBUG_ASSERT --- 42,55 ---- bool test01() { bool test = true; ! std::locale loc("C"); std::stringbuf strbuf01; std::ios ios01(&strbuf01); ios01.register_callback(callb03, 1); ios01.register_callback(callb02, 1); ios01.register_callback(callb01, 1); ! ios01.imbue(loc); VERIFY( str01 == str02 ); #ifdef DEBUG_ASSERT *************** int main(void) *** 66,68 **** --- 66,69 ---- return 0; } + From gcc-patches-return-37948-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:11:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28002 invoked by alias); 2 Jul 2001 23:11:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27961 invoked from network); 2 Jul 2001 23:11:04 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:11:04 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA07203; Mon, 2 Jul 2001 16:11:04 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f62NB0j24609; Mon, 2 Jul 2001 16:11:00 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Mon, 2 Jul 2001 16:11:00 -0700 From: Richard Henderson To: Steve Ellcey Cc: wilson@redhat.com, gcc-patches@gcc.gnu.org Subject: Re: IA64 patch / build question Message-ID: <20010702161100.A24604@redhat.com> Mail-Followup-To: Richard Henderson , Steve Ellcey , wilson@redhat.com, gcc-patches@gcc.gnu.org References: <200107022257.PAA09877@hpsje.cup.hp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107022257.PAA09877@hpsje.cup.hp.com>; from sje@cup.hp.com on Mon, Jul 02, 2001 at 03:57:10PM -0700 On Mon, Jul 02, 2001 at 03:57:10PM -0700, Steve Ellcey wrote: > Well, I did say I tested it on IA64 HP-UX and not IA64 Linux. It looks > like it worked for me because in my config/ia64/hpux.h I have: > > #define MIN_UNITS_PER_WORD 4 > > which may or may not be right but I needed it at one point to get libgcc > to build. With this defined the bits getting built are __divdi3 and not > __divti3. Ah.. Yes, this is definitely incorrect. There is no hardware configuration option for IA-64 that uses 32-bit registers. You may have "needed it" because you were doing 32->64 cross compilation, which was completely broken for a long time. r~ From gcc-patches-return-37949-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:12:09 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28487 invoked by alias); 2 Jul 2001 23:12:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28449 invoked from network); 2 Jul 2001 23:12:05 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:12:05 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id QAA24158; Mon, 2 Jul 2001 16:29:27 -0700 To: Chandra Chavva CC: gcc-patches@gcc.gnu.org Subject: Re: Problem with regrename_optimize () (fwd) References: From: Geoff Keating Date: 02 Jul 2001 16:28:26 -0700 In-Reply-To: Chandra Chavva's message of "Mon, 2 Jul 2001 15:21:50 -0700 (PDT)" Message-ID: Lines: 19 X-Mailer: Gnus v5.5/Emacs 20.3 Chandra Chavva writes: > (insn 9053 9052 9055 (set (subreg:DI (reg:SF 3 r3) 0) > (const_int 0 [0x0])) -1 (nil) > (expr_list:REG_EQUIV (const_double:SF (cc0) 0 [0x0] 0 [0x0] [0]) > (nil))) Hi Chandra, why is this not (set (reg:DI 3 r3) (const_int 0)) instead? I think this is the real problem. -- - Geoffrey Keating From gcc-patches-return-37950-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:31:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 474 invoked by alias); 2 Jul 2001 23:31:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 367 invoked from network); 2 Jul 2001 23:31:07 -0000 Received: from unknown (HELO ftpbox.mot.com) (129.188.136.101) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:31:07 -0000 Received: [from pobox2.mot.com (pobox2.mot.com [136.182.15.8]) by ftpbox.mot.com (ftpbox 2.1) with ESMTP id QAA06240; Mon, 2 Jul 2001 16:31:04 -0700 (MST)] Received: [from latour.rsch.comm.mot.com (latour.rsch.comm.mot.com [145.1.80.116]) by pobox2.mot.com (MOT-pobox2 2.0) with ESMTP id QAA00202; Mon, 2 Jul 2001 16:31:04 -0700 (MST)] Received: (from rittle@localhost) by latour.rsch.comm.mot.com (8.11.1/8.11.1) id f62NV3051006; Mon, 2 Jul 2001 18:31:03 -0500 (CDT) (envelope-from rittle) Date: Mon, 2 Jul 2001 18:31:03 -0500 (CDT) From: Loren James Rittle Message-Id: <200107022331.f62NV3051006@latour.rsch.comm.mot.com> To: aoliva@redhat.com CC: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org In-reply-to: (message from Alexandre Oliva on 02 Jul 2001 19:56:17 -0300) Subject: Re: [3.0.1 and mainline] PATCH for libstdc++/3284 Reply-to: rittle@labs.mot.com References: <200107022232.f62MWXW23497@latour.rsch.comm.mot.com> User-Agent: SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/20.5 (i386-unknown-freebsdelf3.2) MULE/4.0 (HANANOEN) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII In article , Alexandre Oliva writes: > I'm afraid this is not good enough. The presence of an unquoted > [ABCDE..._] will cause the shell to look for files named /^#/s/\( [...] > Thanks for taking care of the problem! Done, checked and installed. Tested by reconfiguration of libstdc++-v3 and byte-for-byte comparison of configure-generated files related to this patch. Thanks for spotting the error so quickly. 2001-07-02 Loren J. Rittle * acinclude.m4 (GLIBCPP_ENABLE_THREADS): Protect variable from shell expansion (thanks to Alexandre Oliva). * aclocal.m4: Regenerate. * configure: Regenerate. Index: libstdc++-v3/acinclude.m4 =================================================================== RCS file: /cvs/gcc/egcs/libstdc++-v3/acinclude.m4,v retrieving revision 1.163 diff -c -r1.163 acinclude.m4 *** acinclude.m4 2001/07/02 22:24:57 1.163 --- acinclude.m4 2001/07/02 23:15:29 *************** *** 1161,1173 **** fi AC_OUTPUT_COMMANDS([d=include/bits; a='[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]' rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\('$a$a'*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ | sed 's,"gthr-,"bits/gthr-,' >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC'$a'*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC'$a'*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\('$a'*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) --- 1161,1173 ---- fi AC_OUTPUT_COMMANDS([d=include/bits; a='[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]' rm -f $d/gthr.h $d/gthr-single.h $d/gthr-default.h ! sed '/^#/s/\('"$a$a"'*\)/_GLIBCPP_\1/g' <$d/gthr.h-in \ | sed 's,"gthr-,"bits/gthr-,' >$d/gthr.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-single.h-in \ ! | sed 's/\(GCC'"$a"'*_H\)/_GLIBCPP_\1/g' >$d/gthr-single.h sed 's/\(UNUSED\)/_GLIBCPP_\1/g' <$d/gthr-default.h-in \ ! | sed 's/\(GCC'"$a"'*_H\)/_GLIBCPP_\1/g' \ ! | sed 's/\('"$a"'*WEAK\)/_GLIBCPP_\1/g' >$d/gthr-default.h]) ]) From gcc-patches-return-37951-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Mon Jul 02 23:55:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10697 invoked by alias); 2 Jul 2001 23:55:46 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10667 invoked from network); 2 Jul 2001 23:55:45 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 2 Jul 2001 23:55:45 -0000 Received: from apple.con (A17-128-100-225.apple.com [17.128.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id QAA21216 for ; Mon, 2 Jul 2001 16:55:44 -0700 (PDT) Received: from scv1.apple.com (scv1.apple.com) by apple.con (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Mon, 2 Jul 2001 16:53:59 +0100 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv1.apple.com (8.9.3/8.9.3) with ESMTP id QAA29924 for ; Mon, 2 Jul 2001 16:55:43 -0700 (PDT) Message-Id: <200107022355.QAA29924@scv1.apple.com> Date: Mon, 2 Jul 2001 16:55:42 -0700 Content-Type: multipart/alternative; boundary=Apple-Mail-870346906-5 Mime-Version: 1.0 (Apple Message framework v388) From: Ziemowit Laski To: gcc-patches@gcc.gnu.org X-Mailer: Apple Mail (2.388) Subject: PATCH: Support for Pascal strings -- Take 3 --Apple-Mail-870346906-5 Content-Transfer-Encoding: 7bit Content-Type: text/plain; format=flowed; charset=us-ascii Ok, take 3 is a bit less lean than take 2 (though just as mean), due to fleshing out of documentation and test cases. Also, I'm attaching the diff rather than pasting it in, to preserve all the tabs. Please let me know if you're unable to open the attachment. 2001-07-02 Ziemowit Laski * gcc/c-common.c: Support for Pascal string concatenation (combine_string) * gcc/c-common.h: Add CTI_PASCAL_STRING_TYPE, pascal_string_type_node * gcc/c-lex.c: Creation of Pascal string literals (lex_string) * gcc/c-typeck.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/flags.h: Add 'flag_pascal_strings' extern decl * gcc/toplev.c: Add '-fpascal-strings' command-line option * gcc/cp/decl2.c: Add '-fpascal-strings' command-line option * gcc/cp/typeck2.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/doc/extend.texi: Add description of '-fpascal-strings' * gcc/doc/invoke.texi: Add description of '-fpascal-strings' * gcc/testsuite/g++.dg/pascal-strings-1.C: New C++ test case * gcc/testsuite/g++.dg/pascal-strings-2.C: New C++ test case * gcc/testsuite/gcc.dg/pascal-strings-1.c: New C test case * gcc/testsuite/gcc.dg/pascal-strings-2.c: New C test case -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 --Apple-Mail-870346906-5 Content-Type: multipart/mixed; boundary=Apple-Mail-704318923-6 --Apple-Mail-704318923-6 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii; format=flowed Ok, take 3 is a bit less lean than take 2 (though just as mean), due to fleshing out of documentation and test cases. Also, I'm attaching the diff rather than pasting it in, to preserve all the tabs. Please let me know if you're unable to open the attachment. 2001-07-02 Ziemowit Laski * gcc/c-common.c: Support for Pascal string concatenation (combine_string) * gcc/c-common.h: Add CTI_PASCAL_STRING_TYPE, pascal_string_type_node * gcc/c-lex.c: Creation of Pascal string literals (lex_string) * gcc/c-typeck.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/flags.h: Add 'flag_pascal_strings' extern decl * gcc/toplev.c: Add '-fpascal-strings' command-line option * gcc/cp/decl2.c: Add '-fpascal-strings' command-line option * gcc/cp/typeck2.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/doc/extend.texi: Add description of '-fpascal-strings' * gcc/doc/invoke.texi: Add description of '-fpascal-strings' * gcc/testsuite/g++.dg/pascal-strings-1.C: New C++ test case * gcc/testsuite/g++.dg/pascal-strings-2.C: New C++ test case * gcc/testsuite/gcc.dg/pascal-strings-1.c: New C test case * gcc/testsuite/gcc.dg/pascal-strings-2.c: New C test case --Apple-Mail-704318923-6 Content-Disposition: attachment; filename="gcc3_pascal_strings.diff" Content-Type: application/octet-stream; name="gcc3_pascal_strings.diff"; x-unix-mode=0664 Content-Transfer-Encoding: quoted-printable Index:=20gcc/c-common.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/c-common.c,v=0Aretrieving=20revision=20= 1.15=0Adiff=20-c=20-3=20-p=20-r1.15=20c-common.c=0A***=20c-common.c=09= 2001/06/29=2022:16:08=091.15=0A---=20c-common.c=092001/07/02=2022:54:00=0A= ***************=20APPLE=20LOCAL:=20AltiVec=0A***=20151,156=20****=0A---=20= 151,161=20----=0A=20=20=0A=20=20=09tree=20char_array_type_node;=0A=20=20=0A= +=20=20=20=20Type=20`unsigned=20char[SOMENUMBER]'.=0A+=20=20=20=20Used=20= for=20pascal-type=20strings=20("\pstring").=0A+=20=0A+=20=09tree=20= pascal_string_type_node;=0A+=20=0A=20=20=20=20=20Type=20= `int[SOMENUMBER]'=20or=20something=20like=20it.=0A=20=20=20=20=20Used=20= when=20an=20array=20of=20int=20needed=20and=20the=20size=20is=20= irrelevant.=0A=20=20=0A***************=20int=20flag_short_wchar;=0A***=20= 206,211=20****=0A---=20211,221=20----=0A=20=20/*=20Nonzero=20means=20= enable=20AltiVec=20extensions.=20=20*/=0A=20=20int=20flag_altivec;=0A=20=20= =0A+=20/*=20Nonzero=20means=20initial=20"\p"=20in=20string=20becomes=20a=20= length=20byte=20and=0A+=20=20=20=20string=20type=20becomes=20_unsigned_=20= char*=20.=20=20*/=0A+=20=0A+=20int=20flag_pascal_strings;=0A+=20=0A=20=20= /*=20Nonzero=20means=20warn=20about=20possible=20violations=20of=20= sequence=20point=20rules.=20=20*/=0A=20=20=0A=20=20int=20= warn_sequence_point;=0A***************=20fname_decl=20(rid,=20id)=0A***=20= 529,534=20****=0A---=20539,556=20----=0A=20=20=20=20return=20decl;=0A=20=20= }=0A=20=20=0A+=20/*=20Given=20a=20wide=20flag=20and=20a=20pascal_string=20= flag,=0A+=20=20=20=20=20return=20the=20node=20indicating=20the=20type=20= for=20combine_strings=0A+=20=20=20=20=20to=20assign=20to=20the=20= resulting=20string.=20*/=0A+=20=0A+=20static=20tree=0A+=20= choose_string_type=20(wide_flag,=20ps_flag)=0A+=20=20=20=20=20=20int=20= wide_flag,=20ps_flag;=0A+=20{=0A+=20=20=20/*=20Pascal=20strings=20are=20= not=20supported=20in=20wide=20mode=20*/=0A+=20=20=20return=20(wide_flag=20= ?=20wchar_type_node=20:=20(ps_flag=20?=20unsigned_char_type_node=20:=20= char_type_node));=0A+=20}=0A+=20=0A=20=20/*=20Given=20a=20chain=20of=20= STRING_CST=20nodes,=0A=20=20=20=20=20concatenate=20them=20into=20one=20= STRING_CST=0A=20=20=20=20=20and=20give=20it=20a=20suitable=20= array-of-chars=20data=20type.=20=20*/=0A***************=20= combine_strings=20(strings)=0A***=20544,550=20****=0A---=20566,580=20= ----=0A=20=20=20=20int=20wchar_bytes=20=3D=20TYPE_PRECISION=20= (wchar_type_node)=20/=20BITS_PER_UNIT;=0A=20=20=20=20int=20nchars;=0A=20=20= =20=20const=20int=20nchars_max=20=3D=20flag_isoc99=20?=204095=20:=20509;=0A= +=20=20=20int=20is_pascal_string=20=3D=200;=0A=20=20=0A+=20=20=20/*=20If=20= first=20string=20is=20a=20pascal-string,=20that=20"wins".=20*/=0A+=20=20=20= if=20(TREE_TYPE=20(strings)=20=3D=3D=20pascal_string_type_node)=0A+=20=20= =20=20=20{=0A+=20=20=20=20=20=20=20is_pascal_string=20=3D=201;=0A+=20=20=20= =20=20=20=20length=20=3D=202;=20=20=20/*=20account=20for=20the=20\p=20= length=20byte,=20and=20the=20NUL.=20*/=0A+=20=20=20=20=20}=0A+=20=0A=20=20= =20=20if=20(TREE_CHAIN=20(strings))=0A=20=20=20=20=20=20{=0A=20=20=20=20=20= =20=20=20/*=20More=20than=20one=20in=20the=20chain,=20so=20concatenate.=20= =20*/=0A***************=20combine_strings=20(strings)=0A***=20560,565=20= ****=0A---=20590,605=20----=0A=20=20=09=20=20=20=20=20=20wide_length=20= +=3D=20(TREE_STRING_LENGTH=20(t)=20-=20wchar_bytes);=0A=20=20=09=20=20=20= =20=20=20wide_flag=20=3D=201;=0A=20=20=09=20=20=20=20}=0A+=20=09=20=20= else=20if=20(TREE_TYPE=20(t)=20=3D=3D=20pascal_string_type_node)=0A+=20=09= =20=20=20=20{=0A+=20=09=20=20=20=20=20=20/*=20This=20one=20is=20a=20= pascal-string=20--=20don't=20count=20its=0A+=20=09=09=20length=20byte.=20= =20*/=0A+=20=09=20=20=20=20=20=20length=20+=3D=20(TREE_STRING_LENGTH=20= (t)=20-=202);=0A+=20=0A+=20=09=20=20=20=20=20=20/*=20If=20the=20first=20= string=20was=20*not*=20a=20Pascal=20string,=20emit=20an=20error.=20*/=0A= +=20=09=20=20=20=20=20=20if=20(t=20!=3D=20strings=20&&=20= !is_pascal_string)=0A+=20=09=20=20=20=20=20=20=20=20error=20("Pascal=20= string-length=20escape=20(\\p)=20not=20allowed=20in=20concatenation");=0A= +=20=09=20=20=20=20}=0A=20=20=09=20=20else=0A=20=20=09=20=20=20=20length=20= +=3D=20(TREE_STRING_LENGTH=20(t)=20-=201);=0A=20=20=09}=0A= ***************=20combine_strings=20(strings)=0A***=20576,589=20****=0A=20= =20=09=20for=20any=20individual=20strings=20that=20are=20not=20wide.=20=20= */=0A=20=20=0A=20=20=20=20=20=20=20=20q=20=3D=20p;=0A=20=20=20=20=20=20=20= =20for=20(t=20=3D=20strings;=20t;=20t=20=3D=20TREE_CHAIN=20(t))=0A=20=20=09= {=0A=20=20=09=20=20int=20len=20=3D=20(TREE_STRING_LENGTH=20(t)=0A=20=20=09= =09=20=20=20=20=20-=20((TREE_TYPE=20(t)=20=3D=3D=20= wchar_array_type_node)=0A=20=20=09=09=09?=20wchar_bytes=20:=201));=0A=20=20= =09=20=20if=20((TREE_TYPE=20(t)=20=3D=3D=20wchar_array_type_node)=20=3D=3D= =20wide_flag)=0A=20=20=09=20=20=20=20{=0A!=20=09=20=20=20=20=20=20memcpy=20= (q,=20TREE_STRING_POINTER=20(t),=20len);=0A=20=20=09=20=20=20=20=20=20q=20= +=3D=20len;=0A=20=20=09=20=20=20=20}=0A=20=20=09=20=20else=0A---=20= 616,635=20----=0A=20=20=09=20for=20any=20individual=20strings=20that=20= are=20not=20wide.=20=20*/=0A=20=20=0A=20=20=20=20=20=20=20=20q=20=3D=20= p;=0A+=20=20=20=20=20=20=20if=20(is_pascal_string)=0A+=20=09++q;=0A=20=20= =20=20=20=20=20=20for=20(t=20=3D=20strings;=20t;=20t=20=3D=20TREE_CHAIN=20= (t))=0A=20=20=09{=0A=20=20=09=20=20int=20len=20=3D=20(TREE_STRING_LENGTH=20= (t)=0A=20=20=09=09=20=20=20=20=20-=20((TREE_TYPE=20(t)=20=3D=3D=20= wchar_array_type_node)=0A=20=20=09=09=09?=20wchar_bytes=20:=201));=0A+=20= =09=20=20char=20*string_ptr=20=3D=20TREE_STRING_POINTER=20(t);=0A+=20=09=20= =20/*=20Skip=20the=20length=20byte=20in=20Pascal=20strings.=20*/=0A+=20=09= =20=20if=20(TREE_TYPE=20(t)=20=3D=3D=20pascal_string_type_node)=0A+=20=09= =20=20=20=20++string_ptr,=20--len;=0A=20=20=09=20=20if=20((TREE_TYPE=20= (t)=20=3D=3D=20wchar_array_type_node)=20=3D=3D=20wide_flag)=0A=20=20=09=20= =20=20=20{=0A!=20=09=20=20=20=20=20=20memcpy=20(q,=20string_ptr,=20len);=0A= =20=20=09=20=20=20=20=20=20q=20+=3D=20len;=0A=20=20=09=20=20=20=20}=0A=20= =20=09=20=20else=0A***************=20combine_strings=20(strings)=0A***=20= 593,606=20****=0A=20=20=09=09{=0A=20=20=09=09=20=20if=20= (BYTES_BIG_ENDIAN)=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20= =20for=20(j=3D0;=20j<(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)-1;=20j++)=0A=20= =20=09=09=09*q++=20=3D=200;=0A!=20=09=09=20=20=20=20=20=20*q++=20=3D=20= TREE_STRING_POINTER=20(t)[i];=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09=20= =20else=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20=20*q++=20= =3D=20TREE_STRING_POINTER=20(t)[i];=0A!=20=09=09=20=20=20=20=20=20for=20= (j=3D0;=20j<(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)-1;=20j++)=0A=20=20=09=09= =09*q++=20=3D=200;=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09}=0A---=20= 639,652=20----=0A=20=20=09=09{=0A=20=20=09=09=20=20if=20= (BYTES_BIG_ENDIAN)=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20= =20for=20(j=20=3D=200;=20j=20<=20(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)=20= -=201;=20j++)=0A=20=20=09=09=09*q++=20=3D=200;=0A!=20=09=09=20=20=20=20=20= =20*q++=20=3D=20string_ptr[i];=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09= =20=20else=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20=20= *q++=20=3D=20string_ptr[i];=0A!=20=09=09=20=20=20=20=20=20for=20(j=20=3D=20= 0;=20j=20<=20(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)=20-=201;=20j++)=0A=20=20= =09=09=09*q++=20=3D=200;=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09}=0A= ***************=20combine_strings=20(strings)=0A***=20615,620=20****=0A= ---=20661,675=20----=0A=20=20=20=20=20=20=20=20else=0A=20=20=09*q=20=3D=20= 0;=0A=20=20=0A+=20=20=20=20=20=20=20if=20(is_pascal_string)=0A+=20=09{=0A= +=20=09=20=20*p=20=3D=20length=20-=202;=0A+=20=09=20=20if=20(length=20-=20= 2=20>=20255)=0A+=20=09=20=20=20=20{=0A+=20=09=20=20=20=20=20=20error=20= ("Pascal=20string=20too=20long");=0A+=20=09=20=20=20=20}=0A+=20=09}=0A+=20= =0A=20=20=20=20=20=20=20=20value=20=3D=20build_string=20(length,=20p);=0A= =20=20=20=20=20=20}=0A=20=20=20=20else=0A***************=20= combine_strings=20(strings)=0A***=20640,646=20****=0A=20=20=20=20=20=20=20= =20&&=20(!=20flag_traditional=20=20&&=20!=20flag_writable_strings))=0A=20= =20=20=20=20=20{=0A=20=20=20=20=20=20=20=20tree=20elements=0A!=20=09=3D=20= build_type_variant=20(wide_flag=20?=20wchar_type_node=20:=20= char_type_node,=0A=20=20=09=09=09=20=20=20=20=20=201,=200);=0A=20=20=20=20= =20=20=20=20TREE_TYPE=20(value)=0A=20=20=09=3D=20build_array_type=20= (elements,=0A---=20695,701=20----=0A=20=20=20=20=20=20=20=20&&=20(!=20= flag_traditional=20=20&&=20!=20flag_writable_strings))=0A=20=20=20=20=20=20= {=0A=20=20=20=20=20=20=20=20tree=20elements=0A!=20=09=3D=20= build_type_variant=20(choose_string_type=20(wide_flag,=20= is_pascal_string),=0A=20=20=09=09=09=20=20=20=20=20=201,=200);=0A=20=20=20= =20=20=20=20=20TREE_TYPE=20(value)=0A=20=20=09=3D=20build_array_type=20= (elements,=0A***************=20combine_strings=20(strings)=0A***=20= 648,654=20****=0A=20=20=20=20=20=20}=0A=20=20=20=20else=0A=20=20=20=20=20= =20TREE_TYPE=20(value)=0A!=20=20=20=20=20=20=20=3D=20build_array_type=20= (wide_flag=20?=20wchar_type_node=20:=20char_type_node,=0A=20=20=09=09=09=20= =20build_index_type=20(build_int_2=20(nchars=20-=201,=200)));=0A=20=20=0A= =20=20=20=20TREE_CONSTANT=20(value)=20=3D=201;=0A---=20703,709=20----=0A=20= =20=20=20=20=20}=0A=20=20=20=20else=0A=20=20=20=20=20=20TREE_TYPE=20= (value)=0A!=20=20=20=20=20=20=20=3D=20build_array_type=20= (choose_string_type=20(wide_flag,=20is_pascal_string),=0A=20=20=09=09=09=20= =20build_index_type=20(build_int_2=20(nchars=20-=201,=200)));=0A=20=20=0A= =20=20=20=20TREE_CONSTANT=20(value)=20=3D=201;=0A***************=20= c_common_nodes_and_builtins=20()=0A***=203099,3104=20****=0A---=20= 3154,3162=20----=0A=20=20=20=20=20=20=20array=20type.=20=20*/=0A=20=20=20= =20char_array_type_node=0A=20=20=20=20=20=20=3D=20build_array_type=20= (char_type_node,=20array_domain_type);=0A+=20=20=20/*=20Pascal-type=20= strings=20("\pstuff")=20must=20be=20unsigned=20char*=20*/=0A+=20=20=20= pascal_string_type_node=0A+=20=20=20=20=20=3D=20build_array_type=20= (unsigned_char_type_node,=20array_domain_type);=0A=20=20=0A=20=20=20=20= /*=20Likewise=20for=20arrays=20of=20ints.=20=20*/=0A=20=20=20=20= int_array_type_node=0AIndex:=20gcc/c-common.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/c-common.h,v=0Aretrieving=20revision=20= 1.13=0Adiff=20-c=20-3=20-p=20-r1.13=20c-common.h=0A***=20c-common.h=09= 2001/06/26=2000:46:16=091.13=0A---=20c-common.h=092001/07/02=2022:54:00=0A= ***************=20enum=20c_tree_index=0A***=20142,147=20****=0A---=20= 142,148=20----=0A=20=20=20=20=20=20CTI_WIDEST_UINT_LIT_TYPE,=0A=20=20=0A=20= =20=20=20=20=20CTI_CHAR_ARRAY_TYPE,=0A+=20=20=20=20=20= CTI_PASCAL_STRING_TYPE,=20=20=20=20/*=20for=20Pascal=20strings=20*/=0A=20= =20=20=20=20=20CTI_WCHAR_ARRAY_TYPE,=0A=20=20=20=20=20=20= CTI_INT_ARRAY_TYPE,=0A=20=20=20=20=20=20CTI_STRING_TYPE,=0A= ***************=20struct=20c_common_identifier=0A***=20205,210=20****=0A= ---=20206,212=20----=0A=20=20#define=20c_bool_false_node=09=09= c_global_trees[CTI_C_BOOL_FALSE]=0A=20=20=0A=20=20#define=20= char_array_type_node=09=09c_global_trees[CTI_CHAR_ARRAY_TYPE]=0A+=20= #define=20pascal_string_type_node=20=09= c_global_trees[CTI_PASCAL_STRING_TYPE]=0A=20=20#define=20= wchar_array_type_node=09=09c_global_trees[CTI_WCHAR_ARRAY_TYPE]=0A=20=20= #define=20int_array_type_node=09=09c_global_trees[CTI_INT_ARRAY_TYPE]=0A=20= =20#define=20string_type_node=09=09c_global_trees[CTI_STRING_TYPE]=0A= Index:=20gcc/c-lex.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/c-lex.c,v=0Aretrieving=20revision=20= 1.10=0Adiff=20-c=20-3=20-p=20-r1.10=20c-lex.c=0A***=20c-lex.c=09= 2001/05/29=2023:13:07=091.10=0A---=20c-lex.c=092001/07/02=2022:54:00=0A= ***************=20lex_string=20(str,=20len,=20wide)=0A***=201293,1298=20= ****=0A---=201293,1299=20----=0A=20=20=20=20unsigned=20int=20c;=0A=20=20=20= =20unsigned=20width=20=3D=20wide=20?=20WCHAR_TYPE_SIZE=0A=20=20=09=09=09= :=20TYPE_PRECISION=20(char_type_node);=0A+=20=20=20int=20= is_pascal_string=20=3D=200,=20is_pascal_escape=20=3D=200;=0A=20=20=0A=20=20= #ifdef=20MULTIBYTE_CHARS=0A=20=20=20=20/*=20Reset=20multibyte=20= conversion=20state.=20=20*/=0A***************=20lex_string=20(str,=20= len,=20wide)=0A***=201321,1326=20****=0A---=201322,1328=20----=0A=20=20=20= =20=20=20=20=20c=20=3D=20*p++;=0A=20=20#endif=0A=20=20=0A+=20=20=20=20=20= =20=20is_pascal_escape=20=3D=200;=0A=20=20=20=20=20=20=20=20if=20(c=20=3D=3D= =20'\\'=20&&=20!ignore_escape_flag)=0A=20=20=09{=0A=20=20=09=20=20= unsigned=20int=20mask;=0A***************=20lex_string=20(str,=20len,=20= wide)=0A***=201329,1339=20****=0A=20=20=09=20=20=20=20mask=20=3D=20= ((unsigned=20int)=201=20<<=20width)=20-=201;=0A=20=20=09=20=20else=0A=20=20= =09=20=20=20=20mask=20=3D=20~0;=0A!=20=09=20=20c=20=3D=20= cpp_parse_escape=20(parse_in,=20(const=20unsigned=20char=20**)=20&p,=0A!=20= =09=09=09=09(const=20unsigned=20char=20*)=20limit,=0A!=20=09=09=09=09= mask,=20flag_traditional);=0A=20=20=09}=0A=20=20=09=0A=20=20=20=20=20=20=20= =20/*=20Add=20this=20single=20character=20into=20the=20buffer=20either=20= as=20a=20wchar_t=0A=20=20=09=20or=20as=20a=20single=20byte.=20=20*/=0A=20= =20=20=20=20=20=20=20if=20(wide)=0A---=201331,1364=20----=0A=20=20=09=20=20= =20=20mask=20=3D=20((unsigned=20int)=201=20<<=20width)=20-=201;=0A=20=20=09= =20=20else=0A=20=20=09=20=20=20=20mask=20=3D=20~0;=0A!=20=0A!=20=09=20=20= if(flag_pascal_strings=20&&=20*p=20=3D=3D=20'p')=0A!=20=09=20=20=20=20{=0A= !=20=09=20=20=20=20=20=20is_pascal_escape=20=3D=201;=0A!=20=09=20=20=20=20= =20=20p++;=0A!=20=09=20=20=20=20}=0A!=20=09=20=20else=0A!=20=09=20=20=20=20= c=20=3D=20cpp_parse_escape=20(parse_in,=20(const=20unsigned=20char=20**)=20= &p,=0A!=20=09=09=09=09=20=20(const=20unsigned=20char=20*)=20limit,=0A!=20= =09=09=09=09=20=20mask,=20flag_traditional);=0A=20=20=09}=0A=20=20=09=0A= +=20=0A+=20=20=20=20=20=20=20/*=20Pascal=20string-length=20escape=20(\p)=20= may=20appear=20only=20as=20first=20char=20of=20a=20string=0A+=20=09=20= literal,=20and=20never=20in=20wide=20strings.=20*/=0A+=20=20=20=20=20=20=20= if=20(is_pascal_escape)=0A+=20=09{=0A+=20=09=20=20if=20(wide=20||=20q=20= !=3D=20buf)=0A+=20=09=20=20=20=20{=0A+=20=09=20=20=20=20=20=20error=20= (wide?=0A+=20=09=09=20=20=20=20=20=20=20"Pascal=20string-length=20escape=20= (\\p)=20not=20allowed=20in=20wide=20string":=0A+=20=09=09=20=20=20=20=20=20= =20"Pascal=20string-length=20escape=20(\\p)=20must=20be=20at=20beginning=20= of=20string");=0A+=20=09=20=20=20=20=20=20c=20=3D=20'p';=0A+=20=09=20=20=20= =20}=0A+=20=09=20=20else=0A+=20=09=20=20=20=20is_pascal_string=20=3D=20= 1;=0A+=20=09}=0A+=20=0A=20=20=20=20=20=20=20=20/*=20Add=20this=20single=20= character=20into=20the=20buffer=20either=20as=20a=20wchar_t=0A=20=20=09=20= or=20as=20a=20single=20byte.=20=20*/=0A=20=20=20=20=20=20=20=20if=20= (wide)=0A***************=20lex_string=20(str,=20len,=20wide)=0A***=20= 1362,1367=20****=0A---=201387,1403=20----=0A=20=20=09}=0A=20=20=20=20=20=20= }=0A=20=20=0A+=20=20=20/*=20Truncate=20pascal=20string=20to=20255=20= chars=20+=20length=20byte=20*/=0A+=20=20=20if=20(is_pascal_string)=0A+=20= =20=20=20=20{=0A+=20=20=20=20=20=20=20if=20(q=20-=20buf=20>=20256)=0A+=20= =09{=0A+=20=09=20=20error=20("Pascal=20string=20too=20long");=0A+=20=09=20= =20q=20=3D=20buf=20+=20256;=0A+=20=09}=0A+=20=20=20=20=20=20=20*buf=20=3D=20= q=20-=20buf=20-=201;=20=20=20/*=20initialize=20length=20byte=20*/=0A+=20=20= =20=20=20}=0A+=20=0A=20=20=20=20/*=20Terminate=20the=20string=20value,=20= either=20with=20a=20single=20byte=20zero=0A=20=20=20=20=20=20=20or=20= with=20a=20wide=20zero.=20=20*/=0A=20=20=0A***************=20lex_string=20= (str,=20len,=20wide)=0A***=201379,1384=20****=0A---=201415,1422=20----=0A= =20=20=0A=20=20=20=20if=20(wide)=0A=20=20=20=20=20=20TREE_TYPE=20(value)=20= =3D=20wchar_array_type_node;=0A+=20=20=20else=20if=20(is_pascal_string)=0A= +=20=20=20=20=20TREE_TYPE=20(value)=20=3D=20pascal_string_type_node;=0A=20= =20=20=20else=0A=20=20=20=20=20=20TREE_TYPE=20(value)=20=3D=20= char_array_type_node;=0A=20=20=20=20return=20value;=0AIndex:=20= gcc/c-typeck.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/c-typeck.c,v=0Aretrieving=20revision=20= 1.12=0Adiff=20-c=20-3=20-p=20-r1.12=20c-typeck.c=0A***=20c-typeck.c=09= 2001/06/29=2022:16:08=091.12=0A---=20c-typeck.c=092001/07/02=2022:54:00=0A= ***************=20digest_init=20(type,=20init,=20require_constan=0A***=20= 4867,4879=20****=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09=20=20=20=20=20=20=20= !=3D=20char_type_node)=0A=20=20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20= (typ1)=20=3D=3D=20TYPE_PRECISION=20(char_type_node))=0A=20=20=09=20=20=20= =20{=0A=20=20=09=20=20=20=20=20=20error_init=20("char-array=20= initialized=20from=20wide=20string");=0A=20=20=09=20=20=20=20=20=20= return=20error_mark_node;=0A=20=20=09=20=20=20=20}=0A!=20=09=20=20if=20= ((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09= =20=20=20=20=20=20=20=3D=3D=20char_type_node)=0A=20=20=09=20=20=20=20=20=20= &&=20TYPE_PRECISION=20(typ1)=20!=3D=20TYPE_PRECISION=20(char_type_node))=0A= =20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20error_init=20= ("int-array=20initialized=20from=20non-wide=20string");=0A---=20= 4867,4883=20----=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09=20=20=20=20=20=20=20= !=3D=20char_type_node)=0A+=20=09=20=20=20=20=20=20&&=20= (TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A+=20=09=20= =20=20=20=20=20=20!=3D=20unsigned_char_type_node)=0A=20=20=09=20=20=20=20= =20=20&&=20TYPE_PRECISION=20(typ1)=20=3D=3D=20TYPE_PRECISION=20= (char_type_node))=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20= error_init=20("char-array=20initialized=20from=20wide=20string");=0A=20=20= =09=20=20=20=20=20=20return=20error_mark_node;=0A=20=20=09=20=20=20=20}=0A= !=20=09=20=20if=20(((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20= (inside_init)))=0A=20=20=09=20=20=20=20=20=20=20=3D=3D=20char_type_node)=0A= +=20=09=20=20=20=20=20=20||=20(TYPE_MAIN_VARIANT=20(TREE_TYPE=20= (TREE_TYPE=20(inside_init)))=0A+=20=09=20=20=20=20=20=20=20=3D=3D=20= unsigned_char_type_node))=0A=20=20=09=20=20=20=20=20=20&&=20= TYPE_PRECISION=20(typ1)=20!=3D=20TYPE_PRECISION=20(char_type_node))=0A=20= =20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20error_init=20= ("int-array=20initialized=20from=20non-wide=20string");=0AIndex:=20= gcc/flags.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/flags.h,v=0Aretrieving=20revision=20= 1.4=0Adiff=20-c=20-3=20-p=20-r1.4=20flags.h=0A***=20flags.h=092001/05/29=20= 23:13:11=091.4=0A---=20flags.h=092001/07/02=2022:54:00=0A***************=20= extern=20int=20flag_print_asm_name;=0A***=20221,226=20****=0A---=20= 221,231=20----=0A=20=20=0A=20=20extern=20int=20flag_signed_char;=0A=20=20= =0A+=20/*=20Nonzero=20means=20initial=20"\p"=20in=20string=20becomes=20a=20= length=20byte=20and=0A+=20=20=20=20string=20type=20becomes=20_unsigned_=20= char*=20.=20=20*/=0A+=20=0A+=20extern=20int=20flag_pascal_strings;=0A+=20= =0A=20=20/*=20Nonzero=20means=20give=20an=20enum=20type=20only=20as=20= many=20bytes=20as=20it=20needs.=20=20*/=0A=20=20=0A=20=20extern=20int=20= flag_short_enums;=0AIndex:=20gcc/toplev.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/toplev.c,v=0Aretrieving=20revision=20= 1.23=0Adiff=20-c=20-3=20-p=20-r1.23=20toplev.c=0A***=20toplev.c=09= 2001/06/29=2022:16:10=091.23=0A---=20toplev.c=092001/07/02=2022:54:02=0A= ***************=20lang_independent_options=20f_options[]=20=3D=0A***=20= 1179,1184=20****=0A---=201179,1186=20----=0A=20=20=20=20=20N_("Report=20= on=20permanent=20memory=20allocation=20at=20end=20of=20run")=20},=0A=20=20= =20=20{=20"trapv",=20&flag_trapv,=201,=0A=20=20=20=20=20N_("Trap=20for=20= signed=20overflow=20in=20addition=20/=20subtraction=20/=20= multiplication.")=20},=0A+=20=20=20{=20"pascal-strings",=20= &flag_pascal_strings,=201,=0A+=20=20=20=20N_("Allow=20Pascal-style=20= string=20literals.")=20},=0A=20=20};=0A=20=20=0A=20=20/*=20Table=20of=20= language-specific=20options.=20=20*/=0AIndex:=20gcc/cp/decl2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/cp/decl2.c,v=0Aretrieving=20revision=20= 1.18=0Adiff=20-c=20-3=20-p=20-r1.18=20decl2.c=0A***=20decl2.c=09= 2001/06/29=2022:16:15=091.18=0A---=20decl2.c=092001/07/02=2022:54:03=0A= ***************=20lang_f_options[]=20=3D=0A***=20454,459=20****=0A---=20= 454,460=20----=0A=20=20=20=20{"short-wchar",=20&flag_short_wchar,=201},=0A= =20=20=20=20{"asm",=20&flag_no_asm,=200},=0A=20=20=20=20{"builtin",=20= &flag_no_builtin,=200},=0A+=20=20=20{"pascal-strings",=20= &flag_pascal_strings,=201},=0A=20=20=0A=20=20=20=20/*=20C++-only=20= options.=20=20*/=0A=20=20=20=20{"access-control",=20= &flag_access_control,=201},=0AIndex:=20gcc/cp/typeck2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/cp/typeck2.c,v=0Aretrieving=20= revision=201.1.1.8=0Adiff=20-c=20-3=20-p=20-r1.1.1.8=20typeck2.c=0A***=20= typeck2.c=092001/06/12=2023:38:00=091.1.1.8=0A---=20typeck2.c=09= 2001/07/02=2022:54:03=0A***************=20digest_init=20(type,=20init,=20= tail)=0A***=20519,531=20****=0A=20=20=0A=20=20=09=20=20if=20= ((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20= =20=20=20=20=20=20!=3D=20char_type_node)=0A=20=20=09=20=20=20=20=20=20&&=20= TYPE_PRECISION=20(typ1)=20=3D=3D=20BITS_PER_UNIT)=0A=20=20=09=20=20=20=20= {=0A=20=20=09=20=20=20=20=20=20error=20("char-array=20initialized=20from=20= wide=20string");=0A=20=20=09=20=20=20=20=20=20return=20error_mark_node;=0A= =20=20=09=20=20=20=20}=0A!=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20=20=20=20=20=20=20=3D=3D= =20char_type_node)=0A=20=20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20= (typ1)=20!=3D=20BITS_PER_UNIT)=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20= =20=20=20=20error=20("int-array=20initialized=20from=20non-wide=20= string");=0A---=20519,535=20----=0A=20=20=0A=20=20=09=20=20if=20= ((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20= =20=20=20=20=20=20!=3D=20char_type_node)=0A+=20=09=20=20=20=20=20=20&&=20= (TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(string)))=0A+=20=09=20=20= =20=20=20=20=20!=3D=20unsigned_char_type_node)=20=0A=20=20=09=20=20=20=20= =20=20&&=20TYPE_PRECISION=20(typ1)=20=3D=3D=20BITS_PER_UNIT)=0A=20=20=09=20= =20=20=20{=0A=20=20=09=20=20=20=20=20=20error=20("char-array=20= initialized=20from=20wide=20string");=0A=20=20=09=20=20=20=20=20=20= return=20error_mark_node;=0A=20=20=09=20=20=20=20}=0A!=20=09=20=20if=20= (((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20= =20=20=20=20=20=20=3D=3D=20char_type_node)=0A+=20=09=20=20=20=20=20=20||=20= (TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(string)))=0A+=20=09=20=20= =20=20=20=20=20=3D=3D=20unsigned_char_type_node))=09=20=20=20=20=20=20=20= =0A=20=20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20(typ1)=20!=3D=20= BITS_PER_UNIT)=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20= error=20("int-array=20initialized=20from=20non-wide=20string");=0AIndex:=20= gcc/doc/extend.texi=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/doc/extend.texi,v=0Aretrieving=20= revision=201.1.1.4=0Adiff=20-c=20-3=20-p=20-r1.1.1.4=20extend.texi=0A***=20= extend.texi=092001/06/29=2020:40:49=091.1.1.4=0A---=20extend.texi=09= 2001/07/02=2022:54:03=0A***************=20extensions,=20accepted=20by=20= GCC=20in=20C89=20mode=20=0A***=2059,64=20****=0A---=2059,66=20----=0A=20=20= *=20C++=20Comments::=20=20=20=20=20=20=20=20C++=20comments=20are=20= recognized.=0A=20=20*=20Dollar=20Signs::=20=20=20=20=20=20=20=20Dollar=20= sign=20is=20allowed=20in=20identifiers.=0A=20=20*=20Character=20= Escapes::=20=20=20@samp{\e}=20stands=20for=20the=20character=20= @key{ESC}.=0A+=20*=20Pascal=20Strings::=20=20=20=20=20=20Constructing=20= string=20literals=20with=20a=20Pascal-style=20=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20length=20byte.=0A=20= =20*=20Variable=20Attributes::=09Specifying=20attributes=20of=20= variables.=0A=20=20*=20Type=20Attributes::=09Specifying=20attributes=20= of=20types.=0A=20=20*=20Alignment::=20=20=20=20=20=20=20=20=20=20=20= Inquiring=20about=20the=20alignment=20of=20a=20type=20or=20variable.=0A= ***************=20machines,=20typically=20because=20the=20target=20a=0A= ***=202343,2348=20****=0A---=202345,2394=20----=0A=20=20You=20can=20use=20= the=20sequence=20@samp{\e}=20in=20a=20string=20or=20character=20constant=20= to=0A=20=20stand=20for=20the=20ASCII=20character=20@key{ESC}.=0A=20=20=0A= +=20@node=20Pascal=20Strings=0A+=20@section=20Constructing=20String=20= Literals=20with=20a=20Pascal-style=20Length=20Byte=0A+=20@cindex=20= Pascal=20length=20byte=0A+=20@cindex=20Pascal=20strings=0A+=20=0A+=20= Specifying=20the=20@w{@option{-fpascal-strings}}=20option=20will=20cause=20= the=0A+=20compiler=20to=20recognize=20and=20construct=20Pascal-style=20= string=20literals.=20=20This=0A+=20functionality=20is=20disabled=20by=20= default;=20furthermore,=20its=20use=20in=20new=20code=0A+=20is=20= discouraged.=0A+=20=0A+=20Pascal=20string=20literals=20take=20the=20form=20= @samp{"\pstring"}.=20=20The=20special=0A+=20escape=20sequence=20= @samp{\p}=20denotes=20the=20Pascal=20length=20byte=20for=20the=20string,=0A= +=20and=20will=20be=20replaced=20at=20compile=20time=20with=20the=20= number=20of=20characters=20that=0A+=20follow.=20=20The=20@samp{\p}=20may=20= only=20appear=20at=20the=20beginning=20of=20a=20string=0A+=20literal,=20= and=20may=20@emph{not}=20appear=20in=20wide=20string=20literals=20or=20= as=20an=0A+=20integral=20constant.=0A+=20=0A+=20As=20is=20the=20case=20= with=20C=20string=20literals,=20Pascal=20string=20literals=20are=0A+=20= terminated=20with=20a=20NUL=20character;=20this=20character=20is=20= @emph{not}=20counted=0A+=20when=20computing=20the=20value=20of=20the=20= length=20byte.=0A+=20=0A+=20Pascal-style=20literals=20are=20treated=20by=20= the=20compiler=20as=20being=20of=20type=0A+=20@samp{const=20unsigned=20= char=20[]}=20in=20C++=20and=20@samp{unsigned=20char=20[]}=20(or=0A+=20= @samp{const=20unsigned=20char=20[]},=20if=20the=20= @w{@option{-Wwrite-strings}}=0A+=20option=20is=20given)=20in=20C.=20=20= Pascal=20string=20literals=20may=20be=20used=20as=20static=0A+=20= initializers=20for=20@samp{char}=20arrays=20(whose=20elements=20need=20= not=20be=0A+=20@samp{unsigned}=20or=20@samp{const}).=20=20They=20may=20= also=20be=20converted=20to=0A+=20@samp{const=20unsigned=20char=20*}=20= and,=20in=20the=20C=20language=20as=20@samp{const=20char=0A+=20*}=20of=20= any=20signedness=20(In=20C,=20if=20the=20@w{@option{-Wwrite-strings}}=20= is=20not=0A+=20given,=20then=20@samp{const}=20may=20be=20omitted=20as=20= well).=20=20For=20example:=0A+=20=0A+=20@example=0A+=20const=20unsigned=20= char=20a[]=20=3D=20"\pHello";=0A+=20char=20b[]=20=3D=20"\pGoodbye";=0A+=20= const=20unsigned=20char=20*c=20=3D=20"\pHello";=0A+=20const=20signed=20= char=20*d=20=3D=20"\pHello";=20=20=20=20/*=20error=20in=20C++=20*/=0A+=20= char=20*e=20=3D=20"\pHi";=20=20/*=20error=20in=20C++;=20warning=20in=20C=20= with=20-Wwrite-strings=20*/=0A+=20@end=20example=0A+=20=0A+=20@noindent=0A= +=20Pascal-style=20literals=20are=20useful=20for=20calling=20external=20= routines=20that=0A+=20expect=20Pascal=20strings=20as=20arguments,=20as=20= is=20true=20with=20some=20Apple=20MacOS=0A+=20Toolbox=20calls.=0A+=20=20=20= =0A=20=20@node=20Alignment=0A=20=20@section=20Inquiring=20on=20Alignment=20= of=20Types=20or=20Variables=0A=20=20@cindex=20alignment=0AIndex:=20= gcc/doc/invoke.texi=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/repository/CoreTools/gcc3/gcc/doc/invoke.texi,v=0Aretrieving=20= revision=201.1.1.5=0Adiff=20-c=20-3=20-p=20-r1.1.1.5=20invoke.texi=0A***=20= invoke.texi=092001/06/29=2020:40:52=091.1.1.5=0A---=20invoke.texi=09= 2001/07/02=2022:54:07=0A***************=20in=20the=20following=20= sections.=0A***=20164,170=20****=0A=20=20-fallow-single-precision=20=20= -fcond-mismatch=20@gol=0A=20=20-fsigned-bitfields=20=20-fsigned-char=20= @gol=0A=20=20-funsigned-bitfields=20=20-funsigned-char=20@gol=0A!=20= -fwritable-strings=20=20-fshort-wchar}=0A=20=20=0A=20=20@item=20C++=20= Language=20Options=0A=20=20@xref{C++=20Dialect=20Options,,Options=20= Controlling=20C++=20Dialect}.=0A---=20164,171=20----=0A=20=20= -fallow-single-precision=20=20-fcond-mismatch=20@gol=0A=20=20= -fsigned-bitfields=20=20-fsigned-char=20@gol=0A=20=20= -funsigned-bitfields=20=20-funsigned-char=20@gol=0A!=20= -fwritable-strings=20=20-fshort-wchar=20@gol=0A!=20-fpascal-strings}=0A=20= =20=0A=20=20@item=20C++=20Language=20Options=0A=20=20@xref{C++=20Dialect=20= Options,,Options=20Controlling=20C++=20Dialect}.=0A***************=20= with=20ISO=20or=20GNU=20C=20conventions=20(the=20defau=0A***=201228,1233=20= ****=0A---=201229,1241=20----=0A=20=20Override=20the=20underlying=20type=20= for=20@samp{wchar_t}=20to=20be=20@samp{short=0A=20=20unsigned=20int}=20= instead=20of=20the=20default=20for=20the=20target.=20=20This=20option=20= is=0A=20=20useful=20for=20building=20programs=20to=20run=20under=20= WINE@.=0A+=20=0A+=20@item=20-fpascal-strings=0A+=20Allow=20for=20= Pascal-style=20string=20literals=20to=20be=20constructed.=0A+=20=0A+=20= @xref{Pascal=20Strings,,Constructing=20String=20Literals=20with=20a=20= Pascal-style=0A+=20Length=20Byte},=20for=20more=20information=20on=20the=20= syntax=20and=20semantics=20of=20Pascal=0A+=20string=20literals.=0A=20=20= @end=20table=0A=20=20=0A=20=20@node=20C++=20Dialect=20Options=0AIndex:=20= gcc/testsuite/g++.dg/pascal-strings-1.C=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-1.C=0Adiff=20-N=20pascal-strings-1.C=0A***=20/dev/null=09= Mon=20Jul=20=202=2015:45:49=202001=0A---=20pascal-strings-1.C=09Mon=20= Jul=20=202=2015:54:11=202001=0A***************=0A***=200=20****=0A---=20= 1,42=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20run=20}=20*/=0A+=20/*=20{=20= dg-options=20"-fpascal-strings"=20}=20*/=0A+=20=0A+=20extern=20"C"=20= void=20abort=20(void);=0A+=20extern=20"C"=20long=20unsigned=20strlen=20= (const=20char=20*s);=0A+=20=0A+=20const=20unsigned=20char=20*pascalStr1=20= =3D=20"\pHello,=20World!";=0A+=20const=20unsigned=20char=20*concat1=20=3D=20= "\pConcatenated"=20"string"=20"\pliteral";=0A+=20=0A+=20const=20unsigned=20= char=20msg1[]=20=3D=20"\pHello";=20=20=20/*=20ok=20*/=0A+=20const=20= unsigned=20char=20*msg2=20=3D=20"\pHello";=20=20=20=20/*=20ok=20*/=0A+=20= const=20signed=20char=20msg3[]=20=3D=20"\pHello";=20=20=20=20=20/*=20ok=20= */=0A+=20const=20char=20msg4[]=20=3D=20"\pHello";=20=20=20=20=20=20=20=20= =20=20=20=20/*=20ok=20*/=0A+=20unsigned=20char=20msg5[]=20=3D=20= "\pHello";=20=20=20/*=20ok=20*/=0A+=20signed=20char=20msg7[]=20=3D=20= "\pHello";=20=20=20=20=20/*=20ok=20*/=0A+=20char=20msg8[]=20=3D=20= "\pHello";=20=20=20=20=20=20=20=20=20=20=20=20/*=20ok=20*/=0A+=20=20=20=20= =0A+=20int=0A+=20main=20(void)=0A+=20{=0A+=20=20=20const=20unsigned=20= char=20*pascalStr2=20=3D=20"\pGood-bye!";=0A+=20=0A+=20=20=20if=20= (strlen=20((const=20char=20*)pascalStr1)=20!=3D=2014)=0A+=20=20=20=20=20= abort=20();=0A+=20=20=20if=20(*pascalStr1=20!=3D=2013)=0A+=20=20=20=20=20= abort=20();=20=20/*=20the=20length=20byte=20does=20not=20include=20= trailing=20null=20*/=0A+=20=0A+=20=20=20if=20(strlen=20((const=20char=20= *)pascalStr2)=20!=3D=2010)=0A+=20=20=20=20=20abort=20();=0A+=20=20=20if=20= (*pascalStr2=20!=3D=209)=0A+=20=20=20=20=20abort=20();=0A+=20=0A+=20=20=20= if=20(strlen=20((const=20char=20*)concat1)=20!=3D=2026)=0A+=20=20=20=20=20= abort=20();=0A+=20=20=20if=20(*concat1=20!=3D=2025)=0A+=20=20=20=20=20= abort=20();=0A+=20=0A+=20=20=20return=200;=0A+=20}=0A+=20=0AIndex:=20= gcc/testsuite/g++.dg/pascal-strings-2.C=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-2.C=0Adiff=20-N=20pascal-strings-2.C=0A***=20/dev/null=09= Mon=20Jul=20=202=2015:45:49=202001=0A---=20pascal-strings-2.C=09Mon=20= Jul=20=202=2015:54:12=202001=0A***************=0A***=200=20****=0A---=20= 1,38=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20compile=20}=20*/=0A+=20/*=20= {=20dg-options=20"-fpascal-strings"=20}=20*/=0A+=20=0A+=20const=20= wchar_t=20*pascalStr1=20=3D=20L"\pHi!";=20/*=20{=20dg-error=20"not=20= allowed=20in=20wide"=20}=20*/=0A+=20const=20wchar_t=20*pascalStr2=20=3D=20= L"Bye\p!";=20/*=20{=20dg-error=20"not=20allowed=20in=20wide"=20}=20*/=0A= +=20=0A+=20const=20wchar_t=20*initErr0=20=3D=20"\pHi";=20=20=20/*=20{=20= dg-error=20"cannot=20convert"=20}=20*/=0A+=20const=20wchar_t=20= initErr0a[]=20=3D=20"\pHi";=20=20/*=20{=20dg-error=20"initialized=20from=20= non-wide=20string"=20}=20*/=0A+=20const=20wchar_t=20*initErr1=20=3D=20= "Bye";=20=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20= const=20wchar_t=20initErr1a[]=20=3D=20"Bye";=20=20=20/*=20{=20dg-error=20= "initialized=20from=20non-wide=20string"=20}=20*/=0A+=20=0A+=20const=20= char=20*initErr2=20=3D=20L"Hi";=20=20=20/*=20{=20dg-error=20"cannot=20= convert"=20}=20*/=0A+=20const=20char=20initErr2a[]=20=3D=20L"Hi";=20=20= /*=20{=20dg-error=20"initialized=20from=20wide=20string"=20}=20*/=0A+=20= const=20signed=20char=20*initErr3=20=3D=20L"Hi";=20=20/*=20{=20dg-error=20= "cannot=20convert"=20}=20*/=0A+=20const=20signed=20char=20initErr3a[]=20= =3D=20L"Hi";=20=20/*=20{=20dg-error=20"initialized=20from=20wide=20= string"=20}=20*/=0A+=20const=20unsigned=20char=20*initErr4=20=3D=20= L"Hi";=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20const=20= unsigned=20char=20initErr4a[]=20=3D=20L"Hi";=20/*=20{=20dg-error=20= "initialized=20from=20wide=20string"=20}=20*/=0A+=20=0A+=20const=20char=20= *pascalStr3=20=3D=20"Hello\p,=20World!";=20/*=20{=20dg-error=20"must=20= be=20at=20beginning"=20}=20*/=0A+=20=0A+=20const=20char=20*concat2=20=3D=20= "Hi"=20"\pthere";=20/*=20{=20dg-error=20"not=20allowed=20in=20= concatenation"=20}=20*/=0A+=20const=20char=20*concat3=20=3D=20"Hi"=20= "there\p";=20/*=20{=20dg-error=20"must=20be=20at=20beginning"=20}=20*/=0A= +=20=0A+=20const=20char=20*s2=20=3D=20"\pGoodbye!";=20=20=20/*=20{=20= dg-error=20"cannot=20convert"=20}=20*/=0A+=20unsigned=20char=20*s3=20=3D=20= "\pHi!";=20=20=20=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A= +=20char=20*s4=20=3D=20"\pHi";=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= /*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20signed=20char=20= *s5=20=3D=20"\pHi";=20=20=20=20=20=20=20=20/*=20{=20dg-error=20"cannot=20= convert"=20}=20*/=0A+=20const=20signed=20char=20*s6=20=3D=20"\pHi";=20=20= /*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20=0A+=20/*=20Pascal=20= literals=20in=20C++=20may=20be=20no=20more=20than=20255=20characters=20=0A= +=20=20=20=20(excluding=20the=20\p=20and=20the=20trailing=20NUL)=20in=20= length.=20*/=0A+=20=0A+=20const=20unsigned=20char=20*tooLong1=20=3D=0A+=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 23456789012345678901234567890123456789012345678901234567890123456789012345= 67890123456789012345678901234567890123456789012345678901234567890123456789= 0123456789012345678901234567890=0A12345";=20=20/*=20ok=20*/=0A+=20const=20= unsigned=20char=20*tooLong2=20=3D=0A+=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 23456789012345678901234567890123456789012345678901234567890123456789012345= 67890123456789012345678901234567890123456789012345678901234567890123456789= 0123456789012345678901234567890=0A123456";=20=20/*=20{=20dg-error=20"too=20= long"=20}=20*/=0AIndex:=20gcc/testsuite/gcc.dg/pascal-strings-1.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-1.c=0Adiff=20-N=20pascal-strings-1.c=0A***=20/dev/null=09= Mon=20Jul=20=202=2015:45:49=202001=0A---=20pascal-strings-1.c=09Mon=20= Jul=20=202=2015:54:21=202001=0A***************=0A***=200=20****=0A---=20= 1,44=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20run=20}=20*/=0A+=20/*=20{=20= dg-options=20"-std=3Diso9899:1999=20-fpascal-strings"=20}=20*/=0A+=20=0A= +=20typedef=20__WCHAR_TYPE__=20wchar_t;=0A+=20=0A+=20extern=20void=20= abort=20(void);=0A+=20extern=20long=20unsigned=20strlen=20(const=20char=20= *s);=0A+=20=0A+=20const=20unsigned=20char=20*pascalStr1=20=3D=20= "\pHello,=20World!";=0A+=20const=20unsigned=20char=20*concat1=20=3D=20= "\pConcatenated"=20"string"=20"\pliteral";=0A+=20=0A+=20const=20unsigned=20= char=20msg1[]=20=3D=20"\pHello";=20=20=20/*=20ok=20*/=0A+=20const=20= unsigned=20char=20*msg2=20=3D=20"\pHello";=20=20=20=20/*=20ok=20*/=0A+=20= const=20signed=20char=20msg3[]=20=3D=20"\pHello";=20=20=20=20=20/*=20ok=20= */=0A+=20const=20char=20msg4[]=20=3D=20"\pHello";=20=20=20=20=20=20=20=20= =20=20=20=20/*=20ok=20*/=0A+=20unsigned=20char=20msg5[]=20=3D=20= "\pHello";=20=20=20/*=20ok=20*/=0A+=20signed=20char=20msg7[]=20=3D=20= "\pHello";=20=20=20=20=20/*=20ok=20*/=0A+=20char=20msg8[]=20=3D=20= "\pHello";=20=20=20=20=20=20=20=20=20=20=20=20/*=20ok=20*/=0A+=20=20=20=20= =0A+=20int=0A+=20main=20(void)=0A+=20{=0A+=20=20=20const=20unsigned=20= char=20*pascalStr2=20=3D=20"\pGood-bye!";=0A+=20=0A+=20=20=20if=20= (strlen=20((const=20char=20*)pascalStr1)=20!=3D=2014)=0A+=20=20=20=20=20= abort=20();=0A+=20=20=20if=20(*pascalStr1=20!=3D=2013)=0A+=20=20=20=20=20= abort=20();=20=20/*=20the=20length=20byte=20does=20not=20include=20= trailing=20null=20*/=0A+=20=0A+=20=20=20if=20(strlen=20((const=20char=20= *)pascalStr2)=20!=3D=2010)=0A+=20=20=20=20=20abort=20();=0A+=20=20=20if=20= (*pascalStr2=20!=3D=209)=0A+=20=20=20=20=20abort=20();=0A+=20=0A+=20=20=20= if=20(strlen=20((const=20char=20*)concat1)=20!=3D=2026)=0A+=20=20=20=20=20= abort=20();=0A+=20=20=20if=20(*concat1=20!=3D=2025)=0A+=20=20=20=20=20= abort=20();=0A+=20=0A+=20=20=20return=200;=0A+=20}=0A+=20=0AIndex:=20= gcc/testsuite/gcc.dg/pascal-strings-2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-2.c=0Adiff=20-N=20pascal-strings-2.c=0A***=20/dev/null=09= Mon=20Jul=20=202=2015:45:49=202001=0A---=20pascal-strings-2.c=09Mon=20= Jul=20=202=2015:54:21=202001=0A***************=0A***=200=20****=0A---=20= 1,40=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20compile=20}=20*/=0A+=20/*=20= {=20dg-options=20"-std=3Diso9899:1999=20-Wwrite-strings=20= -fpascal-strings"=20}=20*/=0A+=20=0A+=20typedef=20__WCHAR_TYPE__=20= wchar_t;=0A+=20=0A+=20const=20wchar_t=20*pascalStr1=20=3D=20L"\pHi!";=20= /*=20{=20dg-error=20"not=20allowed=20in=20wide"=20}=20*/=0A+=20const=20= wchar_t=20*pascalStr2=20=3D=20L"Bye\p!";=20/*=20{=20dg-error=20"not=20= allowed=20in=20wide"=20}=20*/=0A+=20=0A+=20const=20wchar_t=20*initErr0=20= =3D=20"\pHi";=20=20=20/*=20{=20dg-warning=20"incompatible=20pointer=20= type"=20}=20*/=0A+=20const=20wchar_t=20initErr0a[]=20=3D=20"\pHi";=20=20= /*=20{=20dg-error=20"initialized=20from=20non-wide=20string"=20}=20*/=0A= +=20const=20wchar_t=20*initErr1=20=3D=20"Bye";=20=20=20/*=20{=20= dg-warning=20"incompatible=20pointer=20type"=20}=20*/=0A+=20const=20= wchar_t=20initErr1a[]=20=3D=20"Bye";=20=20=20/*=20{=20dg-error=20= "initialized=20from=20non-wide=20string"=20}=20*/=0A+=20=0A+=20const=20= char=20*initErr2=20=3D=20L"Hi";=20=20=20/*=20{=20dg-warning=20= "incompatible=20pointer=20type"=20}=20*/=0A+=20const=20char=20= initErr2a[]=20=3D=20L"Hi";=20=20/*=20{=20dg-error=20"initialized=20from=20= wide=20string"=20}=20*/=0A+=20const=20signed=20char=20*initErr3=20=3D=20= L"Hi";=20=20/*=20{=20dg-warning=20"incompatible=20pointer=20type"=20}=20= */=0A+=20const=20signed=20char=20initErr3a[]=20=3D=20L"Hi";=20=20/*=20{=20= dg-error=20"initialized=20from=20wide=20string"=20}=20*/=0A+=20const=20= unsigned=20char=20*initErr4=20=3D=20L"Hi";=20=20/*=20{=20dg-warning=20= "incompatible=20pointer=20type"=20}=20*/=0A+=20const=20unsigned=20char=20= initErr4a[]=20=3D=20L"Hi";=20/*=20{=20dg-error=20"initialized=20from=20= wide=20string"=20}=20*/=0A+=20=0A+=20const=20char=20*pascalStr3=20=3D=20= "Hello\p,=20World!";=20/*=20{=20dg-error=20"must=20be=20at=20beginning"=20= }=20*/=0A+=20=0A+=20const=20char=20*concat2=20=3D=20"Hi"=20"\pthere";=20= /*=20{=20dg-error=20"not=20allowed=20in=20concatenation"=20}=20*/=0A+=20= const=20char=20*concat3=20=3D=20"Hi"=20"there\p";=20/*=20{=20dg-error=20= "must=20be=20at=20beginning"=20}=20*/=0A+=20=0A+=20const=20char=20*s2=20= =3D=20"\pGoodbye!";=20=20=20/*=20ok=20*/=0A+=20unsigned=20char=20*s3=20=3D= =20"\pHi!";=20=20=20=20=20/*=20{=20dg-warning=20"initialization=20= discards=20qualifiers"=20}=20*/=0A+=20char=20*s4=20=3D=20"\pHi";=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20/*=20{=20dg-warning=20= "initialization=20discards=20qualifiers"=20}=20*/=0A+=20signed=20char=20= *s5=20=3D=20"\pHi";=20=20=20=20=20=20=20=20/*=20{=20dg-warning=20= "initialization=20discards=20qualifiers"=20}=20*/=0A+=20const=20signed=20= char=20*s6=20=3D=20"\pHi";=20=20/*=20ok=20*/=0A+=20=0A+=20/*=20Pascal=20= literals=20in=20C++=20may=20be=20no=20more=20than=20255=20characters=20=0A= +=20=20=20=20(excluding=20the=20\p=20and=20the=20trailing=20NUL)=20in=20= length.=20*/=0A+=20=0A+=20const=20unsigned=20char=20*tooLong1=20=3D=0A+=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 23456789012345678901234567890123456789012345678901234567890123456789012345= 67890123456789012345678901234567890123456789012345678901234567890123456789= 0123456789012345678901234567890=0A12345";=20=20/*=20ok=20*/=0A+=20const=20= unsigned=20char=20*tooLong2=20=3D=0A+=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 23456789012345678901234567890123456789012345678901234567890123456789012345= 67890123456789012345678901234567890123456789012345678901234567890123456789= 0123456789012345678901234567890=0A123456";=20=20/*=20{=20dg-error=20"too=20= long"=20}=20*/=0A= --Apple-Mail-704318923-6 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii; format=flowed -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 --Apple-Mail-704318923-6-- --Apple-Mail-870346906-5-- From gcc-patches-return-37952-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 00:51:14 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1033 invoked by alias); 3 Jul 2001 00:51:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 987 invoked from network); 3 Jul 2001 00:51:08 -0000 Received: from unknown (HELO lilac.csi.cam.ac.uk) (131.111.8.44) by sourceware.cygnus.com with SMTP; 3 Jul 2001 00:51:08 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by lilac.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HEPA-0003NZ-00 for gcc-patches@gcc.gnu.org; Tue, 03 Jul 2001 01:51:04 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HEP9-0000gX-00 for ; Tue, 03 Jul 2001 01:51:03 +0100 Date: Tue, 3 Jul 2001 01:51:03 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Subject: Patch for manual formatting Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII This patch makes various miscellaneous improvements to the formatting of the GCC manual, and some minor improvements to its contents. It passes "make info" and "make dvi". Applied to mainline and 3.0 branch (and manpages regenerated on branch). Having dealt with most of the obvious formatting issues in the manual, I'd encourage everyone to read the manual and improve and update the contents, now formatting patches are less likely to conflict with your changes and bad formatting should be less of a distraction. gcc: 2001-07-03 Joseph S. Myers * doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Improve formatting. Improve documentation of -std and -Wwrite-strings. contrib: 2001-07-03 Joseph S. Myers * texi2pod.pl: Handle @r inside @item. diff -ruN gcc.orig/doc/extend.texi gcc/doc/extend.texi --- gcc.orig/doc/extend.texi Fri Jun 29 09:21:22 2001 +++ gcc/doc/extend.texi Mon Jul 2 23:20:52 2001 @@ -387,6 +387,7 @@ function which uses an inherited variable named @code{offset}: @example +@group bar (int *array, int offset, int size) @{ int access (int *array, int index) @@ -396,6 +397,7 @@ for (i = 0; i < size; i++) @dots{} access (array, i) @dots{} @} +@end group @end example Nested function definitions are permitted within functions in the places @@ -886,7 +888,13 @@ @samp{0x} hex introducer and the @samp{p} or @samp{P} exponent field are mandatory. The exponent is a decimal number that indicates the power of 2 by which the significant part will be multiplied. Thus @samp{0x1.f} is -1 15/16, @samp{p3} multiplies it by 8, and the value of @code{0x1.fp3} +@tex +$1 {15\over16}$, +@end tex +@ifnottex +1 15/16, +@end ifnottex +@samp{p3} multiplies it by 8, and the value of @code{0x1.fp3} is the same as @code{1.55e1}. Unlike for floating-point numbers in the decimal notation the exponent @@ -1493,7 +1501,7 @@ @end example @noindent -both @code{x} and @code{y} can be cast to type @code{union} foo. +both @code{x} and @code{y} can be cast to type @code{union foo}. Using the cast as the right-hand side of an assignment to a variable of union type is equivalent to storing in a member of the union: @@ -1581,6 +1589,7 @@ @code{noreturn} to tell the compiler this fact. For example, @smallexample +@group void fatal () __attribute__ ((noreturn)); void @@ -1589,6 +1598,7 @@ @dots{} /* @r{Print error message.} */ @dots{} exit (1); @} +@end group @end smallexample The @code{noreturn} keyword tells the compiler to assume that @@ -1973,7 +1983,8 @@ @smallexample void *alt_stack; -void f () __attribute__ ((interrupt_handler, sp_switch ("alt_stack"))); +void f () __attribute__ ((interrupt_handler, + sp_switch ("alt_stack"))); @end smallexample @item trap_exit @@ -3181,7 +3192,7 @@ @noindent Assume @code{addr} contains the address of a memory mapped device register. The PowerPC @code{eieio} instruction (Enforce In-order -Execution of I/O) tells the cpu to make sure that the store to that +Execution of I/O) tells the CPU to make sure that the store to that device register happens before it issues any other I/O@. Note that even a volatile @code{asm} instruction can be moved in ways @@ -4725,20 +4736,20 @@ @cindex Backwards Compatibility @cindex ARM [Annotated C++ Reference Manual] -Now that there is a definitive ISO standard C++, g++ has a specification +Now that there is a definitive ISO standard C++, G++ has a specification to adhere to. The C++ language evolved over time, and features that used to be acceptable in previous drafts of the standard, such as the ARM [Annotated C++ Reference Manual], are no longer accepted. In order to allow -compilation of C++ written to such drafts, g++ contains some backwards +compilation of C++ written to such drafts, G++ contains some backwards compatibilities. @emph{All such backwards compatibility features are -liable to disappear in future versions of g++.} They should be considered +liable to disappear in future versions of G++.} They should be considered deprecated @xref{Deprecated Features}. @table @code @item For scope If a variable is declared at for scope, it used to remain in scope until the end of the scope which contained the for statement (rather than just -within the for scope). g++ retains this, but issues a warning, if such a +within the for scope). G++ retains this, but issues a warning, if such a variable is accessed outside the for scope. @item implicit C language diff -ruN gcc.orig/doc/gcc.texi gcc/doc/gcc.texi --- gcc.orig/doc/gcc.texi Mon Jul 2 21:43:56 2001 +++ gcc/doc/gcc.texi Mon Jul 2 23:24:25 2001 @@ -188,7 +188,7 @@ @sp 1 @c The version number appears five times more in this file. -@center for gcc-3.1 +@center for GCC 3.1 @page @vskip 0pt plus 1filll Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, @@ -197,7 +197,7 @@ For GCC Version 3.1@* @sp 1 Published by the Free Software Foundation @* -59 Temple Place - Suite 330@* +59 Temple Place---Suite 330@* Boston, MA 02111-1307, USA@* Last printed April, 1998.@* Printed copies are available for $50 each.@* @@ -1143,9 +1143,11 @@ will not work: @example +@group foobar ( #define luser hack) +@end group @end example ISO C does not permit such a construct. It would make sense to support @@ -3214,12 +3216,12 @@ The source files for parsing C++ are in @file{cp/}. They are @file{parse.y}, -@file{class.c},@* +@file{class.c}, @file{cvt.c}, @file{decl.c}, @file{decl2.c}, -@file{except.c},@* +@file{except.c}, @file{expr.c}, @file{init.c}, @file{lex.c}, -@file{method.c}, @file{ptree.c},@* -@file{search.c}, @file{spew.c}, @* +@file{method.c}, @file{ptree.c}, +@file{search.c}, @file{spew.c}, @file{semantics.c}, @file{tree.c}, @file{typeck2.c}, and @file{typeck.c}, along with header files @file{cp-tree.def}, diff -ruN gcc.orig/doc/invoke.texi gcc/doc/invoke.texi --- gcc.orig/doc/invoke.texi Mon Jul 2 21:43:56 2001 +++ gcc/doc/invoke.texi Mon Jul 2 23:12:51 2001 @@ -237,7 +237,8 @@ @xref{Debugging Options,,Options for Debugging Your Program or GCC}. @gccoptlist{ -a -ax -d@var{letters} -dumpspecs -dumpmachine -dumpversion @gol --fdump-unnumbered -fdump-translation-unit@r{[}-@var{n}@r{]} -fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol +-fdump-unnumbered -fdump-translation-unit@r{[}-@var{n}@r{]} @gol +-fdump-class-hierarchy@r{[}-@var{n}@r{]} @gol -fdump-ast-original@r{[}-@var{n}@r{]} -fdump-ast-optimized@r{[}-@var{n}@r{]} @gol -fdump-ast-inlined@r{[}-@var{n}@r{]} @gol -fmem-report -fpretend-float @gol @@ -288,12 +289,12 @@ -iprefix @var{file} -iwithprefix @var{dir} @gol -iwithprefixbefore @var{dir} -isystem @var{dir} @gol -M -MM -MF -MG -MP -MQ -MT -nostdinc -P -remap @gol --trigraphs -undef -U@var{macro} -Wp\,@var{option}} +-trigraphs -undef -U@var{macro} -Wp,@var{option}} @item Assembler Option @xref{Assembler Options,,Passing Options to the Assembler}. @gccoptlist{ --Wa\,@var{option}} +-Wa,@var{option}} @item Linker Options @xref{Link Options,,Options for Linking}. @@ -301,7 +302,7 @@ @var{object-file-name} -l@var{library} @gol -nostartfiles -nodefaultlibs -nostdlib @gol -s -static -static-libgcc -shared -shared-libgcc -symbolic @gol --Wl\,@var{option} -Xlinker @var{option} @gol +-Wl,@var{option} -Xlinker @var{option} @gol -u @var{symbol}} @item Directory Options @@ -526,7 +527,7 @@ @emph{System V Options} @gccoptlist{ --Qy -Qn -YP\,@var{paths} -Ym\,@var{dir}} +-Qy -Qn -YP,@var{paths} -Ym,@var{dir}} @emph{ARC Options} @gccoptlist{ @@ -876,7 +877,7 @@ remove GNU extensions that conflict with ISO C++. This turns off certain features of GCC that are incompatible with ISO -C (when compiling C code), or of standard C++ (when compiling C++ code), +C89 (when compiling C code), or of standard C++ (when compiling C++ code), such as the @code{asm} and @code{typeof} keywords, and predefined macros such as @code{unix} and @code{vax} that identify the type of system you are using. It also enables the undesirable and @@ -910,40 +911,33 @@ @item -std= @opindex std -Determine the language standard. A value for this option must be provided; +Determine the language standard. This option is currently only +supported when compiling C@. A value for this option must be provided; possible values are @table @samp -@item iso9899:1990 -Same as @option{-ansi} +@item c89 +@itemx iso9899:1990 +ISO C89 (same as @option{-ansi}). @item iso9899:199409 -ISO C as modified in amendment 1 - -@item iso9899:1999 -ISO C99. Note that this standard is not yet fully supported; see -@w{@uref{http://gcc.gnu.org/c99status.html}} for more information. - -@item c89 -same as @option{-std=iso9899:1990} +ISO C89 as modified in amendment 1. @item c99 -same as @option{-std=iso9899:1999} +@itemx c9x +@itemx iso9899:1999 +@itemx iso9899:199x +ISO C99. Note that this standard is not yet fully supported; see +@w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The +names @samp{c9x} and @samp{iso9899:199x} are deprecated. @item gnu89 -default, iso9899:1990 + gnu extensions +Default, ISO C89 plus GNU extensions (including some C99 features). @item gnu99 -iso9899:1999 + gnu extensions - -@item iso9899:199x -same as @option{-std=iso9899:1999}, deprecated - -@item c9x -same as @option{-std=iso9899:1999}, deprecated - -@item gnu9x -same as @option{-std=gnu99}, deprecated +@itemx gnu9x +ISO C99 plus GNU extensions. When ISO C99 is fully implemented in GCC, +this will become the default. The name @samp{gnu9x} is deprecated. @end table @@ -1268,7 +1262,7 @@ An alternative to using this option is to specify that your @code{operator new} does not throw any exceptions; if you declare it -@samp{throw()}, g++ will check the return value. See also @samp{new +@samp{throw()}, G++ will check the return value. See also @samp{new (nothrow)}. @item -fconserve-space @@ -1307,7 +1301,7 @@ @opindex fno-elide-constructors The C++ standard allows an implementation to omit creating a temporary which is only used to initialize another object of the same type. -Specifying this option disables that optimization, and forces g++ to +Specifying this option disables that optimization, and forces G++ to call the copy constructor in all cases. @item -fno-enforce-eh-specs @@ -1343,7 +1337,7 @@ as specified by the C++ standard. If @option{-fno-for-scope} is specified, the scope of variables declared in a @i{for-init-statement} extends to the end of the enclosing scope, -as was the case in old versions of gcc, and other (traditional) +as was the case in old versions of G++, and other (traditional) implementations of C++. The default if neither flag is given to follow the standard, @@ -1407,13 +1401,13 @@ @item -fno-optional-diags @opindex fno-optional-diags Disable diagnostics that the standard says a compiler does not need to -issue. Currently, the only such diagnostic issued by g++ is the one for +issue. Currently, the only such diagnostic issued by G++ is the one for a name having multiple meanings within a class. @item -fpermissive @opindex fpermissive Downgrade messages about nonconformant code from errors to warnings. By -default, g++ effectively sets @option{-pedantic-errors} without +default, G++ effectively sets @option{-pedantic-errors} without @option{-pedantic}; this option reverses that. This behavior and this option are superseded by @option{-pedantic}, which works as it does for GNU C@. @@ -1489,18 +1483,18 @@ functions will have linkage like inline functions; they just won't be inlined by default. -@item -Wctor-dtor-privacy (C++ only) +@item -Wctor-dtor-privacy @r{(C++ only)} @opindex Wctor-dtor-privacy Warn when a class seems unusable, because all the constructors or destructors in a class are private and the class has no friends or public static member functions. -@item -Wnon-virtual-dtor (C++ only) +@item -Wnon-virtual-dtor @r{(C++ only)} @opindex Wnon-virtual-dtor Warn when a class declares a non-virtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. -@item -Wreorder (C++ only) +@item -Wreorder @r{(C++ only)} @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers @@ -1523,41 +1517,41 @@ The following @option{-W@dots{}} options are not affected by @option{-Wall}. @table @gcctabopt -@item -Weffc++ (C++ only) +@item -Weffc++ @r{(C++ only)} @opindex Weffc++ Warn about violations of various style guidelines from Scott Meyers' @cite{Effective C++} books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use @samp{grep -v} to filter out those warnings. -@item -Wno-deprecated (C++ only) +@item -Wno-deprecated @r{(C++ only)} @opindex Wno-deprecated Do not warn about usage of deprecated features. @xref{Deprecated Features}. -@item -Wno-non-template-friend (C++ only) +@item -Wno-non-template-friend @r{(C++ only)} @opindex Wno-non-template-friend Disable warnings when non-templatized friend functions are declared within a template. With the advent of explicit template specification -support in g++, if the name of the friend is an unqualified-id (i.e., +support in G++, if the name of the friend is an unqualified-id (i.e., @samp{friend foo(int)}), the C++ language specification demands that the friend declare or define an ordinary, nontemplate function. (Section -14.5.3). Before g++ implemented explicit specification, unqualified-ids +14.5.3). Before G++ implemented explicit specification, unqualified-ids could be interpreted as a particular specialization of a templatized function. Because this non-conforming behavior is no longer the default -behavior for g++, @option{-Wnon-template-friend} allows the compiler to +behavior for G++, @option{-Wnon-template-friend} allows the compiler to check existing code for potential trouble spots, and is on by default. This new compiler behavior can be turned off with @option{-Wno-non-template-friend} which keeps the conformant compiler code but disables the helpful warning. -@item -Wold-style-cast (C++ only) +@item -Wold-style-cast @r{(C++ only)} @opindex Wold-style-cast Warn if an old-style (C-style) cast is used within a C++ program. The new-style casts (@samp{static_cast}, @samp{reinterpret_cast}, and @samp{const_cast}) are less vulnerable to unintended effects, and much easier to grep for. -@item -Woverloaded-virtual (C++ only) +@item -Woverloaded-virtual @r{(C++ only)} @opindex Woverloaded-virtual @cindex overloaded virtual fn, warning @cindex warning for overloaded virtual fn @@ -1584,23 +1578,23 @@ will fail to compile. -@item -Wno-pmf-conversions (C++ only) +@item -Wno-pmf-conversions @r{(C++ only)} @opindex Wno-pmf-conversions Disable the diagnostic for converting a bound pointer to member function to a plain pointer. -@item -Wsign-promo (C++ only) +@item -Wsign-promo @r{(C++ only)} @opindex Wsign-promo Warn when overload resolution chooses a promotion from unsigned or enumeral type to a signed type over a conversion to an unsigned type of -the same size. Previous versions of g++ would try to preserve +the same size. Previous versions of G++ would try to preserve unsignedness, but the standard mandates the current behavior. -@item -Wsynth (C++ only) +@item -Wsynth @r{(C++ only)} @opindex Wsynth @cindex warning for synthesized methods @cindex synthesized methods, warning -Warn when g++'s synthesis behavior does not match that of cfront. For +Warn when G++'s synthesis behavior does not match that of cfront. For instance: @smallexample @@ -1616,7 +1610,7 @@ @} @end smallexample -In this example, g++ will synthesize a default @samp{A& operator = +In this example, G++ will synthesize a default @samp{A& operator = (const A&);}, while cfront will use the user-defined @samp{operator =}. @end table @@ -1697,7 +1691,7 @@ @item -fmessage-length=@var{n} @opindex fmessage-length Try to format error messages so that they fit on lines of about @var{n} -characters. The default is 72 characters for g++ and 0 for the rest of +characters. The default is 72 characters for @command{g++} and 0 for the rest of the front ends supported by GCC@. If @var{n} is zero, then no line-wrapping will be done; each error message will appear on a single line. @@ -1922,6 +1916,7 @@ such a case: @smallexample +@group @{ if (a) if (b) @@ -1929,6 +1924,7 @@ else bar (); @} +@end group @end smallexample In C, every @code{else} branch belongs to the innermost possible @code{if} @@ -1941,6 +1937,7 @@ the enclosing @code{if}. The resulting code would look like this: @smallexample +@group @{ if (a) @{ @@ -1950,6 +1947,7 @@ bar (); @} @} +@end group @end smallexample @item -Wsequence-point @@ -2088,6 +2086,7 @@ this can happen: @smallexample +@group @{ int x; switch (y) @@ -2100,6 +2099,7 @@ @} foo (x); @} +@end group @end smallexample @noindent @@ -2134,7 +2134,7 @@ you use that never return as @code{noreturn}. @xref{Function Attributes}. -@item -Wreorder (C++ only) +@item -Wreorder @r{(C++ only)} @opindex Wreorder @cindex reordering, warning @cindex warning for reordering of member initializers @@ -2273,7 +2273,7 @@ this is done with the relational operators, so equality comparisons are probably mistaken. -@item -Wtraditional (C only) +@item -Wtraditional @r{(C only)} @opindex Wtraditional Warn about certain constructs that behave differently in traditional and ISO C@. Also warn about ISO C constructs that have no traditional C @@ -2372,7 +2372,7 @@ convenience in calculations with @code{void *} pointers and pointers to functions. -@item -Wbad-function-cast (C only) +@item -Wbad-function-cast @r{(C only)} @opindex Wbad-function-cast Warn whenever a function call is cast to a non-matching type. For example, warn if @code{int malloc()} is cast to @code{anything *}. @@ -2392,9 +2392,12 @@ @item -Wwrite-strings @opindex Wwrite-strings -Give string constants the type @code{const char[@var{length}]} so that +When compiling C, give string constants the type @code{const +char[@var{length}]} so that copying the address of one into a non-@code{const} @code{char *} -pointer will get a warning. These warnings will help you find at +pointer will get a warning; when compiling C++, warn about the +deprecated conversion from string constants to @code{char *}. +These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using @code{const} in declarations and prototypes. Otherwise, it will just be a nuisance; @@ -2429,14 +2432,14 @@ called. (In languages where you can return an array, this also elicits a warning.) -@item -Wstrict-prototypes (C only) +@item -Wstrict-prototypes @r{(C only)} @opindex Wstrict-prototypes Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) -@item -Wmissing-prototypes (C only) +@item -Wmissing-prototypes @r{(C only)} @opindex Wmissing-prototypes Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself @@ -2505,7 +2508,7 @@ Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. -@item -Wnested-externs (C only) +@item -Wnested-externs @r{(C only)} @opindex Wnested-externs Warn if an @code{extern} declaration is encountered within a function. @@ -2992,16 +2995,16 @@ use diff on debugging dumps for compiler invocations with different options, in particular with and without @option{-g}. -@item -fdump-translation-unit (C and C++ only) -@item -fdump-translation-unit-@var{number} (C and C++ only) +@item -fdump-translation-unit @r{(C and C++ only)} +@itemx -fdump-translation-unit-@var{number} @r{(C and C++ only)} @opindex fdump-translation-unit Dump a representation of the tree structure for the entire translation unit to a file. The file name is made by appending @file{.tu} to the source file name. If the @samp{-@var{number}} form is used, @var{number} controls the details of the dump as described for the @option{-fdump-tree} options. -@item -fdump-class-hierarchy (C++ only) -@item -fdump-class-hierarchy-@var{number} (C++ only) +@item -fdump-class-hierarchy @r{(C++ only)} +@itemx -fdump-class-hierarchy-@var{number} @r{(C++ only)} @opindex fdump-class-hierarchy Dump a representation of each class's hierarchy and virtual function table layout to a file. The file name is made by appending @file{.class} @@ -3009,8 +3012,8 @@ controls the details of the dump as described for the @option{-fdump-tree} options. -@item -fdump-ast-@var{switch} (C++ only) -@item -fdump-ast-@var{switch}-@var{number} (C++ only) +@item -fdump-ast-@var{switch} @r{(C++ only)} +@itemx -fdump-ast-@var{switch}-@var{number} @r{(C++ only)} @opindex fdump-ast Control the dumping at various stages of processing the abstract syntax tree to a file. The file name is generated by appending a switch @@ -3314,11 +3317,11 @@ inline (ie marked with the inline keyword or defined within the class definition in c++). @var{n} is the size of functions that can be inlined in number of pseudo instructions (not counting parameter handling). The default -value of n is 10000. Increasing this value can result in more inlined code at +value of @var{n} is 10000. Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that -use inlining heavily such as those based on recursive templates with c++. +use inlining heavily such as those based on recursive templates with C++. @emph{Note:} pseudo instruction represents, in this particular context, an abstract measurement of function's size. In no way, it represents a count @@ -3482,7 +3485,7 @@ Use global dataflow analysis to identify and eliminate useless null pointer checks. Programs which rely on NULL pointer dereferences @emph{not} halting the program may not work properly with this option. Use --fno-delete-null-pointer-checks to disable this optimizing for programs +@option{-fno-delete-null-pointer-checks} to disable this optimizing for programs which depend on that behavior. @item -fexpensive-optimizations @@ -4093,31 +4096,31 @@ The nine trigraph sequences are @table @samp @item ??( --> @samp{[} +@expansion{} @samp{[} @item ??) --> @samp{]} +@expansion{} @samp{]} @item ??< --> @samp{@{} +@expansion{} @samp{@{} @item ??> --> @samp{@}} +@expansion{} @samp{@}} @item ??= --> @samp{#} +@expansion{} @samp{#} @item ??/ --> @samp{\} +@expansion{} @samp{\} @item ??' --> @samp{^} +@expansion{} @samp{^} @item ??! --> @samp{|} +@expansion{} @samp{|} @item ??- --> @samp{~} +@expansion{} @samp{~} @end table @@ -4125,7 +4128,7 @@ properly. Portable code should not rely on trigraphs being either converted or ignored. -@item -Wp\,@var{option} +@item -Wp,@var{option} @opindex Wp Pass @var{option} as an option to the preprocessor. If @var{option} contains commas, it is split into multiple options at the commas. @@ -4138,7 +4141,7 @@ You can pass options to the assembler. @table @gcctabopt -@item -Wa\,@var{option} +@item -Wa,@var{option} @opindex Wa Pass @var{option} as an option to the assembler. If @var{option} contains commas, it is split into multiple options at the commas. @@ -4327,7 +4330,7 @@ @option{-Xlinker "-assert definitions"}, because this passes the entire string as a single argument, which is not what the linker expects. -@item -Wl\,@var{option} +@item -Wl,@var{option} @opindex Wl Pass @var{option} as an option to the linker. If @var{option} contains commas, it is split into multiple options at the commas. @@ -4427,8 +4430,8 @@ Variables}. As a special kludge, if the path provided by @option{-B} is -@samp{[foo/]stage/} then it will be replaced by -@samp{[foo/]include}. This is to help with boot-strapping the compiler. +@file{[foo/]stage@var{N}/} then it will be replaced by +@file{[foo/]include}. This is to help with boot-strapping the compiler. @item -specs=@var{file} @opindex specs @@ -4638,7 +4641,7 @@ without regard to any appended suffix. @item %j@var{SUFFIX} -Substitutes the name of the HOST_BIT_BUCKET, if any, and if it is +Substitutes the name of the @code{HOST_BIT_BUCKET}, if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like @samp{%u}. This temporary file is not meant for communication between processes, but rather as a junk @@ -4683,7 +4686,7 @@ C@. @item %I -Substitute a @option{-iprefix} option made from GCC_EXEC_PREFIX@. +Substitute a @option{-iprefix} option made from @env{GCC_EXEC_PREFIX}. @item %s Current argument is the name of a library or startup file of some sort. @@ -5373,7 +5376,7 @@ and will use a ``flat'' or single register window calling convention. This model uses %i7 as the frame pointer and is compatible with the normal register window model. Code from either may be intermixed. -The local registers and the input registers (0-5) are still treated as +The local registers and the input registers (0--5) are still treated as ``call saved'' registers and will be saved on the stack as necessary. With @option{-mno-flat} (the default), the compiler emits save/restore @@ -5936,12 +5939,16 @@ @opindex mcpu This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when generating -assembly code. Permissible names are: arm2, arm250, arm3, arm6, arm60, -arm600, arm610, arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, -arm70, arm700, arm700i, arm710, arm710c, arm7100, arm7500, arm7500fe, -arm7tdmi, arm8, strongarm, strongarm110, strongarm1100, arm8, arm810, -arm9, arm9e, arm920, arm920t, arm940t, arm9tdmi, arm10tdmi, arm1020t, -xscale. +assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, +@samp{arm3}, @samp{arm6}, @samp{arm60}, @samp{arm600}, @samp{arm610}, +@samp{arm620}, @samp{arm7}, @samp{arm7m}, @samp{arm7d}, @samp{arm7dm}, +@samp{arm7di}, @samp{arm7dmi}, @samp{arm70}, @samp{arm700}, +@samp{arm700i}, @samp{arm710}, @samp{arm710c}, @samp{arm7100}, +@samp{arm7500}, @samp{arm7500fe}, @samp{arm7tdmi}, @samp{arm8}, +@samp{strongarm}, @samp{strongarm110}, @samp{strongarm1100}, +@samp{arm8}, @samp{arm810}, @samp{arm9}, @samp{arm9e}, @samp{arm920}, +@samp{arm920t}, @samp{arm940t}, @samp{arm9tdmi}, @samp{arm10tdmi}, +@samp{arm1020t}, @samp{xscale}. @itemx -mtune=@var{name} @opindex mtune @@ -5959,8 +5966,9 @@ This specifies the name of the target ARM architecture. GCC uses this name to determine what kind of instructions it can emit when generating assembly code. This option can be used in conjunction with or instead -of the @option{-mcpu=} option. Permissible names are: armv2, armv2a, -armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te. +of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, +@samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t}, +@samp{armv5}, @samp{armv5t}, @samp{armv5te}. @item -mfpe=@var{number} @itemx -mfp=@var{number} @@ -6018,7 +6026,7 @@ @item -mnop-fun-dllimport @opindex mnop-fun-dllimport -Disable support for the @emph{dllimport} attribute. +Disable support for the @code{dllimport} attribute. @item -msingle-pic-base @opindex msingle-pic-base @@ -7119,7 +7127,7 @@ @opindex msplit-addresses @opindex mno-split-addresses Generate code to load the high and low parts of address constants separately. -This allows @code{gcc} to optimize away redundant loads of the high order +This allows GCC to optimize away redundant loads of the high order bits of addresses. This optimization requires GNU as and GNU ld. This optimization is enabled by default for some embedded targets where GNU as and GNU ld are standard. @@ -8236,12 +8244,12 @@ Refrain from adding @code{.ident} directives to the output file (this is the default). -@item -YP\,@var{dirs} +@item -YP,@var{dirs} @opindex YP Search the directories @var{dirs}, and no others, for libraries specified with @option{-l}. -@item -Ym\,@var{dir} +@item -Ym,@var{dir} @opindex Ym Look in the directory @var{dir} to find the M4 preprocessor. The assembler uses this option. @@ -8294,8 +8302,8 @@ Enable (disable) generation of code using decrement and branch, DBcond(D), instructions. This is enabled by default for the C4x. To be on the safe side, this is disabled for the C3x, since the maximum -iteration count on the C3x is 2^23 + 1 (but who iterates loops more than -2^23 times on the C3x?). Note that GCC will try to reverse a loop so +iteration count on the C3x is @math{2^23 + 1} (but who iterates loops more than +@math{2^23} times on the C3x?). Note that GCC will try to reverse a loop so that it can utilise the decrement and branch instruction, but will give up if there is more than one memory reference in the loop. Thus a loop where the loop counter is decremented can generate slightly more @@ -8363,9 +8371,9 @@ @opindex mloop-unsigned @opindex mno-loop-unsigned The maximum iteration count when using RPTS and RPTB (and DB on the C40) -is 2^31 + 1 since these instructions test if the iteration count is +is @math{2^31 + 1} since these instructions test if the iteration count is negative to terminate the loop. If the iteration count is unsigned -there is a possibility than the 2^31 + 1 maximum iteration count may be +there is a possibility than the @math{2^31 + 1} maximum iteration count may be exceeded. This switch allows an unsigned iteration count. @item -mti @@ -8681,7 +8689,7 @@ @item -minit-stack=@var{N} @opindex minit-stack Specify the initial stack address, which may be a symbol or numeric value, -__stack is the default. +@samp{__stack} is the default. @item -mno-interrupts @opindex mno-interrupts diff -ruN gcc.orig/doc/md.texi gcc/doc/md.texi --- gcc.orig/doc/md.texi Fri Jun 29 09:21:22 2001 +++ gcc/doc/md.texi Mon Jul 2 23:35:43 2001 @@ -79,7 +79,7 @@ insn list. If a @code{define_expand} is used, one of three things happens, based on the condition logic. The condition logic may manually create new insns for the insn list, say via @code{emit_insn()}, and -invoke DONE@. For certain named patterns, it may invoke FAIL to tell the +invoke @code{DONE}. For certain named patterns, it may invoke @code{FAIL} to tell the compiler to use an alternate way of performing that task. If it invokes neither @code{DONE} nor @code{FAIL}, the template given in the pattern is inserted, as if the @code{define_expand} were a @code{define_insn}. @@ -1632,7 +1632,7 @@ Constant in range 0 to 255 (for @code{out} instruction) @item Z -Constant in range 0 to 0xffffffff or symbolic reference known to fit specified range. +Constant in range 0 to @code{0xffffffff} or symbolic reference known to fit specified range. (for using immediates in zero extending 32-bit to 64-bit x86-64 instructions) @item e @@ -3827,7 +3827,7 @@ @end smallexample In this case, the actual split condition will be -"TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed." +@samp{TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed}. The @code{define_insn_and_split} construction provides exactly the same functionality as two separate @code{define_insn} and @code{define_split} diff -ruN gcc.orig/doc/rtl.texi gcc/doc/rtl.texi --- gcc.orig/doc/rtl.texi Fri Jun 29 09:21:22 2001 +++ gcc/doc/rtl.texi Mon Jul 2 23:29:19 2001 @@ -1793,7 +1793,7 @@ @section Vector Operations @cindex vector operations -All normal rtl expressions can be used with vector modes; they are +All normal RTL expressions can be used with vector modes; they are interpreted as operating on each part of the vector independently. Additionally, there are a few new expressions to describe specific vector operations. @@ -2360,7 +2360,8 @@ Here is an example of its use: @example -(mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) (reg:SI 48)))) +(mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42) + (reg:SI 48)))) @end example This says to modify pseudo register 42 by adding the contents of pseudo diff -ruN contrib.orig/texi2pod.pl contrib/texi2pod.pl --- contrib.orig/texi2pod.pl Thu May 3 19:44:06 2001 +++ contrib/texi2pod.pl Mon Jul 2 22:20:29 2001 @@ -279,9 +279,6 @@ s/\@w\{([^\}]*)\}/S<$1>/g; s/\@(?:dmn|math)\{([^\}]*)\}/$1/g; - # Handle @r inside bold. - 1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B blah> into B I B to - # match Texinfo semantics of @emph inside @samp. + # match Texinfo semantics of @emph inside @samp. Also handle @r + # inside bold. s/<//g; + 1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B]*)I<([^>]+)>/B<$1>I<$2>B]*)B<([^>]+)>/I<$1>B<$2>I//g; diff -ruN gcc.orig/doc/tm.texi gcc/doc/tm.texi --- gcc.orig/doc/tm.texi Mon Jul 2 21:43:56 2001 +++ gcc/doc/tm.texi Tue Jul 3 00:07:31 2001 @@ -376,7 +376,7 @@ @findex LINK_ELIMINATE_DUPLICATE_LDIRECTORIES @item LINK_ELIMINATE_DUPLICATE_LDIRECTORIES -A nonzero value causes collect2 to remove duplicate -L search +A nonzero value causes collect2 to remove duplicate @option{-L@var{directory}} search directories from linking commands. Do not give it a nonzero value if removing duplicate search directories changes the linker's semantics. @@ -804,7 +804,7 @@ RTX can then be used to implement the @code{__builtin_return_address} function, for level 0. -Note - earlier implementations of GCC used a single data area to hold +Note---earlier implementations of GCC used a single data area to hold all of the per-function information. Thus when processing of a nested function began the old per-function data had to be pushed onto a stack, and when the processing was finished, it had to be popped off the @@ -886,9 +886,9 @@ @findex LIBGCC2_WORDS_BIG_ENDIAN @item LIBGCC2_WORDS_BIG_ENDIAN -Define this macro if WORDS_BIG_ENDIAN is not constant. This must be a -constant value with the same meaning as WORDS_BIG_ENDIAN, which will be -used only when compiling libgcc2.c. Typically the value will be set +Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a +constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be +used only when compiling @file{libgcc2.c}. Typically the value will be set based on preprocessor defines. @findex FLOAT_WORDS_BIG_ENDIAN @@ -996,15 +996,15 @@ Define this macro if there is a guaranteed alignment for the stack pointer on this machine. The definition is a C expression for the desired alignment (measured in bits). This value is used as a -default if PREFERRED_STACK_BOUNDARY is not defined. +default if @code{PREFERRED_STACK_BOUNDARY} is not defined. @findex PREFERRED_STACK_BOUNDARY @item PREFERRED_STACK_BOUNDARY Define this macro if you wish to preserve a certain alignment for the stack pointer. The definition is a C expression -for the desired alignment (measured in bits). If STACK_BOUNDARY is +for the desired alignment (measured in bits). If @code{STACK_BOUNDARY} is also defined, this macro must evaluate to a value equal to or larger -than STACK_BOUNDARY@. +than @code{STACK_BOUNDARY}. @cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY} If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned @@ -1925,7 +1925,7 @@ @item YMODE The mode of a top level SUBREG (or what may become one). @end table -The default function can be found in rtlanal.c, function +The default function can be found in @file{rtlanal.c}, function @code{subreg_regno_offset}. Normally this does not need to be defined. @end table @@ -2628,7 +2628,7 @@ debugging information like that provided by DWARF 2. If this RTL is a @code{REG}, you should also define -DWARF_FRAME_RETURN_COLUMN to @code{DWARF_FRAME_REGNUM (REGNO)}. +@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}. @findex INCOMING_FRAME_SP_OFFSET @item INCOMING_FRAME_SP_OFFSET @@ -2708,14 +2708,14 @@ define either this macro or the @code{eh_return} instruction pattern. @findex ASM_PREFERRED_EH_DATA_FORMAT -@item ASM_PREFERRED_EH_DATA_FORMAT(@var{CODE}, @var{GLOBAL}) +@item ASM_PREFERRED_EH_DATA_FORMAT(@var{code}, @var{global}) This macro chooses the encoding of pointers embedded in the exception handling sections. If at all possible, this should be defined such that the exception handling section will not require dynamic relocations, and so may be read-only. -@var{CODE} is 0 for data, 1 for code labels, 2 for function pointers. -@var{GLOBAL} is true if the symbol may be affected by dynamic relocations. +@var{code} is 0 for data, 1 for code labels, 2 for function pointers. +@var{global} is true if the symbol may be affected by dynamic relocations. The macro should return a combination of the @code{DW_EH_PE_*} defines as found in @file{dwarf2.h}. @@ -2723,15 +2723,15 @@ represented directly. @findex ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX -@item ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(@var{FILE}, @var{ENCODING}, @var{SIZE}, @var{ADDR}, @var{DONE}) +@item ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done}) This macro allows the target to emit whatever special magic is required to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}. Generic code takes care of pc-relative and indirect encodings; this must be defined if the target uses text-relative or data-relative encodings. -This is a C statement that branches to @var{DONE} if the format was -handled. @var{ENCODING} is the format chosen, @var{SIZE} is the number -of bytes that the format occupies, @var{ADDR} is the @code{SYMBOL_REF} +This is a C statement that branches to @var{done} if the format was +handled. @var{encoding} is the format chosen, @var{size} is the number +of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF} to be emitted. @findex SMALL_STACK @@ -3047,7 +3047,7 @@ If the target machine does not have a push instruction, set it to zero. That directs GCC to use an alternate strategy: to allocate the entire argument block and then store the arguments into -it. When PUSH_ARGS is nonzero, PUSH_ROUNDING must be defined too. +it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too. On some machines, the definition @findex PUSH_ROUNDING @@ -3157,7 +3157,7 @@ @var{fundecl} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type @code{FUNCTION_DECL} that describes the declaration of the function. -From this you can obtain the DECL_MACHINE_ATTRIBUTES of the function. +From this you can obtain the @code{DECL_MACHINE_ATTRIBUTES} of the function. @var{funtype} is a C variable whose value is a tree node that describes the function in question. Normally it is a node of type @@ -3316,7 +3316,7 @@ If defined, a C expression that indicates when it is the called function's responsibility to make a copy of arguments passed by invisible reference. Normally, the caller makes a copy and passes the address of the copy to the -routine being called. When FUNCTION_ARG_CALLEE_COPIES is defined and is +routine being called. When @code{FUNCTION_ARG_CALLEE_COPIES} is defined and is nonzero, the caller does not make a copy. Instead, it passes a pointer to the ``live'' value. The called function must not modify this value. If it can be determined that the value won't be modified, it need not make a copy; @@ -3733,7 +3733,7 @@ yet, because the function prologue itself does all the pushing.) This region is used on machines where an argument may be passed partly in registers and partly in memory, and, in some cases to support the -features in @file{varargs.h} and @file{stdarg.h}. +features in @code{} and @code{}. @item An area of memory used to save certain registers used by the function. @@ -3963,7 +3963,7 @@ The first word of this block is a flag which will be nonzero if the object module has already been initialized. So test this word first, and do not call @code{__bb_init_func} if the flag is -nonzero. BLOCK_OR_LABEL contains a unique number which may be used to +nonzero. @var{labelno} contains a unique number which may be used to generate a label as a branch destination when @code{__bb_init_func} will not be called. @@ -3982,14 +3982,14 @@ Output code to call the subroutine @code{__bb_init_trace_func} and pass two parameters to it. The first parameter is the same as for @code{__bb_init_func}. The second parameter is the number of the -first basic block of the function as given by BLOCK_OR_LABEL@. Note +first basic block of the function as given by @var{labelno}. Note that @code{__bb_init_trace_func} has to be called, even if the object module has been initialized already. Described in assembler language, the code to be output looks like: @example parameter1 <- LPBX0 -parameter2 <- BLOCK_OR_LABEL +parameter2 <- @var{labelno} call __bb_init_trace_func @end example @end table @@ -4024,7 +4024,7 @@ Described in assembler language, the code to be output looks like: @smallexample -inc (LPBX2+4*BLOCKNO) +inc (LPBX2+4*@var{blockno}) @end smallexample @vindex __bb @@ -4035,7 +4035,7 @@ counter. @code{__bb} consists of two words. In the first word, the current -basic block number, as given by BLOCKNO, has to be stored. In +basic block number, as given by @var{blockno}, has to be stored. In the second word, the address of a block allocated in the object module has to be stored. The address is given by the label created with this statement: @@ -4046,7 +4046,7 @@ Described in assembler language, the code to be output looks like: @example -move BLOCKNO -> (__bb) +move @var{blockno} -> (__bb) move LPBX0 -> (__bb+4) call __bb_trace_func @end example @@ -4151,13 +4151,13 @@ @section Implementing the Varargs Macros @cindex varargs implementation -GCC comes with an implementation of @file{varargs.h} and -@file{stdarg.h} that work without change on machines that pass arguments +GCC comes with an implementation of @code{} and +@code{} that work without change on machines that pass arguments on the stack. Other machines require their own implementations of varargs, and the two machine independent header files must have conditionals to include it. -ISO @file{stdarg.h} differs from traditional @file{varargs.h} mainly in +ISO @code{} differs from traditional @code{} mainly in the calling convention for @code{va_start}. The traditional implementation takes just one argument, which is the variable in which to store the argument pointer. The ISO implementation of @@ -4448,12 +4448,12 @@ @table @code @findex CLEAR_INSN_CACHE -@item CLEAR_INSN_CACHE (@var{BEG}, @var{END}) +@item CLEAR_INSN_CACHE (@var{beg}, @var{end}) If defined, expands to a C expression clearing the @emph{instruction cache} in the specified interval. If it is not defined, and the macro -INSN_CACHE_SIZE is defined, some generic code is generated to clear the +@code{INSN_CACHE_SIZE} is defined, some generic code is generated to clear the cache. The definition of this macro would typically be a series of -@code{asm} statements. Both @var{BEG} and @var{END} are both pointer +@code{asm} statements. Both @var{beg} and @var{end} are both pointer expressions. @end table @@ -4831,7 +4831,7 @@ registers into a register. On the other hand, for number of RISC processors offsets are limited so that often an intermediate address needs to be generated in order to address a stack slot. By defining -LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses +@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses generated for adjacent some stack slots can be made identical, and thus be shared. @@ -5062,7 +5062,8 @@ follows: @smallexample -#define REVERSE_CONDEXEC_PREDICATES_P (x, y) ((x) == reverse_condition (y)) +#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \ + ((x) == reverse_condition (y)) @end smallexample @end table @@ -5544,7 +5545,7 @@ @findex UNIQUE_SECTION @item UNIQUE_SECTION (@var{decl}, @var{reloc}) A C statement to build up a unique section name, expressed as a -STRING_CST node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}. +@code{STRING_CST} node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}. @var{reloc} indicates whether the initial value of @var{exp} requires link-time relocations. If you do not define this macro, GCC will use the symbol name prefixed by @samp{.} as the section name. Note - this @@ -6020,7 +6021,7 @@ This macro controls how the assembler definitions of uninitialized global variables are output. This macro exists to properly support languages like -@code{c++} which do not have @code{common} data. However, this macro currently +C++ which do not have @code{common} data. However, this macro currently is not defined for all targets. If this macro and @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON} or @code{ASM_OUTPUT_ALIGNED_COMMON} or @@ -6335,7 +6336,7 @@ which defines (equates) the symbol @var{name} to have the value @var{value}. @findex SET_ASM_OP -If SET_ASM_OP is defined, a default definition is provided which is +If @code{SET_ASM_OP} is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_DEF_FROM_DECLS @@ -6356,7 +6357,7 @@ resolves into a constant. @findex SET_ASM_OP -If SET_ASM_OP is defined, a default definition is provided which is +If @code{SET_ASM_OP} is defined, a default definition is provided which is correct for most systems. @findex ASM_OUTPUT_WEAK_ALIAS @@ -6366,7 +6367,7 @@ @var{value}. Define this macro if the target only supports weak aliases; define -ASM_OUTPUT_DEF instead if possible. +@code{ASM_OUTPUT_DEF} instead if possible. @findex OBJC_GEN_METHOD_LABEL @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name}) @@ -6667,13 +6668,13 @@ program which lists dynamic dependencies, like @code{"ldd"} under SunOS 4. @findex PARSE_LDD_OUTPUT -@item PARSE_LDD_OUTPUT (@var{PTR}) +@item PARSE_LDD_OUTPUT (@var{ptr}) Define this macro to be C code that extracts filenames from the output -of the program denoted by @code{LDD_SUFFIX}. @var{PTR} is a variable +of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable of type @code{char *} that points to the beginning of a line of output from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the -code must advance @var{PTR} to the beginning of the filename on that -line. Otherwise, it must set @var{PTR} to @code{NULL}. +code must advance @var{ptr} to the beginning of the filename on that +line. Otherwise, it must set @var{ptr} to @code{NULL}. @end table @@ -6912,7 +6913,7 @@ You must provide this macro on machines where the addresses in a dispatch table are relative to the table's own address. If defined, GCC will also use this macro on all machines when producing PIC@. -@var{body} is the body of the ADDR_DIFF_VEC; it is provided so that the +@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the mode and flags can be read. @findex ASM_OUTPUT_ADDR_VEC_ELT @@ -7015,12 +7016,12 @@ @findex DOESNT_NEED_UNWINDER @item DOESNT_NEED_UNWINDER A C expression that decides whether or not the current function needs to -have a function unwinder generated for it. See the file @code{except.c} +have a function unwinder generated for it. See the file @file{except.c} for details on when to define this, and how. @findex MASK_RETURN_ADDR @item MASK_RETURN_ADDR -An rtx used to mask the return address found via RETURN_ADDR_RTX, so +An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so that it does not contain any extraneous set bits in it. @findex DWARF2_UNWIND_INFO @@ -7033,11 +7034,11 @@ 1. If this macro is defined to 1, the DWARF 2 unwinder will be the default -exception handling mechanism; otherwise, setjmp/longjmp will be used by +exception handling mechanism; otherwise, @code{setjmp}/@code{longjmp} will be used by default. If this macro is defined to anything, the DWARF 2 unwinder will be used -instead of inline unwinders and __unwind_function in the non-setjmp case. +instead of inline unwinders and @code{__unwind_function} in the non-@code{setjmp} case. @findex DWARF_CIE_DATA_ALIGNMENT @item DWARF_CIE_DATA_ALIGNMENT @@ -7060,7 +7061,7 @@ @findex LABEL_ALIGN_AFTER_BARRIER @item LABEL_ALIGN_AFTER_BARRIER (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows -a BARRIER@. +a @code{BARRIER}. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently @@ -7081,16 +7082,16 @@ @findex LOOP_ALIGN @item LOOP_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}, which follows -a NOTE_INSN_LOOP_BEG note. +a @code{NOTE_INSN_LOOP_BEG} note. This macro need not be defined if you don't want any special alignment to be done at such a time. Most machine descriptions do not currently define the macro. Unless it's necessary to inspect the @var{label} parameter, it is better -to set the variable @var{align_loops} in the target's +to set the variable @code{align_loops} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's -selection in @var{align_loops} in a @code{LOOP_ALIGN} implementation. +selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation. @findex LOOP_ALIGN_MAX_SKIP @item LOOP_ALIGN_MAX_SKIP @@ -7100,13 +7101,13 @@ @findex LABEL_ALIGN @item LABEL_ALIGN (@var{label}) The alignment (log base 2) to put in front of @var{label}. -If LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN specify a different alignment, +If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment, the maximum of the specified values is used. Unless it's necessary to inspect the @var{label} parameter, it is better -to set the variable @var{align_labels} in the target's +to set the variable @code{align_labels} in the target's @code{OVERRIDE_OPTIONS}. Otherwise, you should try to honour the user's -selection in @var{align_labels} in a @code{LABEL_ALIGN} implementation. +selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation. @findex LABEL_ALIGN_MAX_SKIP @item LABEL_ALIGN_MAX_SKIP @@ -7800,7 +7801,7 @@ operation, this bit has to be set. Changing the PR bit requires a general purpose register as a scratch register, hence these FPSCR sets have to be inserted before reload, i.e.@: you can't put this into instruction emitting -or MACHINE_DEPENDENT_REORG@. +or @code{MACHINE_DEPENDENT_REORG}. You can have multiple entities that are mode-switched, and select at run time which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should @@ -7828,8 +7829,8 @@ @var{entity} is an integer specifying a mode-switched entity. If @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to return an integer value not larger than the corresponding element in -NUM_MODES_FOR_MODE_SWITCHING, to denote the mode that @var{entity} must -be switched into prior to the execution of INSN@. +@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must +be switched into prior to the execution of @var{insn}. @findex NORMAL_MODE @item NORMAL_MODE (@var{entity}) @@ -7839,12 +7840,12 @@ @findex MODE_PRIORITY_TO_MODE @item MODE_PRIORITY_TO_MODE (@var{entity}, @var{n}) -This macro specifies the order in which modes for ENTITY are processed. -0 is the highest priority, NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1 the +This macro specifies the order in which modes for @var{entity} are processed. +0 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the lowest. The value of the macro should be an integer designating a mode -for ENTITY@. For any fixed @var{entity}, @code{mode_priority_to_mode} +for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode} (@var{entity}, @var{n}) shall be a bijection in 0 @dots{} -@code{num_modes_for_mode_switching}[@var{entity}] @minus{} 1 . +@code{num_modes_for_mode_switching[@var{entity}] - 1}. @findex EMIT_MODE_SET @item EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live}) @@ -7885,7 +7886,7 @@ in the list specified by this macro are those used in the most insn patterns. -For each predicate function named in @var{PREDICATE_CODES}, a +For each predicate function named in @code{PREDICATE_CODES}, a declaration will be generated in @file{insn-codes.h}. @item SPECIAL_MODE_PREDICATES @@ -8260,7 +8261,7 @@ to be called from target-specific code, it must only be done so when building the C and C++ compilers. This can be done by defining the variables @code{c_target_objs} and @code{cxx_target_objs} in the -target entry in the @code{config.gcc} file. These variables should name +target entry in the @file{config.gcc} file. These variables should name the target-specific, language-specific object file which contains the code that uses @code{c_lex}. Note it will also be necessary to add a rule to the makefile fragment pointed to by @code{tmake_file} that shows @@ -8298,8 +8299,8 @@ @findex pragma @item HANDLE_PRAGMA_PACK_PUSH_POP Define this macro (to a value of 1) if you want to support the Win32 -style pragmas @samp{#pragma pack(push,)} and @samp{#pragma -pack(pop)}. The pack(push,) pragma specifies the maximum alignment +style pragmas @samp{#pragma pack(push,@var{n})} and @samp{#pragma +pack(pop)}. The @samp{pack(push,@var{n})} pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A pack value of zero resets the behaviour to the default. Successive @@ -8473,8 +8474,8 @@ symbols must be explicitly imported from shared libraries (DLLs). @findex MD_ASM_CLOBBERS -@item MD_ASM_CLOBBERS -A C statement that adds to @var{CLOBBERS} @code{STRING_CST} trees for +@item MD_ASM_CLOBBERS (@var{clobbers}) +A C statement that adds to @var{clobbers} @code{STRING_CST} trees for any hard regs the port wishes to automatically clobber for all asms. @findex ISSUE_RATE -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37953-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 00:58:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 3721 invoked by alias); 3 Jul 2001 00:58:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3671 invoked from network); 3 Jul 2001 00:58:12 -0000 Received: from unknown (HELO mms2.broadcom.com) (63.70.210.59) by sourceware.cygnus.com with SMTP; 3 Jul 2001 00:58:12 -0000 Received: from 63.70.210.1 by mms2.broadcom.com with ESMTP (Broadcom MMS-2 SMTP Relay (MMS v4.7)); Mon, 02 Jul 2001 17:58:02 -0700 X-Server-Uuid: 2a12fa22-b688-11d4-a6a1-00508bfc9626 Received: from postal.sibyte.com (IDENT:postfix@[10.21.128.60]) by mon-irva-11.broadcom.com (8.9.1/8.9.1) with ESMTP id RAA20581; Mon, 2 Jul 2001 17:58:09 -0700 (PDT) Received: from highland.sibyte.com (highland.sibyte.com [10.21.64.118]) by postal.sibyte.com (Postfix) with ESMTP id B93C71595F; Mon, 2 Jul 2001 17:57:58 -0700 (PDT) Received: (from cgd@localhost) by highland.sibyte.com (8.9.1b+Sun/8.9.1) id RAA28620; Mon, 2 Jul 2001 17:57:58 -0700 (PDT) To: echristo@redhat.com cc: gcc-patches@gcc.gnu.org Subject: Re: Patch: mips march/mtune support References: <993759508.29736.16.camel@ghostwheel.cygnus.com> From: cgd@sibyte.com Date: 02 Jul 2001 17:57:58 -0700 In-Reply-To: echristo@redhat.com's message of 28 Jun 2001 13:20:56 -0700 Message-ID: Lines: 36 X-Mailer: Gnus v5.5/Emacs 20.2 MIME-Version: 1.0 X-WSS-ID: 175FC710676401-01-01 Content-Type: text/plain Content-Transfer-Encoding: 7bit echristo@redhat.com ("Eric Christopher") writes: > -#define GENERATE_BRANCHLIKELY (!TARGET_MIPS16 && (TARGET_MIPS3900 || ISA_HAS_BRANCHLIKELY)) > +#define GENERATE_BRANCHLIKELY (!TARGET_MIPS16 && ISA_HAS_BRANCHLIKELY) > #define GENERATE_MULT3 (TARGET_MIPS3900 \ > @@ -597,7 +614,10 @@ extern void sbss_section PARAMS ((void) > ) > > /* ISA has branch likely instructions (eg. mips2). */ > -#define ISA_HAS_BRANCHLIKELY (mips_isa != 1) > +/* Disable branchlikely for tx39 until compare rewrite. They haven't > + been generated up to this point. */ > +#define ISA_HAS_BRANCHLIKELY (mips_isa != 1 \ > + /* || TARGET_MIPS3900 */) i didn't have time to look at this patch in great detail, but i did notice the chunk quoted above. use of Branch Likely instructions is strongly discouraged in the MIPS32 and MIPS64 architectures. See, for instance, page 57 of the MIPS32 Instruction set manual at http://www.mips.com/declassified/Declassified_2001/MD00086-2B-MIPS32BIS-AFP-00.95.pdf (page 65 of the PDF document, it seems -- *sigh*). This is a case of "the instruction is there if you need it, but you shouldn't use it unless you really really know that you need it." not sure how to handle that. maybe "avoid if cpu_tune is mips32 architecture or mips64 architecture." that makes me wonder if there's need for macros that basically say is this processor a mips32 / is this processor a mips64 cpu. that may be overkill though... cgd From gcc-patches-return-37954-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 02:09:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 22607 invoked by alias); 3 Jul 2001 02:09:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22562 invoked from network); 3 Jul 2001 02:09:43 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 3 Jul 2001 02:09:43 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA15783; Mon, 2 Jul 01 22:13:52 EDT Date: Mon, 2 Jul 01 22:13:52 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107030213.AA15783@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: MEM attribute changes, round 2 plus_constant_for_output differs only from plus_constant in that the latter supports LO_SUM. But there's no reason why plus_constant can't also support LO_SUM. So I added that and deleted plus_constant_for_output, replacing it in all the callers with plus_constant. That allows a few more change_address calls to be converted to adjust_address. Bootstrapped on alphaev56. Mon Jul 2 21:52:19 2001 Richard Kenner * explow.c (plus_constant_wide, case LO_SUM): New case. (plus_constant_for_output_wide): Delete. * rtl.h (plus_constant_for_output): Delete. * alias.c (canon_rtx, init_alias_analysis): Call plus_constant instead of plus_constant_for_output. * recog.c (offsettable_address_p, adj_offsettable_operand): Likewise. * config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise. * config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise. * config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise. * config/sparc/sparc.md: Likewise. Convert some change_address calls to adjust_address. *** alias.c 2001/06/04 13:21:38 1.123 --- alias.c 2001/07/03 01:30:17 *************** canon_rtx (x) *** 960,969 **** if (x0 != XEXP (x, 0) || x1 != XEXP (x, 1)) { - /* We can tolerate LO_SUMs being offset here; these - rtl are used for nothing other than comparisons. */ if (GET_CODE (x0) == CONST_INT) ! return plus_constant_for_output (x1, INTVAL (x0)); else if (GET_CODE (x1) == CONST_INT) ! return plus_constant_for_output (x0, INTVAL (x1)); return gen_rtx_PLUS (GET_MODE (x), x0, x1); } --- 960,967 ---- if (x0 != XEXP (x, 0) || x1 != XEXP (x, 1)) { if (GET_CODE (x0) == CONST_INT) ! return plus_constant (x1, INTVAL (x0)); else if (GET_CODE (x1) == CONST_INT) ! return plus_constant (x0, INTVAL (x1)); return gen_rtx_PLUS (GET_MODE (x), x0, x1); } *************** init_alias_analysis () *** 2350,2355 **** op0 = reg_known_value[REGNO (op0)]; reg_known_value[regno] ! = plus_constant_for_output (op0, ! INTVAL (XEXP (src, 1))); reg_known_equiv_p[regno] = 0; } --- 2348,2352 ---- op0 = reg_known_value[REGNO (op0)]; reg_known_value[regno] ! = plus_constant (op0, INTVAL (XEXP (src, 1))); reg_known_equiv_p[regno] = 0; } *** explow.c 2001/06/15 22:05:09 1.63 --- explow.c 2001/07/03 01:30:22 *************** plus_constant_wide (x, c) *** 175,178 **** --- 175,183 ---- } break; + + case LO_SUM: + return gen_rtx_LO_SUM (mode, XEXP (x, 0), + plus_constant (XEXP (x, 1), c)); + default: *************** plus_constant_wide (x, c) *** 189,211 **** else return x; - } - - /* This is the same as `plus_constant', except that it handles LO_SUM. - - This function should be used via the `plus_constant_for_output' macro. */ - - rtx - plus_constant_for_output_wide (x, c) - register rtx x; - register HOST_WIDE_INT c; - { - register enum machine_mode mode = GET_MODE (x); - - if (GET_CODE (x) == LO_SUM) - return gen_rtx_LO_SUM (mode, XEXP (x, 0), - plus_constant_for_output (XEXP (x, 1), c)); - - else - return plus_constant (x, c); } --- 194,197 ---- *** recog.c 2001/06/12 17:54:39 1.109 --- recog.c 2001/07/03 01:30:33 *************** offsettable_address_p (strictp, mode, y) *** 1969,1973 **** valid addresses then so is Y+d for all 0 Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19993 invoked by alias); 3 Jul 2001 05:48:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19916 invoked from network); 3 Jul 2001 05:48:21 -0000 Received: from unknown (HELO cc730106-b.taylor1.mi.home.com) (24.13.63.84) by sourceware.cygnus.com with SMTP; 3 Jul 2001 05:48:21 -0000 Received: from localhost (jsturm@localhost) by cc730106-b.taylor1.mi.home.com (8.9.3/8.9.3) with ESMTP id CAA18521; Tue, 3 Jul 2001 02:50:26 -0400 X-Authentication-Warning: mars.deadcafe.org: jsturm owned process doing -bs Date: Tue, 3 Jul 2001 02:50:26 -0400 (EDT) From: Jeff Sturm X-Sender: jsturm@mars.deadcafe.org To: gcc-patches@gcc.gnu.org cc: java-patches@gcc.gnu.org Subject: PATCH: java instance initializers Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII If a java class contains instance initializers called through a constructor invoking `this', the initializers are executed twice: public class II { { System.out.println("ii"); } public II() { } public II(int x) { this(); } public static void main(String[] args) { new II(0); } } $ gcj -C II.java; gij II ii ii The patch below fixes this bug and passes the libgcj testsuite. OK for trunk? 2001-07-02 Jeff Sturm * java/parse.y (fix_constructors): Test if a CALL_EXPR invokes `this'. If so, don't build instance initializers. --- parse.y.orig Mon Jul 2 22:03:26 2001 +++ parse.y Mon Jul 2 22:17:29 2001 @@ -8535,6 +8535,7 @@ else { int found = 0; + int invokes_this = 0; tree found_call = NULL_TREE; tree main_block = BLOCK_EXPR_BODY (body); tree ii; /* Instance Initializer */ @@ -8544,6 +8545,9 @@ { case CALL_EXPR: found = CALL_EXPLICIT_CONSTRUCTOR_P (body); + if (EXPR_WFL_NODE (TREE_OPERAND (body, 0)) == + this_identifier_node) + invokes_this = 1; body = NULL_TREE; break; case COMPOUND_EXPR: @@ -8578,7 +8582,7 @@ } /* Insert the instance initializer block right after. */ - if ((ii = build_instance_initializer (mdecl))) + if (!invokes_this && (ii = build_instance_initializer (mdecl))) compound = add_stmt_to_compound (compound, NULL_TREE, ii); /* Fix the constructor main block if we're adding extra stmts */ From gcc-patches-return-37956-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 06:25:41 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28275 invoked by alias); 3 Jul 2001 06:25:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28152 invoked from network); 3 Jul 2001 06:25:34 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 3 Jul 2001 06:25:34 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id XAA28857; Mon, 2 Jul 2001 23:42:54 -0700 To: jjohnstn@cygnus.com (J. Johnston) Cc: cgen@sources.redhat.com, gdb-patches@sources.redhat.com CC: gcc-patches@gcc.gnu.org Subject: Re: Libiberty regex support - revised patch References: <3B3BB266.551EDBCD.cygnus.local.cgen@cygnus.com> From: Geoff Keating Date: 02 Jul 2001 23:41:53 -0700 In-Reply-To: jjohnstn@cygnus.com's message of "28 Jun 2001 15:57:19 -0700" Message-ID: Lines: 5 X-Mailer: Gnus v5.5/Emacs 20.3 This patch is OK for GCC, if it hasn't been approved already. -- - Geoffrey Keating From gcc-patches-return-37957-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 07:26:48 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13683 invoked by alias); 3 Jul 2001 07:26:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13641 invoked from network); 3 Jul 2001 07:26:42 -0000 Received: from unknown (HELO newton.math.purdue.edu) (128.210.3.6) by sourceware.cygnus.com with SMTP; 3 Jul 2001 07:26:42 -0000 Received: from banach.math.purdue.edu (lucier@banach.math.purdue.edu [128.210.3.16]) by newton.math.purdue.edu (8.10.1/8.10.1/PURDUE_MATH-4.0) with ESMTP id f637QdJ00031; Tue, 3 Jul 2001 02:26:39 -0500 (EST) Received: (from lucier@localhost) by banach.math.purdue.edu (8.10.1/8.10.1/PURDUE_MATH-4.0) id f637Qc816902; Tue, 3 Jul 2001 02:26:38 -0500 (EST) From: Brad Lucier Message-Id: <200107030726.f637Qc816902@banach.math.purdue.edu> Subject: Re: Suggested addition to documentation To: pfeifer@dbai.tuwien.ac.at (Gerald Pfeifer) Date: Tue, 3 Jul 2001 02:26:38 -0500 (EST) Cc: lucier@math.purdue.edu, gcc-patches@gcc.gnu.org In-Reply-To: from "Gerald Pfeifer" at Jul 02, 2001 05:17:21 PM X-Mailer: ELM [version 2.5 PL0] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit > > On Fri, 29 Jun 2001 lucier@math.purdue.edu wrote: > > At the end of this message is a note I posted to comp.arch in > > response to Bernd Payson's claim that gcc-3.0 has optimization bugs > > because gforth runs much more slowly when compiled with gcc-3.0 than > > when compiled with gcc-2.95.2. So, again, I suggest that the > > documentation be augmented with the following warning, which is a diff > > against invoke.texi in gcc-3.0 release. > > This change is fine. Would you mind making the reference a real @xref > and breaking line(s) over 76 chars? No problem. I'm not sure about how to use @xref, though. Brad * invoke.texi: Document that -fgcse may cause programs using computed gotos to run more slowly. =================================================================== RCS file: RCS/invoke.texi,v retrieving revision 1.1 diff -cp -r1.1 invoke.texi *** invoke.texi 2001/06/29 13:10:35 1.1 --- invoke.texi 2001/07/03 06:36:43 *************** function inlining, and register renaming *** 3154,3159 **** --- 3154,3162 ---- @option{-fforce-mem} option on all machines and frame pointer elimination on machines where doing so does not interfere with debugging. + Please note the warning under @option{-fgcse} (@xref{fgcse}) about + invoking @option{-O2} on programs that use computed gotos. + @item -O3 @opindex O3 Optimize yet more. @option{-O3} turns on all optimizations specified by *************** Run the loop optimizer twice. *** 3398,3403 **** --- 3401,3411 ---- @opindex fgcse Perform a global common subexpression elimination pass. This pass also performs global constant and copy propagation. + + @emph{Note:} When you compile a program using computed gotos, a GCC + extension, you may get better runtime performance if you disable + the global common subexpression elmination pass by adding + @option{-fno-gcse} to the command line. @item -fdelete-null-pointer-checks @opindex fdelete-null-pointer-checks From gcc-patches-return-37958-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 08:35:33 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7326 invoked by alias); 3 Jul 2001 08:35:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7263 invoked from network); 3 Jul 2001 08:35:23 -0000 Received: from unknown (HELO navy.csi.cam.ac.uk) (131.111.8.49) by sourceware.cygnus.com with SMTP; 3 Jul 2001 08:35:23 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by navy.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HLeT-0002ZM-00 for gcc-patches@gcc.gnu.org; Tue, 03 Jul 2001 09:35:21 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HLeT-0001Qw-00 for ; Tue, 03 Jul 2001 09:35:21 +0100 Date: Tue, 3 Jul 2001 09:35:21 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Subject: cppinternals.texi merged from mainline Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII I've merged cppinternals.texi on the branch from mainline: Index: ChangeLog =================================================================== RCS file: /cvs/gcc/gcc/gcc/ChangeLog,v retrieving revision 1.9240.2.674 diff -u -r1.9240.2.674 ChangeLog --- ChangeLog 2001/07/03 00:50:43 1.9240.2.674 +++ ChangeLog 2001/07/03 08:33:17 @@ -1,5 +1,7 @@ 2001-07-03 Joseph S. Myers + * doc/cppinternals.texi: Merge from mainline. + * doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Improve formatting. Improve documentation of -std and -Wwrite-strings. Index: doc/cppinternals.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/cppinternals.texi,v retrieving revision 1.2.2.3 diff -u -r1.2.2.3 cppinternals.texi --- cppinternals.texi 2001/06/27 15:08:24 1.2.2.3 +++ cppinternals.texi 2001/07/03 08:33:18 @@ -72,7 +72,7 @@ The GNU C preprocessor in GCC 3.0 has been completely rewritten. It is now implemented as a library, cpplib, so it can be easily shared between a stand-alone preprocessor, and a preprocessor integrated with the C, -C++ and Objective C front ends. It is also available for use by other +C++ and Objective-C front ends. It is also available for use by other programs, though this is not recommended as its exposed interface has not yet reached a point of reasonable stability. @@ -90,7 +90,7 @@ @menu * Conventions:: Conventions used in the code. -* Lexer:: The combined C, C++ and Objective C Lexer. +* Lexer:: The combined C, C++ and Objective-C Lexer. * Whitespace:: Input and output newlines and whitespace. * Hash Nodes:: All identifiers are hashed. * Macro Expansion:: Macro expansion algorithm. @@ -191,7 +191,7 @@ @samp{"} or @samp{>} terminates the header name. Interpretation of some character sequences depends upon whether we are -lexing C, C++ or Objective C, and on the revision of the standard in +lexing C, C++ or Objective-C, and on the revision of the standard in force. For example, @samp{::} is a single token in C++, but two separate @samp{:} tokens, and almost certainly a syntax error, in C@. Such cases are handled in the main function @samp{_cpp_lex_token}, based @@ -392,7 +392,7 @@ the host supports it, we try to map suitably large files into memory, rather than reading them in directly. -The include paths are intenally stored on a null-terminated +The include paths are internally stored on a null-terminated singly-linked list, starting with the @code{"header.h"} directory search chain, which then links into the @code{} directory chain. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37959-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 09:33:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24225 invoked by alias); 3 Jul 2001 09:32:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24074 invoked from network); 3 Jul 2001 09:32:53 -0000 Received: from unknown (HELO amsmta06-svc.chello.nl) (213.46.240.7) by sourceware.cygnus.com with SMTP; 3 Jul 2001 09:32:53 -0000 Received: from delius.kettenis.local ([213.46.72.245]) by amsmta06-svc.chello.nl (InterMail vK.4.03.02.00 201-232-124 license dd4a379df8e387594186908c65258374) with ESMTP id <20010703093248.MGPS13241.amsmta06-svc@delius.kettenis.local>; Tue, 3 Jul 2001 11:32:48 +0200 Received: (from kettenis@localhost) by delius.kettenis.local (8.10.1/8.10.1) id f639VAf26923; Tue, 3 Jul 2001 11:31:10 +0200 Date: Tue, 3 Jul 2001 11:31:10 +0200 From: Mark Kettenis Message-Id: <200107030931.f639VAf26923@delius.kettenis.local> To: gcc-patches@gcc.gnu.org CC: libtool@gnu.org Subject: 3.0.1 PATCH: Add support for shared libstdc++ on the Hurd Missed this for 3.0. Turned out that libtool didn't support shared libraries for C++ on the Hurd, which meant that only libstdc++.a gets built. Could be seen as a regression from 2.95 since libstdc++ v2 did get built as a shared library on the Hurd. Fixed by the attached patch. Since the libtool multi-langauge-branch is closed, I'm not sure whether I should submit this patch to the libtool folks too ... well I CC'ed them anyway. I will send them a patch for HEAD soon. Index: ChangeLog from Mark Kettenis * ltcf-cxx.sh: Add support for GNU. Index: ltcf-cxx.sh =================================================================== RCS file: /cvsroot/libtool/libtool/Attic/ltcf-cxx.sh,v retrieving revision 1.1.2.47 diff -u -p -r1.1.2.47 ltcf-cxx.sh --- ltcf-cxx.sh 2001/05/28 20:59:25 1.1.2.47 +++ ltcf-cxx.sh 2001/07/03 09:01:45 @@ -242,6 +242,8 @@ case $host_os in # conventions ld_shlibs=yes ;; + gnu*) + ;; hpux*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' @@ -739,6 +741,8 @@ else ;; freebsd*) # FreeBSD uses GNU C++ + ;; + gnu*) ;; hpux9* | hpux10* | hpux11*) case $cc_basename in From gcc-patches-return-37960-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 09:48:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14522 invoked by alias); 3 Jul 2001 09:48:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14498 invoked from network); 3 Jul 2001 09:48:56 -0000 Received: from unknown (HELO fw-cam.cambridge.arm.com) (193.131.176.3) by sourceware.cygnus.com with SMTP; 3 Jul 2001 09:48:56 -0000 Received: by fw-cam.cambridge.arm.com; id KAA28252; Tue, 3 Jul 2001 10:48:48 +0100 (BST) Received: from unknown(172.16.1.2) by fw-cam.cambridge.arm.com via smap (V5.5) id xma027872; Tue, 3 Jul 01 10:48:18 +0100 Received: from cam-mail2.cambridge.arm.com (localhost [127.0.0.1]) by cam-admin0.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id KAA16527; Tue, 3 Jul 2001 10:48:23 +0100 (BST) Received: from sun18.cambridge.arm.com (sun18.cambridge.arm.com [172.16.2.18]) by cam-mail2.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id KAA14458; Tue, 3 Jul 2001 10:48:22 +0100 (BST) Message-Id: <200107030948.KAA14458@cam-mail2.cambridge.arm.com> X-Mailer: exmh version 2.0.2 2/24/98 To: "Zack Weinberg" cc: Richard.Earnshaw@arm.com, gcc-patches@gcc.gnu.org Reply-To: Richard.Earnshaw@arm.com Organization: ARM Ltd. X-Telephone: +44 1223 400569 (direct+voicemail), +44 1223 400400 (switchbd) X-Fax: +44 1223 400410 X-Address: ARM Ltd., 110 Fulbourn Road, Cherry Hinton, Cambridge CB1 9NJ. X-Url: http://www.arm.com/ Subject: Re: Some syntactic sugar for machine descriptions In-reply-to: Your message of "Mon, 02 Jul 2001 15:06:19 PDT." <20010702150619.G12723@stanford.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 03 Jul 2001 10:48:21 +0100 From: Richard Earnshaw > On Mon, Jul 02, 2001 at 04:29:06PM +0100, Richard Earnshaw wrote: > > > > Why the extra level of scoping? IMO it would be cleaner to have the const > > char *str at the scope of the entire switch, rather than for just for a > > few cases. > > Honestly, I'm not sure why I did that. I did the patch immediately > upon waking up and may not have been thinking clearly enough. > > I'll re-do it without the extra narrow scope. OK to apply with that change? > Yes. R. From gcc-patches-return-37961-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 10:27:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24375 invoked by alias); 3 Jul 2001 10:27:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24335 invoked from network); 3 Jul 2001 10:26:59 -0000 Received: from unknown (HELO mail.brainstorm.co.uk) (213.86.156.82) by sourceware.cygnus.com with SMTP; 3 Jul 2001 10:26:59 -0000 Received: from nicola.brainstorm.co.uk (IDENT:nicola@nicola.brainstorm.co.uk [192.168.4.138]) by mail.brainstorm.co.uk (8.11.4/8.11.4) with ESMTP id f63A4Vc28732; Tue, 3 Jul 2001 11:04:31 +0100 Date: Tue, 3 Jul 2001 11:04:31 +0100 (BST) From: Nicola Pero To: Rainer Orth cc: Stan Shebs , ovidiu@cup.hp.com, gcc-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: Avoid link failure of Objective-C testsuite on Solaris2/Intel In-Reply-To: <15168.51840.345200.972499@xayide.TechFak.Uni-Bielefeld.DE> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII > > Here is a complete patch fixing libobjc: > > I've tried your patch on all configurations used to verify my patch to allow > a shared libobjc to work on Solaris > > http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01785.html > > and it fixes all the testsuite differences between the static and shared > cases reported there, so it looks very good. Thanks for the testing. > A few stylistic comments on the patch, though: Ok - at the end of this mail there is a new patch taking into account your comments on style. Btw, I also generated better testcases, much more convincing, they are included as well, please would you commit those instead of the other one as they are much cooler :-) > Btw, the whole file (objc/objc-api.h) is full of GCS violations. Would you > mind providing a patch (probably mainline only) to fix this? Yes - I wouldn't mind - once the real patch which fixes the bug has been applied then I promise I'll submit one to reindent the file. :-) here is the code - should be pretty definitive now - waiting for something to approve and apply the following stuff - Index: ChangeLog =================================================================== RCS file: /cvs/gcc/gcc/libobjc/ChangeLog,v retrieving revision 1.63 diff -u -r1.63 ChangeLog --- ChangeLog 2001/06/09 20:32:56 1.63 +++ ChangeLog 2001/07/03 09:49:54 @@ -1,3 +1,10 @@ +Tue Jul 3 10:49:38 2001 Nicola Pero + + * objc/objc-api.h (object_is_class): Fixed - buggy code was trying + to cast an id to a Class, which can not be done. Make the check + by using CLS_ISMETA on the class pointer instead. + (object_is_meta_class): Similar fix. + 2001-06-09 Alexandre Oliva , Stephen L Moshier * configure.in (AC_EXEEXT): Work around in case it expands to Index: objc/objc-api.h =================================================================== RCS file: /cvs/gcc/gcc/libobjc/objc/objc-api.h,v retrieving revision 1.3 diff -u -r1.3 objc-api.h --- objc-api.h 2001/01/03 08:49:34 1.3 +++ objc-api.h 2001/07/03 09:49:55 @@ -578,22 +578,25 @@ } static inline BOOL -object_is_class(id object) +object_is_class (id object) { - return CLS_ISCLASS((Class)object); + return ((object != nil) && CLS_ISMETA (object->class_pointer)); } static inline BOOL -object_is_instance(id object) +object_is_instance (id object) { - return (object!=nil)&&CLS_ISCLASS(object->class_pointer); + return ((object != nil) && CLS_ISCLASS (object->class_pointer)); } static inline BOOL -object_is_meta_class(id object) +object_is_meta_class (id object) { - return CLS_ISMETA((Class)object); + return ((object != nil) + && !object_is_instance (object) + && !object_is_class (object)); } + struct sarray* objc_get_uninstalled_dtable(void); And now the testcase: ===================== object_is_class.m: ================== /* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */ #include #include #include /* This test demonstrate a failure in object_is_class which was fixed */ /* Create a class whose instance variables mirror the struct used for Class structures in the runtime ... yes we're feeling evil today */ @interface EvilClass : Object { Class super_class; const char* name; long version; unsigned long info; } @end @implementation EvilClass - (id) init { self = [super init]; /* The following one is used in the runtime to mark classes */ info = 0x1L; return self; } @end int main (void) { /* Create an object of our EvilClass */ EvilClass *evilObject = [EvilClass new]; /* Now check that the object is not a class object */ if (object_is_class (evilObject)) { printf ("object_is_class failed\n"); abort (); } return 0; } object_is_meta_class.m: ======================= /* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */ #include #include #include /* This test demonstrate a failure in object_is_meta_class which was fixed */ @interface EvilClass : Object { Class super_class; const char* name; long version; unsigned long info; } @end @implementation EvilClass - (id) init { self = [super init]; /* The following one is used in the runtime to mark meta classes */ info = 0x2L; return self; } @end int main (void) { /* Create an object of our EvilClass */ EvilClass *evilObject = [EvilClass new]; /* Now check that the object is not a meta class object */ if (object_is_meta_class (evilObject)) { printf ("object_is_meta_class failed\n"); abort (); } return 0; } From gcc-patches-return-37962-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 10:29:43 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26384 invoked by alias); 3 Jul 2001 10:29:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26343 invoked from network); 3 Jul 2001 10:29:36 -0000 Received: from unknown (HELO host140.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 3 Jul 2001 10:29:36 -0000 Received: from localhost (bernds@localhost) by host140.cambridge.redhat.com (8.11.2/8.11.2) with ESMTP id f63ATYj09222; Tue, 3 Jul 2001 11:29:34 +0100 X-Authentication-Warning: host140.cambridge.redhat.com: bernds owned process doing -bs Date: Tue, 3 Jul 2001 11:29:34 +0100 (BST) From: Bernd Schmidt X-X-Sender: To: cc: Subject: Re: cse patch to not extend hard reg lifetimes in bad situations In-Reply-To: <200107022027.f62KRrh26065@thief.cygnus.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Mon, 2 Jul 2001, Geoffrey Keating wrote: > The port is not SMALL_REGISTER_CLASSES because it actually has lots of > general registers, only a few instructions have really small register > choices. This is precisely the situation where you want SMALL_REGISTER_CLASSES to be defined. It doesn't matter how many registers there are, if one class is small enough to cause problems like this you need to define this macro. Bernd From gcc-patches-return-37963-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 12:07:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 3762 invoked by alias); 3 Jul 2001 12:07:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3721 invoked from network); 3 Jul 2001 12:07:16 -0000 Received: from unknown (HELO twigboy.cygnus.com) (205.180.230.45) by sourceware.cygnus.com with SMTP; 3 Jul 2001 12:07:16 -0000 Received: from localhost (echristo@localhost) by twigboy.cygnus.com (8.11.0/8.11.0) with ESMTP id f63C8tN02566; Tue, 3 Jul 2001 05:08:55 -0700 Date: Tue, 3 Jul 2001 05:08:55 -0700 (PDT) From: Eric Christopher To: cgd@sibyte.com cc: echristo@redhat.com, gcc-patches@gcc.gnu.org Subject: Re: Patch: mips march/mtune support In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII > use of Branch Likely instructions is strongly discouraged in the > MIPS32 and MIPS64 architectures. See, for instance, page 57 of the > MIPS32 Instruction set manual at > http://www.mips.com/declassified/Declassified_2001/MD00086-2B-MIPS32BIS-AFP-00.95.pdf > (page 65 of the PDF document, it seems -- *sigh*). Yes, I've actually got a patch to add a flag to turn off that functionality that I've yet to submit. It'll be useful for the yet to be contributed MIPS3264 support. -eric -- I will not grease the monkey bars From gcc-patches-return-37964-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 12:42:42 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29185 invoked by alias); 3 Jul 2001 12:42:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28623 invoked from network); 3 Jul 2001 12:41:19 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 3 Jul 2001 12:41:19 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id FAA00486; Tue, 3 Jul 2001 05:57:40 -0700 Date: Tue, 3 Jul 2001 05:57:40 -0700 Message-Id: <200107031257.FAA00486@geoffk.org> X-Authentication-Warning: localhost: geoffk set sender to geoffk@geoffk.org using -f From: Geoff Keating To: bernds@redhat.com CC: gcc-patches@gcc.gnu.org In-reply-to: (message from Bernd Schmidt on Tue, 3 Jul 2001 11:29:34 +0100 (BST)) Subject: Re: cse patch to not extend hard reg lifetimes in bad situations Reply-to: Geoff Keating References: > Date: Tue, 3 Jul 2001 11:29:34 +0100 (BST) > From: Bernd Schmidt > X-X-Sender: > cc: > > On Mon, 2 Jul 2001, Geoffrey Keating wrote: > > > The port is not SMALL_REGISTER_CLASSES because it actually has lots of > > general registers, only a few instructions have really small register > > choices. > > This is precisely the situation where you want SMALL_REGISTER_CLASSES to > be defined. It doesn't matter how many registers there are, if one class > is small enough to cause problems like this you need to define this macro. SMALL_REGISTER_CLASSES is about shortage of spill registers, which is happily not a problem with this chip. Lots of ports don't define SMALL_REGISTER_CLASSES, but yet have register classes that contain only a single register... -- - Geoffrey Keating From gcc-patches-return-37965-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 12:43:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29555 invoked by alias); 3 Jul 2001 12:43:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29502 invoked from network); 3 Jul 2001 12:42:58 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 3 Jul 2001 12:42:58 -0000 Received: from hg.cs.mu.oz.au (root@hg.cs.mu.OZ.AU [128.250.25.19]) by mumnunah.cs.mu.OZ.AU with ESMTP id WAA15384; Tue, 3 Jul 2001 22:42:50 +1000 (EST) Received: (from fjh@localhost) by hg.cs.mu.oz.au (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id WAA21520; Tue, 3 Jul 2001 22:42:49 +1000 Date: Tue, 3 Jul 2001 22:42:49 +1000 From: Fergus Henderson To: Ziemowit Laski Cc: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Support for Pascal strings -- Take 3 Message-ID: <20010703224249.A21517@hg.cs.mu.oz.au> References: <200107022355.QAA29924@scv1.apple.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre3i In-Reply-To: <200107022355.QAA29924@scv1.apple.com> On 02-Jul-2001, Ziemowit Laski wrote: > Index: gcc/testsuite/g++.dg/pascal-strings-1.C ... > + extern "C" void abort (void); > + extern "C" long unsigned strlen (const char *s); That's not standard-conforming C++... why not just use #include and #include ? > --- pascal-strings-1.c Mon Jul 2 15:54:21 2001 > *************** > *** 0 **** > --- 1,44 ---- > + /* Test for handling of Pascal-style string literals */ > + /* Origin: Ziemowit Laski */ > + /* { dg-do run } */ > + /* { dg-options "-std=iso9899:1999 -fpascal-strings" } */ > + > + typedef __WCHAR_TYPE__ wchar_t; > + > + extern void abort (void); > + extern long unsigned strlen (const char *s); Likewise here. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-37966-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 12:47:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32283 invoked by alias); 3 Jul 2001 12:47:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31945 invoked from network); 3 Jul 2001 12:46:34 -0000 Received: from unknown (HELO devserv.devel.redhat.com) (199.183.24.200) by sourceware.cygnus.com with SMTP; 3 Jul 2001 12:46:34 -0000 Received: (from jakub@localhost) by devserv.devel.redhat.com (8.11.0/8.11.0) id f63CkFr01097; Tue, 3 Jul 2001 08:46:15 -0400 Date: Tue, 3 Jul 2001 08:46:15 -0400 From: Jakub Jelinek To: Fergus Henderson Cc: Ziemowit Laski , gcc-patches@gcc.gnu.org Subject: Re: PATCH: Support for Pascal strings -- Take 3 Message-ID: <20010703084615.R32061@devserv.devel.redhat.com> Reply-To: Jakub Jelinek References: <200107022355.QAA29924@scv1.apple.com> <20010703224249.A21517@hg.cs.mu.oz.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010703224249.A21517@hg.cs.mu.oz.au>; from fjh@cs.mu.oz.au on Tue, Jul 03, 2001 at 10:42:49PM +1000 On Tue, Jul 03, 2001 at 10:42:49PM +1000, Fergus Henderson wrote: > On 02-Jul-2001, Ziemowit Laski wrote: > > Index: gcc/testsuite/g++.dg/pascal-strings-1.C > ... > > + extern "C" void abort (void); > > + extern "C" long unsigned strlen (const char *s); > > That's not standard-conforming C++... > why not just use #include and #include ? IMHO testcases should try hard to avoid including any headers, because then they are not exactly minimal testcases (which are easier to debug). I think just typedef __SIZE_TYPE__ size_t; extern "C" size_t strlen (const char *s); should be enough. Jakub From gcc-patches-return-37967-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 13:57:36 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5547 invoked by alias); 3 Jul 2001 13:57:35 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4973 invoked from network); 3 Jul 2001 13:56:13 -0000 Received: from unknown (HELO old-n3.infonet.com) (192.157.130.139) by sourceware.cygnus.com with SMTP; 3 Jul 2001 13:56:13 -0000 Received: from infexch02.infonet.com (riotinto.com [192.92.62.84]) by old-n3.infonet.com (8.11.3/8.6.12) with ESMTP id f63DqQM19164; Tue, 3 Jul 2001 13:52:27 GMT Received: by INFEXCH02 with Internet Mail Service (5.5.2653.19) id ; Tue, 3 Jul 2001 14:55:36 +0100 Message-ID: <8D00C32549556B4E977F81DBC24E985D1B1B06@crtsmail1.technol_exch.corp.riotinto.org> From: "Billinghurst, David (CRTS)" To: "'Kaveh R. Ghazi'" Cc: "'gcc-patches@gcc.gnu.org'" Subject: RE: Solaris2 trunk failure w/C_alloca in gencodes Date: Tue, 3 Jul 2001 14:55:30 +0100 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" I don't think this patch was committed. It works on irix6.5 > -----Original Message----- > From: Kaveh R. Ghazi [SMTP:ghazi@caip.rutgers.edu] > Sent: Monday, June 18, 2001 12:57 PM > To: dan@www.cgsoftware.com > Cc: Billinghurst, David (CRTS); gcc-bugs@gcc.gnu.org; > gcc-patches@gcc.gnu.org; meissner@cygnus.com > Subject: Solaris2 trunk failure w/C_alloca in gencodes > > > 2001-06-16 Daniel Berlin > > > > * bitmap.h: Add dump_bitmap, bitmap_zero, bitmap_union_of_diffs, > > bitmap_a_or_b, bitmap_a_and_b, bitmap_first_set_bit, > > bitmap_last_set_bit. All for compatibility with sbitmap's. > > > > *bitmap.c (bitmap_zero): New function. > > (bitmap_union_of_diffs): New function. > > (bitmap_first_set_bit): New function. > > (bitmap_last_set_bit): New function. > > The above patch breaks the trunk on solaris2 (and probably others) > when using cc for stage1. (E.g. David noted it on irix6.5.) Here's > the failure: > > > cc -DIN_GCC -g -DHAVE_CONFIG_H -DGENERATOR_FILE -o gencodes \ > > gencodes.o rtl.o bitmap.o ggc-none.o gensupport.o hashtab.o > > safe-ctype.o print-rtl.o errors.o ` case "obstack.o" in ?*) echo > > obstack.o ;; esac ` ` case "" in ?*) echo ;; esac ` ` case "" in ?*) > > echo ;; esac ` ` case "" in ?*) echo ;; esac ` > > ild: (undefined symbol) C_alloca -- referenced in the text segment of > > bitmap.o > > make.solaris2[2]: *** [gencodes] Error 5 > > There are two problems. > > First, the patch uses alloca in bitmap.c. Any file like bitmap.c > which is used on both host and build platforms cannot use alloca since > we don't link against libiberty for "build" programs to obtain > C_alloca(). That's the cause of the failure above. > > The second, more insidious, problem is this definition from bitmap.h: > > > /* Allocate a bitmap with alloca. */ > > #define BITMAP_ALLOCA() \ > > bitmap_initialize ((bitmap) alloca (sizeof (bitmap_head))) > > IIRC, passing alloca as an argument of a function is not guaranteed to > work in all cases on all platforms, even when only using gcc. Mixing > in other stage1 compiler's alloca implementations is only worse. > > (Side note: I wish gcc would warn whenever someone does this. Maybe > something for the "projects" list.) > > Anyway, I don't think the definition of BITMAP_ALLOCA came from Dan's > patch, but using it did. We should change bitmap_union_of_diff() so > that it doesn't use alloca, *and* we should change BITMAP_ALLOCA so > that it doesn't pass alloca as a function argument. Note Dan's usage > of BITMAP_ALLOCA was the only one appearing in gcc sources at the > moment. > > > Here's an untested patch which does this. Unfortunately solaris2 > doesn't bootstrap on the trunk for other reasons at the moment noted > here: http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00842.html > > Also I'll be away for a week starting Monday, so I won't be able to > test and/or checkin this patch until the following weekend at the > earliest (if the other solaris2 problem is fixed by then.) If someone > else (Dan?) could spin this on something other than solaris2 and check > it in when approved I'd appreciate it. > > Thanks, > --Kaveh > > > 2001-06-17 Kaveh R. Ghazi > > * bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA. > > * bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a > function. > > diff -rup orig/egcs-CVS20010617/gcc/bitmap.c egcs-CVS20010617/gcc/bitmap.c > --- orig/egcs-CVS20010617/gcc/bitmap.c Sat Jun 16 16:30:14 2001 > +++ egcs-CVS20010617/gcc/bitmap.c Sun Jun 17 22:11:56 2001 > @@ -687,9 +687,11 @@ bitmap_union_of_diff (dst, a, b, c) > bitmap c; > { > int changed = 0; > - bitmap temp = BITMAP_ALLOCA (); > + bitmap temp = BITMAP_XMALLOC (); > + > bitmap_operation (temp, b, c, BITMAP_AND_COMPL); > changed = bitmap_operation (dst, temp, a, BITMAP_IOR); > + BITMAP_XFREE (temp); > return changed; > } > > diff -rup orig/egcs-CVS20010617/gcc/bitmap.h egcs-CVS20010617/gcc/bitmap.h > --- orig/egcs-CVS20010617/gcc/bitmap.h Sat Jun 16 16:30:14 2001 > +++ egcs-CVS20010617/gcc/bitmap.h Sun Jun 17 22:09:50 2001 > @@ -119,10 +119,17 @@ extern int bitmap_last_set_bit PARAMS((b > #define BITMAP_OBSTACK_ALLOC(OBSTACK) \ > bitmap_initialize ((bitmap) obstack_alloc (OBSTACK, sizeof > (bitmap_head))) > > -/* Allocate a bitmap with alloca. */ > -#define BITMAP_ALLOCA() \ > - bitmap_initialize ((bitmap) alloca (sizeof (bitmap_head))) > - > +/* Allocate a bitmap with alloca. Note alloca cannot be passed as an > + argument to a function, so we set a temporary variable to the value > + returned by alloca and pass that variable to bitmap_initialize(). > + PTR is then set to the value returned from bitmap_initialize() to > + avoid having it appear more than once in case it has side effects. */ > +#define BITMAP_ALLOCA(PTR) \ > +do { \ > + bitmap temp_bitmap_ = (bitmap) alloca (sizeof (bitmap_head)); \ > + (PTR) = bitmap_initialize (temp_bitmap_); \ > +} while (0) > + > /* Allocate a bitmap with xmalloc. */ > #define BITMAP_XMALLOC() \ > bitmap_initialize ((bitmap) xmalloc (sizeof (bitmap_head))) From gcc-patches-return-37968-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 14:01:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8275 invoked by alias); 3 Jul 2001 14:01:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7491 invoked from network); 3 Jul 2001 14:00:28 -0000 Received: from unknown (HELO tungsten.btinternet.com) (194.73.73.81) by sourceware.cygnus.com with SMTP; 3 Jul 2001 14:00:28 -0000 Received: from [213.122.28.40] (helo=north-pole.nickc.cambridge.redhat.com) by tungsten.btinternet.com with esmtp (Exim 3.22 #9) id 15HQj2-0003ka-00; Tue, 03 Jul 2001 15:00:24 +0100 Received: from north-pole.nickc.cambridge.redhat.com.nickc.cambridge.redhat.com (localhost [127.0.0.1]) by north-pole.nickc.cambridge.redhat.com (Postfix) with ESMTP id D34D711257D; Tue, 3 Jul 2001 15:00:30 +0100 (BST) To: "Joseph S. Myers" Cc: Subject: Re: [RFA] Append / to -B References: From: Nick Clifton Date: 03 Jul 2001 15:00:30 +0100 In-Reply-To: Message-ID: Lines: 46 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Hi Joseph, > > + As a special kludge, if the path provided by @option{-B} is > > + @samp{[foo/]stage/} then it will be replaced by > > + @samp{[foo/]include}. This is to help with boot-strapping the compiler. > > @file not @samp. Use @var{foo} (or better, @var{dir}). Use @var{N} not > . Indicate exactly what N can be. Ok, I have applied this patch: Cheers Nick 2001-07-03 Nick Clifton * doc/invoke.texi (Directory Options): Specify range for in -B option. Use 'dir' not 'foo' as example directory name. Index: gcc/doc/invoke.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/invoke.texi,v retrieving revision 1.30 diff -p -r1.30 invoke.texi *** invoke.texi 2001/07/03 00:46:05 1.30 --- invoke.texi 2001/07/03 13:51:54 *************** the environment variable @env{GCC_EXEC_P *** 4430,4437 **** Variables}. As a special kludge, if the path provided by @option{-B} is ! @file{[foo/]stage@var{N}/} then it will be replaced by ! @file{[foo/]include}. This is to help with boot-strapping the compiler. @item -specs=@var{file} @opindex specs --- 4430,4438 ---- Variables}. As a special kludge, if the path provided by @option{-B} is ! @file{[dir/]stage@var{N}/}, where @var{N} is a number in the range 0 to ! 9, then it will be replaced by @file{[dir/]include}. This is to help ! with boot-strapping the compiler. @item -specs=@var{file} @opindex specs From gcc-patches-return-37969-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 14:57:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9645 invoked by alias); 3 Jul 2001 14:57:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9617 invoked from network); 3 Jul 2001 14:57:03 -0000 Received: from unknown (HELO shell14.ba.best.com) (206.184.139.145) by sourceware.cygnus.com with SMTP; 3 Jul 2001 14:57:03 -0000 Received: (from tm2@localhost) by shell14.ba.best.com (8.9.3/8.9.2/best.sh) id HAA17732; Tue, 3 Jul 2001 07:56:15 -0700 (PDT) From: Toshi Morita Message-Id: <200107031456.HAA17732@shell14.ba.best.com> Subject: Re: cse patch to not extend hard reg lifetimes in bad situations In-Reply-To: <200107031257.FAA00486@geoffk.org> from Geoff Keating at "Jul 3, 1 05:57:40 am" To: geoffk@redhat.com Date: Tue, 3 Jul 2001 07:56:14 -0700 (PDT) Cc: gcc-patches@gcc.gnu.org X-Mailer: ELM [version 2.4ME+ PL38 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > > Date: Tue, 3 Jul 2001 11:29:34 +0100 (BST) > > From: Bernd Schmidt > > X-X-Sender: > > cc: > > > > On Mon, 2 Jul 2001, Geoffrey Keating wrote: > > > > > The port is not SMALL_REGISTER_CLASSES because it actually has lots of > > > general registers, only a few instructions have really small register > > > choices. > > > > This is precisely the situation where you want SMALL_REGISTER_CLASSES to > > be defined. It doesn't matter how many registers there are, if one class > > is small enough to cause problems like this you need to define this macro. > > SMALL_REGISTER_CLASSES is about shortage of spill registers, which is > happily not a problem with this chip. > > Lots of ports don't define SMALL_REGISTER_CLASSES, but yet have > register classes that contain only a single register... If what you say is true, then it sounds like this macro is horribly misnamed and should be renamed something more apropos... Toshi From gcc-patches-return-37970-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 15:49:27 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13876 invoked by alias); 3 Jul 2001 15:49:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13853 invoked from network); 3 Jul 2001 15:49:25 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 3 Jul 2001 15:49:25 -0000 Received: from sossusvlei.cs.tu-berlin.de (rl@sossusvlei.cs.tu-berlin.de [130.149.19.33]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id RAA09339 for ; Tue, 3 Jul 2001 17:46:12 +0200 (MET DST) Received: (from rl@localhost) by sossusvlei.cs.tu-berlin.de (8.9.3/8.9.3) id RAA21173; Tue, 3 Jul 2001 17:46:11 +0200 (MET DST) Date: Tue, 3 Jul 2001 17:46:10 +0200 (MET DST) From: Roman Lechtchinsky X-Sender: rl@sossusvlei To: gcc-patches@gcc.gnu.org Subject: [patch] SWAP compatibility fix Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, the patch fixes a problem with SWAP on platforms with sizeof(int) > 32 as suggested by Richard Henderson. Bootstrapped and regtested on sparc-sun-solaris2.7 with http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01619.html and --enable-languages="c,c++,f77,objc" (libjava doesn't compile even without the patch), together with the next patch I'm about to submit. Bye Roman 2001-07-03 Roman Lechtchinsky * intl/gettextP.h (SWAP): Change parameter type to unsigned int. Index: intl/gettextP.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/intl/gettextP.h,v retrieving revision 1.2 diff -c -3 -p -r1.2 gettextP.h *** gettextP.h 1999/09/04 15:08:49 1.2 --- gettextP.h 2001/07/03 15:31:11 *************** *** 44,56 **** # include # define SWAP(i) bswap_32 (i) #else ! static nls_uint32 SWAP PARAMS ((nls_uint32 i)); static inline nls_uint32 SWAP (i) ! nls_uint32 i; { ! return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); } #endif --- 44,57 ---- # include # define SWAP(i) bswap_32 (i) #else ! static nls_uint32 SWAP PARAMS ((unsigned int i)); static inline nls_uint32 SWAP (i) ! unsigned int i; { ! nls_uint32 x = (nls_uint32) i; ! return (x << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | (x >> 24); } #endif From gcc-patches-return-37971-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 15:59:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18957 invoked by alias); 3 Jul 2001 15:59:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18545 invoked from network); 3 Jul 2001 15:57:39 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 3 Jul 2001 15:57:39 -0000 Received: from fencer.cygnus.com (fencer.cygnus.com [205.180.230.60]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id IAA04481; Tue, 3 Jul 2001 08:57:38 -0700 (PDT) Received: (apbianco@localhost) by fencer.cygnus.com (8.9.3/8.6.4) id IAA05149; Tue, 3 Jul 2001 08:57:37 -0700 From: Alexandre Petit-Bianco MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15169.60273.588701.922377@fencer.cygnus.com> Date: Tue, 3 Jul 2001 08:57:37 -0700 (PDT) To: Jeff Sturm Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: PATCH: java instance initializers In-Reply-To: References: X-Mailer: VM 6.62 under Emacs 19.34.1 Reply-To: apbianco@cygnus.com X-Organization: Red Hat, Sunnyvale CA, USA. X-URL: http://gcc.gnu.org/java/ X-Zippy: I'm not an Iranian!! I voted for Dianne Feinstein!! Jeff Sturm writes: > If a java class contains instance initializers called through a > constructor invoking `this', the initializers are executed twice: Good catch. Thanks. > The patch below fixes this bug and passes the libgcj testsuite. OK > for trunk? Yes. > @@ -8544,6 +8545,9 @@ > { > case CALL_EXPR: > found = CALL_EXPLICIT_CONSTRUCTOR_P (body); > + if (EXPR_WFL_NODE (TREE_OPERAND (body, 0)) == > + this_identifier_node) > + invokes_this = 1; > body = NULL_TREE; > break; > case COMPOUND_EXPR: I would just say: > { > case CALL_EXPR: > found = CALL_EXPLICIT_CONSTRUCTOR_P (body); > + invokes_this = CALL_THIS_CONSTRUCTOR_P (body) > body = NULL_TREE; > break; > case COMPOUND_EXPR: ./A From gcc-patches-return-37972-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 16:14:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29188 invoked by alias); 3 Jul 2001 16:14:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29159 invoked from network); 3 Jul 2001 16:14:00 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 3 Jul 2001 16:14:00 -0000 Received: from sossusvlei.cs.tu-berlin.de (rl@sossusvlei.cs.tu-berlin.de [130.149.19.33]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id SAA11891 for ; Tue, 3 Jul 2001 18:07:31 +0200 (MET DST) Received: (from rl@localhost) by sossusvlei.cs.tu-berlin.de (8.9.3/8.9.3) id SAA21201; Tue, 3 Jul 2001 18:07:31 +0200 (MET DST) Date: Tue, 3 Jul 2001 18:07:31 +0200 (MET DST) From: Roman Lechtchinsky X-Sender: rl@sossusvlei To: gcc-patches@gcc.gnu.org Subject: [patch] Parameter passing fix Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, this patch fixes a problem with parameter passing on the T3E. The problem is that GCC will use memcpy to copy large BLKmode arguments to the stack. Unfortunately, arguments to memcpy might occupy the same stack space as the argument which is to be copied. This problem is described in more detail in http://gcc.gnu.org/ml/gcc/2000-04/msg00066.html and a fix has been suggested in http://gcc.gnu.org/ml/gcc-patches/2000-12/msg01279.html. This patch makes it work on the Cray T3E also. It would be really nice someone could test it one PowerPC and M88K (which is the only other target to define STACK_PARMS_IN_REG_PARM_AREA). Bootstrapped and regtested on sparc-sun-solaris2.7 with http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01619.html and --enable-languages="c,c++,f77,objc" (libjava doesn't compile even without the patch). Bye Roman 2001-07-03 Roman Lechtchinsky * calls.c (store_one_arg): Make sure that the entire argument is pushed if STACK_PARMS_IN_REG_PARM_AREA is defined. Index: calls.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/calls.c,v retrieving revision 1.185 diff -c -3 -p -r1.185 calls.c *** calls.c 2001/05/05 01:30:51 1.185 --- calls.c 2001/07/03 15:44:54 *************** store_one_arg (arg, argblock, flags, var *** 4619,4625 **** --- 4619,4629 ---- /* If parm is passed both in stack and in register and offset is greater than reg_parm_stack_space, split the offset. */ + #ifndef STACK_PARMS_IN_REG_PARM_AREA if (arg->reg && arg->pass_on_stack) + #else + if (1) + #endif { if (arg->offset.constant < reg_parm_stack_space && arg->offset.var) error ("variable offset is passed paritially in stack and in reg"); *************** store_one_arg (arg, argblock, flags, var *** 4635,4642 **** excess, argblock, ARGS_SIZE_RTX (arg->offset), reg_parm_stack_space, ARGS_SIZE_RTX (arg->alignment_pad)); - - size_rtx = GEN_INT (INTVAL(size_rtx) - reg_parm_stack_space); } } --- 4639,4644 ---- From gcc-patches-return-37973-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 16:21:46 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32062 invoked by alias); 3 Jul 2001 16:21:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 31757 invoked from network); 3 Jul 2001 16:20:22 -0000 Received: from unknown (HELO gash2.peakpeak.com) (207.174.178.17) by sourceware.cygnus.com with SMTP; 3 Jul 2001 16:20:22 -0000 Received: from creche.cygnus.com (tq0146.peakpeak.com [207.174.177.146]) by gash2.peakpeak.com (8.9.3/8.9.3) with ESMTP id KAA02994; Tue, 3 Jul 2001 10:20:18 -0600 Received: (from tromey@localhost) by creche.cygnus.com (8.9.3/8.9.3) id KAA09443; Tue, 3 Jul 2001 10:41:02 -0600 To: Jeff Sturm Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: PATCH: java instance initializers References: X-Zippy: I want you to organize my PASTRY trays... my TEA-TINS are gleaming in formation like a ROW of DRUM MAJORETTES -- please don't be FURIOUS with me -- X-Attribution: Tom Reply-To: tromey@redhat.com From: Tom Tromey Date: 03 Jul 2001 10:41:00 -0600 In-Reply-To: Jeff Sturm's message of "Tue, 3 Jul 2001 02:50:26 -0400 (EDT)" Message-ID: <87n16m9d9f.fsf@creche.redhat.com> Lines: 8 X-Mailer: Gnus v5.7/Emacs 20.5 >>>>> "Jeff" == Jeff Sturm writes: Jeff> If a java class contains instance initializers called through a Jeff> constructor invoking `this', the initializers are executed twice: Could you check your test case in to libjava/testsuite/libjava.lang ? Tom From gcc-patches-return-37974-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 16:38:25 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4066 invoked by alias); 3 Jul 2001 16:38:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3854 invoked from network); 3 Jul 2001 16:37:02 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 3 Jul 2001 16:37:02 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HTAb-0002Jj-00 for gcc-patches@gcc.gnu.org; Tue, 03 Jul 2001 17:37:01 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HTAa-0000Fz-00 for ; Tue, 03 Jul 2001 17:37:00 +0100 Date: Tue, 3 Jul 2001 17:37:00 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Subject: Patch to add common doc files gpl.texi, funding.texi, in doc/include directory Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII This patch moves common files between the GCC manuals, such as fdl.texi, to a subdirectory of gcc/doc - gcc/doc/include - and adds two new such files, funding.texi and gpl.texi, which were previously duplicate parts of manuals. This allows front ends to use the same file names for parts of their manual as are used for parts of the main GCC manual (e.g. GNU Pascal has a file invoke.texi) and still use these common files without problems arising from filename conflicts and getting the wrong file with such a name included, as long as they only avoid the much smaller collection of filenames in doc/include. (There is still the problem that update_web_docs wants all filenames to be unique throughout the source tree, but I can fix that when it is necessary to accommodate treelang or GPC in the source tree.) There should probably be more common include files, especially one to specify the GCC version number in a single place for all the manuals. The Look and Feel section is removed from the G77 manual since the corresponding section it refers to was removed from the main GCC manual in a gcc2 merge some time ago; Funding Free Software is added to the invariant sections of the G77 manual for consistency with the GCC manual. Bootstrapped and passed "make info" and "make dvi" with no regressions on i686-pc-linux-gnu. OK to commit to mainline? OK for branch as well? 2001-07-03 Joseph S. Myers * doc/include: New directory. * doc/fdl.texi: Move to doc/include/fdl.texi. * doc/texinfo.tex: Move to doc/include/texinfo.tex. * doc/include/funding.texi, doc/include/gpl.texi: New files. * doc/gcc.texi: Use funding.texi and gpl.texi. * Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info, $(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi): Update dependencies and use -I $(docdir)/include. 2001-07-03 Joseph S. Myers * g77.texi: Use gpl.texi and funding.texi. Remove Look and Feel section. Add Funding Free Software to invariant sections. * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Update dependencies and use doc/include in search path. 2001-07-03 Joseph S. Myers * gcj.texi: Use gpl.texi. * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update dependencies and use doc/include in search path. [moving of fdl.texi and texinfo.tex omitted in the patch below] diff -ruN gcc.orig/Makefile.in gcc/Makefile.in --- gcc.orig/Makefile.in Tue Jun 26 22:01:55 2001 +++ gcc/Makefile.in Wed Jun 27 18:28:58 2001 @@ -2204,32 +2204,36 @@ info: $(docdir)/cpp.info $(docdir)/gcc.info lang.info $(docdir)/cppinternals.info $(docdir)/cpp.info: $(docdir)/cpp.texi - cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/cpp.info doc/cpp.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi -$(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install.texi \ - $(docdir)/invoke.texi $(docdir)/md.texi $(docdir)/c-tree.texi \ - $(docdir)/rtl.texi $(docdir)/tm.texi $(docdir)/gcov.texi \ - $(docdir)/contrib.texi $(docdir)/objc.texi $(docdir)/fdl.texi - cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/gcc.info doc/gcc.texi +$(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/extend.texi \ + $(docdir)/install-old.texi $(docdir)/invoke.texi $(docdir)/md.texi \ + $(docdir)/c-tree.texi $(docdir)/rtl.texi $(docdir)/tm.texi \ + $(docdir)/gcov.texi $(docdir)/contrib.texi $(docdir)/objc.texi \ + $(docdir)/include/fdl.texi $(docdir)/include/gpl.texi \ + $(docdir)/include/funding.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi $(docdir)/cppinternals.info: $(docdir)/cppinternals.texi - cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -o doc/cppinternals.info \ + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cppinternals.info \ doc/cppinternals.texi dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. cpp.dvi: $(docdir)/cpp.texi - $(TEXI2DVI) -I $(docdir) $(docdir)/cpp.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi -gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install.texi \ +gcc.dvi: $(docdir)/gcc.texi $(docdir)/extend.texi $(docdir)/install-old.texi \ $(docdir)/invoke.texi $(docdir)/md.texi $(docdir)/c-tree.texi \ $(docdir)/rtl.texi $(docdir)/tm.texi $(docdir)/gcov.texi \ - $(docdir)/contrib.texi $(docdir)/objc.texi $(docdir)/fdl.texi - $(TEXI2DVI) -I $(docdir) $(docdir)/gcc.texi + $(docdir)/contrib.texi $(docdir)/objc.texi \ + $(docdir)/include/fdl.texi $(docdir)/include/gpl.texi \ + $(docdir)/include/funding.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gcc.texi cppinternals.dvi: $(docdir)/cppinternals.texi - $(TEXI2DVI) -I $(docdir) $(docdir)/cppinternals.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 diff -ruN gcc.orig/doc/gcc.texi gcc/doc/gcc.texi --- gcc.orig/doc/gcc.texi Wed Jun 27 14:54:21 2001 +++ gcc/doc/gcc.texi Wed Jun 27 18:28:58 2001 @@ -4158,54 +4158,7 @@ @end table @end ifset -@node Funding -@unnumbered Funding Free Software - -If you want to have more free software a few years from now, it makes -sense for you to help encourage people to contribute funds for its -development. The most effective approach known is to encourage -commercial redistributors to donate. - -Users of free software systems can boost the pace of development by -encouraging for-a-fee distributors to donate part of their selling price -to free software developers---the Free Software Foundation, and others. - -The way to convince distributors to do this is to demand it and expect -it from them. So when you compare distributors, judge them partly by -how much they give to free software development. Show distributors -they must compete to be the one who gives the most. - -To make this approach work, you must insist on numbers that you can -compare, such as, ``We will donate ten dollars to the Frobnitz project -for each disk sold.'' Don't be satisfied with a vague promise, such as -``A portion of the profits are donated,'' since it doesn't give a basis -for comparison. - -Even a precise fraction ``of the profits from this disk'' is not very -meaningful, since creative accounting and unrelated business decisions -can greatly alter what fraction of the sales price counts as profit. -If the price you pay is $50, ten percent of the profit is probably -less than a dollar; it might be a few cents, or nothing at all. - -Some redistributors do development work themselves. This is useful too; -but to keep everyone honest, you need to inquire how much they do, and -what kind. Some kinds of development make much more long-term -difference than others. For example, maintaining a separate version of -a program contributes very little; maintaining the standard version of a -program for the whole community contributes much. Easy new ports -contribute little, since someone else would surely do them; difficult -ports such as adding a new CPU to the GNU Compiler Collection contribute more; -major new features or packages contribute the most. - -By establishing the idea that supporting further development is ``the -proper thing to do'' when distributing free software for a fee, we can -assure a steady flow of resources into making more free software. - -@display -Copyright (C) 1994 Free Software Foundation, Inc. -Verbatim copying and redistribution of this section is permitted -without royalty; alteration is not permitted. -@end display +@include funding.texi @node GNU/Linux @unnumbered Linux and the GNU Project @@ -4306,398 +4259,7 @@ major components of the system. The system as a whole is more or less the GNU system. -@node Copying -@unnumbered GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifnottex -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifnottex - -@enumerate 0 -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifnottex -@center NO WARRANTY -@end ifnottex - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifnottex -@center END OF TERMS AND CONDITIONS -@end ifnottex - -@page -@unnumberedsec How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) @var{yyyy} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end smallexample - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +@include gpl.texi @c --------------------------------------------------------------------- @c GFDL diff -ruN gcc.orig/doc/include/funding.texi gcc/doc/include/funding.texi --- gcc.orig/doc/include/funding.texi Thu Jan 1 00:00:00 1970 +++ gcc/doc/include/funding.texi Wed Jun 27 18:28:58 2001 @@ -0,0 +1,48 @@ +@node Funding +@unnumbered Funding Free Software + +If you want to have more free software a few years from now, it makes +sense for you to help encourage people to contribute funds for its +development. The most effective approach known is to encourage +commercial redistributors to donate. + +Users of free software systems can boost the pace of development by +encouraging for-a-fee distributors to donate part of their selling price +to free software developers---the Free Software Foundation, and others. + +The way to convince distributors to do this is to demand it and expect +it from them. So when you compare distributors, judge them partly by +how much they give to free software development. Show distributors +they must compete to be the one who gives the most. + +To make this approach work, you must insist on numbers that you can +compare, such as, ``We will donate ten dollars to the Frobnitz project +for each disk sold.'' Don't be satisfied with a vague promise, such as +``A portion of the profits are donated,'' since it doesn't give a basis +for comparison. + +Even a precise fraction ``of the profits from this disk'' is not very +meaningful, since creative accounting and unrelated business decisions +can greatly alter what fraction of the sales price counts as profit. +If the price you pay is $50, ten percent of the profit is probably +less than a dollar; it might be a few cents, or nothing at all. + +Some redistributors do development work themselves. This is useful too; +but to keep everyone honest, you need to inquire how much they do, and +what kind. Some kinds of development make much more long-term +difference than others. For example, maintaining a separate version of +a program contributes very little; maintaining the standard version of a +program for the whole community contributes much. Easy new ports +contribute little, since someone else would surely do them; difficult +ports such as adding a new CPU to the GNU Compiler Collection contribute more; +major new features or packages contribute the most. + +By establishing the idea that supporting further development is ``the +proper thing to do'' when distributing free software for a fee, we can +assure a steady flow of resources into making more free software. + +@display +Copyright (C) 1994 Free Software Foundation, Inc. +Verbatim copying and redistribution of this section is permitted +without royalty; alteration is not permitted. +@end display diff -ruN gcc.orig/doc/include/gpl.texi gcc/doc/include/gpl.texi --- gcc.orig/doc/include/gpl.texi Thu Jan 1 00:00:00 1970 +++ gcc/doc/include/gpl.texi Wed Jun 27 18:28:58 2001 @@ -0,0 +1,392 @@ +@node Copying +@unnumbered GNU GENERAL PUBLIC LICENSE +@center Version 2, June 1991 + +@display +Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@unnumberedsec Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software---to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + +@iftex +@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +@end iftex +@ifnottex +@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +@end ifnottex + +@enumerate 0 +@item +This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The ``Program'', below, +refers to any such program or work, and a ``work based on the Program'' +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term ``modification''.) Each licensee is addressed as ``you''. + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +@item +You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +@item +You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +@enumerate a +@item +You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +@item +You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +@item +If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) +@end enumerate + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +@item +You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +@enumerate a +@item +Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +@item +Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +@item +Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) +@end enumerate + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +@item +You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +@item +You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +@item +Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +@item +If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +@item +If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +@item +The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and ``any +later version'', you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +@item +If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + +@iftex +@heading NO WARRANTY +@end iftex +@ifnottex +@center NO WARRANTY +@end ifnottex + +@item +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +@item +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +@end enumerate + +@iftex +@heading END OF TERMS AND CONDITIONS +@end iftex +@ifnottex +@center END OF TERMS AND CONDITIONS +@end ifnottex + +@page +@unnumberedsec How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the ``copyright'' line and a pointer to where the full notice is found. + +@smallexample +@var{one line to give the program's name and a brief idea of what it does.} +Copyright (C) @var{year} @var{name of author} + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +@end smallexample + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +@smallexample +Gnomovision version 69, Copyright (C) @var{year} @var{name of author} +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. +@end smallexample + +The hypothetical commands @samp{show w} and @samp{show c} should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than @samp{show w} and +@samp{show c}; they could even be mouse-clicks or menu items---whatever +suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a ``copyright disclaimer'' for the program, if +necessary. Here is a sample; alter the names: + +@smallexample +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +@var{signature of Ty Coon}, 1 April 1989 +Ty Coon, President of Vice +@end smallexample + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff -ruN gcc.orig/f/Make-lang.in gcc/f/Make-lang.in --- gcc.orig/f/Make-lang.in Sun Jun 10 14:01:01 2001 +++ gcc/f/Make-lang.in Wed Jun 27 18:28:58 2001 @@ -172,27 +172,31 @@ $(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ - $(srcdir)/f/root.texi $(srcdir)/doc/fdl.texi + $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \ + $(srcdir)/doc/include/gpl.texi \ + $(srcdir)/doc/include/funding.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ] && [ x$(BUILD_INFO) = xinfo ]; then \ rm -f $(srcdir)/f/g77.info-*; \ - cd $(srcdir)/f && $(MAKEINFO) -I../doc -o g77.info g77.texi; \ + cd $(srcdir)/f && $(MAKEINFO) -I../doc/include -o g77.info g77.texi; \ else true; fi f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ $(srcdir)/f/ffe.texi \ $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \ - $(srcdir)/f/root.texi $(srcdir)/doc/fdl.texi + $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \ + $(srcdir)/doc/include/gpl.texi \ + $(srcdir)/doc/include/funding.texi case "$(LANGUAGES)" in \ *[fF]77*) $(STAMP) lang-f77;; \ *) rm -f lang-f77;; \ esac if [ -f lang-f77 ]; then \ s=`cd $(srcdir); pwd`; export s; \ - cd f && $(TEXI2DVI) -I $$s/doc $$s/f/g77.texi; \ + cd f && $(TEXI2DVI) -I $$s/doc/include $$s/f/g77.texi; \ else true; fi # This dance is all about producing accurate documentation for g77's diff -ruN gcc.orig/f/g77.texi gcc/f/g77.texi --- gcc.orig/f/g77.texi Sun Jun 10 14:01:01 2001 +++ gcc/f/g77.texi Wed Jun 27 18:28:58 2001 @@ -101,7 +101,8 @@ Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'', the Front-Cover +Invariant Sections being ``GNU General Public License'' and ``Funding +Free Software'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. @@ -158,7 +159,8 @@ Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'', the Front-Cover +Invariant Sections being ``GNU General Public License'' and ``Funding +Free Software'', the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. @@ -231,7 +233,6 @@ * Contributors:: People who have contributed to GNU Fortran. * Funding:: How to help assure continued work for free software. * Funding GNU Fortran:: How to help assure continued work on GNU Fortran. -* Look and Feel:: Protect your freedom---fight ``look and feel''. @ifset USING * Getting Started:: Finding your way around this manual. * What is GNU Fortran?:: How @code{g77} fits into the universe. @@ -263,398 +264,7 @@ @end menu @c yes, the "M: " @emph{is} intentional -- bad.def references it (CMPAMBIG)! -@node Copying -@unnumbered GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifinfo -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo - -@enumerate 0 -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifinfo -@center NO WARRANTY -@end ifinfo - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifinfo -@center END OF TERMS AND CONDITIONS -@end ifinfo - -@page -@unnumberedsec How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) @var{year} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) @var{year} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end smallexample - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +@include gpl.texi @include fdl.texi @@ -768,54 +378,7 @@ The default is that people wish to remain anonymous. @end itemize -@node Funding -@chapter Funding Free Software - -If you want to have more free software a few years from now, it makes -sense for you to help encourage people to contribute funds for its -development. The most effective approach known is to encourage -commercial redistributors to donate. - -Users of free software systems can boost the pace of development by -encouraging for-a-fee distributors to donate part of their selling price -to free software developers---the Free Software Foundation, and others. - -The way to convince distributors to do this is to demand it and expect -it from them. So when you compare distributors, judge them partly by -how much they give to free software development. Show distributors -they must compete to be the one who gives the most. - -To make this approach work, you must insist on numbers that you can -compare, such as, ``We will donate ten dollars to the Frobnitz project -for each disk sold.'' Don't be satisfied with a vague promise, such as -``A portion of the profits are donated,'' since it doesn't give a basis -for comparison. - -Even a precise fraction ``of the profits from this disk'' is not very -meaningful, since creative accounting and unrelated business decisions -can greatly alter what fraction of the sales price counts as profit. -If the price you pay is $50, ten percent of the profit is probably -less than a dollar; it might be a few cents, or nothing at all. - -Some redistributors do development work themselves. This is useful too; -but to keep everyone honest, you need to inquire how much they do, and -what kind. Some kinds of development make much more long-term -difference than others. For example, maintaining a separate version of -a program contributes very little; maintaining the standard version of a -program for the whole community contributes much. Easy new ports -contribute little, since someone else would surely do them; difficult -ports such as adding a new CPU to the GNU C compiler contribute more; -major new features or packages contribute the most. - -By establishing the idea that supporting further development is ``the -proper thing to do'' when distributing free software for a fee, we can -assure a steady flow of resources into making more free software. - -@display -Copyright (C) 1994 Free Software Foundation, Inc. -Verbatim copying and redistribution of this section is permitted -without royalty; alteration is not permitted. -@end display +@include funding.texi @node Funding GNU Fortran @chapter Funding GNU Fortran @@ -849,18 +412,6 @@ Email @email{@value{email-general}} to volunteer for this work. @xref{Funding,,Funding Free Software}, for more information. - -@node Look and Feel -@chapter Protect Your Freedom---Fight ``Look And Feel'' -@c the above chapter heading overflows onto the next line. --mew 1/26/93 - -To preserve the ability to write free software, including replacements -for proprietary software, authors must be free to replicate the -user interface to which users of existing software have become -accustomed. - -@xref{Look and Feel,,Protect Your Freedom---Fight ``Look And Feel'', -gcc,Using and Porting GNU CC}, for more information. @node Getting Started @chapter Getting Started diff -ruN gcc.orig/java/Make-lang.in gcc/java/Make-lang.in --- gcc.orig/java/Make-lang.in Fri Jun 1 16:56:44 2001 +++ gcc/java/Make-lang.in Wed Jun 27 18:28:58 2001 @@ -293,12 +293,14 @@ $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) # Documentation -$(srcdir)/java/gcj.info: $(srcdir)/java/gcj.texi $(srcdir)/doc/fdl.texi +$(srcdir)/java/gcj.info: $(srcdir)/java/gcj.texi \ + $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gpl.texi if test "x$(BUILD_INFO)" = xinfo; then \ rm -f $(srcdir)/java/gcc.info*; \ - cd $(srcdir)/java && $(MAKEINFO) -I../doc -o gcj.info gcj.texi; \ + cd $(srcdir)/java && $(MAKEINFO) -I../doc/include -o gcj.info gcj.texi; \ else true; fi -java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/fdl.texi +java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/include/fdl.texi \ + $(srcdir)/doc/include/gpl.texi s=`cd $(srcdir); pwd`; export s; \ - cd java && $(TEXI2DVI) -I $$s/doc $$s/java/gcj.texi + cd java && $(TEXI2DVI) -I $$s/doc/include $$s/java/gcj.texi diff -ruN gcc.orig/java/gcj.texi gcc/java/gcj.texi --- gcc.orig/java/gcj.texi Sat Jun 2 14:53:01 2001 +++ gcc/java/gcj.texi Wed Jun 27 18:28:58 2001 @@ -112,398 +112,7 @@ @end menu -@node Copying -@unnumbered GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifinfo -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifinfo - -@enumerate 0 -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifinfo -@center NO WARRANTY -@end ifinfo - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifinfo -@center END OF TERMS AND CONDITIONS -@end ifinfo - -@page -@unnumberedsec How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) @var{year} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) @var{year} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end smallexample - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - +@include gpl.texi @include fdl.texi -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37975-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 17:12:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20717 invoked by alias); 3 Jul 2001 17:12:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20684 invoked from network); 3 Jul 2001 17:12:04 -0000 Received: from unknown (HELO debian) (138.89.126.232) by sourceware.cygnus.com with SMTP; 3 Jul 2001 17:12:04 -0000 Received: by debian (Postfix, from userid 1000) id E610EE15023; Tue, 3 Jul 2001 13:12:01 -0400 (EDT) X-Draft-From: ("nnimap+dberlin.org:gcc" 16156) To: Jason Merrill Cc: Daniel Berlin , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Revised DWARF2 macro info patch References: <878zicv8hl.fsf@cgsoftware.com> From: Daniel Berlin Date: Tue, 03 Jul 2001 13:12:01 -0400 In-Reply-To: (Jason Merrill's message of "02 Jul 2001 14:34:12 +0100") Message-ID: <877kxqdjj2.fsf@cgsoftware.com> Lines: 36 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.5 (anise) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Jason Merrill writes: > OK, though we might want to omit the start/end for files with no macro > definitions. If we did this, we'd get some of the info confused. This is because we only know what line a file was included from, not what *file* it was included from. So we'd have the place of inclusion wrong if you had something like: a.c #include "test.h" test.h extern int a; #include "hasamacro.h" hasamacro.h #define amacro(x) x+5 In this case, we'd omit test.h's start and end, and claim hasamacro.h was included from line 2 of a.c. What you really want is to omit start/end for files which have no macro definitions, and don't include other files that *have* macro definitions. This is a bit tricker, since we are outputting on the fly. > > Jason -- "I spilled spot remover on my dog. He's gone now. "-Steven Wright From gcc-patches-return-37976-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 17:21:43 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25803 invoked by alias); 3 Jul 2001 17:21:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25761 invoked from network); 3 Jul 2001 17:21:41 -0000 Received: from unknown (HELO debian) (138.89.126.232) by sourceware.cygnus.com with SMTP; 3 Jul 2001 17:21:41 -0000 Received: by debian (Postfix, from userid 1000) id C2046E15023; Tue, 3 Jul 2001 13:21:38 -0400 (EDT) X-Draft-From: ("nnimap+dberlin.org:gcc" 16154) To: Jason Merrill Cc: Daniel Berlin , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Add dwarf2.1 namespace support References: <87wv5wmmh7.fsf@cgsoftware.com> From: Daniel Berlin Date: Tue, 03 Jul 2001 13:21:38 -0400 In-Reply-To: (Jason Merrill's message of "02 Jul 2001 14:29:56 +0100") Message-ID: <873d8edj31.fsf@cgsoftware.com> Lines: 96 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.5 (anise) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Jason Merrill writes: >>>>>> "Daniel" == Daniel Berlin writes: > >> Note that the toplev.c change is because if we don't do that, we get >> namespace decls as the absolute last thing output. > > I don't see any reason to handle namespaces differently from classes in > this respect. I'd prefer to just avoid emitting multiple DIEs for a > namespace. Okay. > > Also, we still need to handle namespace aliases, and this seems like the > right place. Sure. Here's a related question, however: What do I do about using_decl's. They don't exist by the time we go to output debug info. We only see the results. This will cause us to output mountains of debug info that can't be easily dupe-eliminated, since we have no idea those symbols really came from somewhere else, and are absolutely duplicates. We'd have to being able to change real DIE's into imported declarations. > >> Doing it that way, instead of generating them when we see something >> use them, would require fixing up the scope of literally >> everything in a namespace, which would seem to be a very not fun thing >> to implement. > > Agreed, we want to generate the namespace DIE as soon as we try to emit > something inside it. > >> ! /* Handle namespaces properly */ >> if (containing_scope && TREE_CODE (containing_scope) == NAMESPACE_DECL) >> ! context_die = lookup_decl_die (containing_scope); > > Perhaps assert that this produces a non-null value? Sure. > >> *************** dwarf2out_decl (decl) >> *** 10967,10972 **** >> --- 10983,11000 ---- >> if (TREE_CODE (decl) == ERROR_MARK) >> return; > >> + if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == NAMESPACE_DECL) >> + { >> + context_die = lookup_decl_die (DECL_CONTEXT (decl)); >> + if (context_die == NULL) >> + { >> + dwarf2out_decl (DECL_CONTEXT (decl)); >> + context_die = lookup_decl_die (DECL_CONTEXT (decl)); >> + if (!context_die) >> + abort(); >> + } >> + } >> + >> /* If this ..._DECL node is marked to be ignored, then ignore it. */ >> if (DECL_IGNORED_P (decl)) >> return; > > This code should go in gen_decl_die, like the existing code to force out a > containing class. Okay. > > >> *************** dwarf2out_decl (decl) >> ! case NAMESPACE_DECL: >> ! if (debug_info_level <= DINFO_LEVEL_TERSE) >> ! return; >> ! break; > > Won't this cause the compiler to abort in the code above? Yes. I realized this at the time. I'll fix it. However, we abort anyway at -g1, due to other problems. And -g1 is pretty worthless, it provides nothing minimal symbols in gdb don't have already anyway. We should probably just remove it. > > Jason -- "Winny and I lived in a house that ran on static electricity... If you wanted to run the blender, you had to rub balloons on your head. If you wanted to cook, you had to pull off a sweater real quick. "-Steven Wright From gcc-patches-return-37977-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 17:47:29 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4018 invoked by alias); 3 Jul 2001 17:47:29 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3868 invoked from network); 3 Jul 2001 17:46:07 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.163.213.130) by sourceware.cygnus.com with SMTP; 3 Jul 2001 17:46:07 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id KAA18626; Tue, 3 Jul 2001 10:44:11 -0700 Date: Tue, 3 Jul 2001 10:44:11 -0700 From: Jeffrey Oldham To: jh@suse.cz Cc: rth@redhat.com, gcc-patches@gcc.gnu.org, Jeffrey Oldham Subject: Re: Recent Change to gcc/flow.c Causes Test Regression for 3.1 Message-ID: <20010703104411.A30955@codesourcery.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="9jxsPFA5p3P2qPhR" Content-Disposition: inline User-Agent: Mutt/1.2.5i Organization: CodeSourcery LLC --9jxsPFA5p3P2qPhR Content-Type: text/plain; charset=us-ascii Content-Disposition: inline This morning, gcc/testsuite/gcc.dg/wtr-label-1.c regressed with the following problem: ~/gcc/gcc2/objdir/gcc/cc1 wtr-label-1.i testfunc1 /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c: In function `testfunc1': /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c:29: Virtual array basic_block_info[1]: element 1 out of bounds /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c:29: confused by earlier errors, bailing out The problem disappears when reversing your most recent change to gcc/flow.c, i.e., revision 1.412, which is attached. I am using i686-pc-linux-gnu and gcc 3.1. Would you be willing to fix the problem? Thanks, Jeffrey D. Oldham oldham@codesourcery.com --9jxsPFA5p3P2qPhR Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="flow.c.411.412.patch" Index: flow.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/flow.c,v retrieving revision 1.411 retrieving revision 1.412 diff -c -p -r1.411 -r1.412 *** flow.c 2001/07/02 16:47:57 1.411 --- flow.c 2001/07/02 21:16:48 1.412 *************** static bool *** 1597,1614 **** forwarder_block_p (bb) basic_block bb; { ! rtx insn; if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR || !bb->succ || bb->succ->succ_next) return false; ! insn = next_active_insn (bb->head); ! if (!insn) ! return false; ! if (GET_CODE (insn) == CODE_LABEL ! || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn))) ! return true; ! return false; } /* Return nonzero if we can reach target from src by falling trought. */ --- 1597,1615 ---- forwarder_block_p (bb) basic_block bb; { ! rtx insn = bb->head; if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR || !bb->succ || bb->succ->succ_next) return false; ! while (insn != bb->end) ! { ! if (active_insn_p (insn)) ! return false; ! insn = NEXT_INSN (insn); ! } ! return (!active_insn_p (insn) ! || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn))); } /* Return nonzero if we can reach target from src by falling trought. */ *************** try_redirect_by_replacing_jump (e, targe *** 1699,1704 **** --- 1700,1707 ---- e->flags = EDGE_FALLTHRU; else e->flags = 0; + e->probability = REG_BR_PROB_BASE; + e->count = src->count; /* Fixup barriers. */ barrier = next_nonnote_insn (insn); *************** try_redirect_by_replacing_jump (e, targe *** 1707,1712 **** --- 1710,1729 ---- else if (!fallthru && GET_CODE (barrier) != BARRIER) emit_barrier_after (insn); + /* In case we've zapped an conditional jump, we need to kill the cc0 + setter too if available. */ + #ifdef HAVE_cc0 + insn = src->end; + if (GET_CODE (insn) == JUMP_INSN) + insn = prev_nonnote_insn (insn); + if (sets_cc0_p (insn)) + { + if (insn == src->end) + src->end = PREV_INSN (insn); + flow_delete_insn (insn); + } + #endif + if (e->dest != target) redirect_edge_succ (e, target); return true; *************** redirect_edge_and_branch (e, target) *** 1766,1772 **** for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j) if (XEXP (RTVEC_ELT (vec, j), 0) == old_label) { ! RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (VOIDmode, new_label); --LABEL_NUSES (old_label); ++LABEL_NUSES (new_label); } --- 1783,1789 ---- for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j) if (XEXP (RTVEC_ELT (vec, j), 0) == old_label) { ! RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (Pmode, new_label); --LABEL_NUSES (old_label); ++LABEL_NUSES (new_label); } *************** redirect_edge_and_branch (e, target) *** 1815,1820 **** --- 1832,1839 ---- if (s) { s->flags |= e->flags; + s->probability += e->probability; + s->count += e->count; remove_edge (e); } else --9jxsPFA5p3P2qPhR-- From gcc-patches-return-37978-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 18:51:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10947 invoked by alias); 3 Jul 2001 18:51:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10897 invoked from network); 3 Jul 2001 18:51:04 -0000 Received: from unknown (HELO mururoa.inria.fr) (138.96.80.8) by sourceware.cygnus.com with SMTP; 3 Jul 2001 18:51:04 -0000 Received: from mururoa.inria.fr by mururoa.inria.fr (8.11.1/8.10.0) with ESMTP id f63IowS31689; Tue, 3 Jul 2001 20:50:58 +0200 Message-Id: <200107031850.f63IowS31689@mururoa.inria.fr> X-Mailer: exmh version 2.3.1 01/18/2001 To: rittle@labs.mot.com Cc: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: PATCH for libstdc++/2211 (some discussion held on gcc-bugs) In-Reply-To: Message from Loren James Rittle of "Mon, 02 Jul 2001 15:51:49 CDT." <200107022051.f62KpnX81420@latour.rsch.comm.mot.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==_Exmh_-302430642P"; micalg=pgp-sha1; protocol="application/pgp-signature" Content-Transfer-Encoding: 7bit Date: Tue, 03 Jul 2001 20:50:58 +0200 From: Theodore Papadopoulo --==_Exmh_-302430642P Content-Type: text/plain; charset=us-ascii Hi Loren, Sorry for not having replied. For some reason, I just did not seen some of your E-mails. As far as I can tell, I agree with your analysis about the fact that synchronisation does not necessarily mean that the internal buffers should be of length 1. However, I do not master of the arcane of the C++ standard to be sure to know all the whereabouts (is this the correct word ?) of such a decision. I planned to have a close look at the standard, but did not have time up to now... Anyway, I'll try your patch (with the example and also with more complex code) and I'll tell you the results. One point I can add is that when I reported the problem, I hacked the libstdc++ files so as to not force the buffer for cin to be of size 1 (there is such a line like this somewhere). Everything worked fine. The compiler was used by maybe 5 or 10 people and no one reported a problem. But I'm not sure anyone was mixing C and C++ IOs... Thank's a lot for looking at this problem. Theo. -------------------------------------------------------------------- Theodore Papadopoulo Email: Theodore.Papadopoulo@sophia.inria.fr Tel: (33) 04 92 38 76 01 -------------------------------------------------------------------- --==_Exmh_-302430642P Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Exmh version 2.2 06/23/2000 iD8DBQE7QhQSIzTj8qrxOU4RAtFUAJ9JcDaQ1ffA7fA8cWwX91lr4YS2QwCfdSKH W6Un7U7VKHF0Ib3G5ov2RYk= =QDJd -----END PGP SIGNATURE----- --==_Exmh_-302430642P-- From gcc-patches-return-37979-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 18:52:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11561 invoked by alias); 3 Jul 2001 18:52:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10607 invoked from network); 3 Jul 2001 18:50:47 -0000 Received: from unknown (HELO gash2.peakpeak.com) (207.174.178.17) by sourceware.cygnus.com with SMTP; 3 Jul 2001 18:50:47 -0000 Received: from creche.cygnus.com (tq0146.peakpeak.com [207.174.177.146]) by gash2.peakpeak.com (8.9.3/8.9.3) with ESMTP id MAA26864; Tue, 3 Jul 2001 12:50:33 -0600 Received: (from tromey@localhost) by creche.cygnus.com (8.9.3/8.9.3) id NAA31641; Tue, 3 Jul 2001 13:11:18 -0600 To: Java Patch List Cc: Gcc Patch List Subject: Patch: in-tree build (PR 3281) X-Zippy: Hold the MAYO & pass the COSMIC AWARENESS... X-Attribution: Tom Reply-To: tromey@redhat.com From: Tom Tromey Date: 03 Jul 2001 13:11:16 -0600 Message-ID: <87bsn125gr.fsf@creche.redhat.com> Lines: 166 I'm checking this in on both the trunk and the branch. This fixes PR bootstrap/3281. It allows `make install' to work correctly when an in-tree build is done. I tested this by building and installing from scratch, both in-tree and in a separate build tree, on my x86 Red Hat Linux 6.2 box. Tom Index: boehm-gc/ChangeLog from Tom Tromey * aclocal.m4, configure, Makefile.in: Rebuilt. * acinclude.m4: Set mkinstalldirs for in-tree build. Index: boehm-gc/acinclude.m4 =================================================================== RCS file: /cvs/gcc/gcc/boehm-gc/acinclude.m4,v retrieving revision 1.10.4.2 diff -u -r1.10.4.2 acinclude.m4 --- boehm-gc/acinclude.m4 2001/06/13 16:32:01 1.10.4.2 +++ boehm-gc/acinclude.m4 2001/07/03 18:27:10 @@ -37,6 +37,10 @@ AC_CANONICAL_SYSTEM +# This works around an automake problem. +mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" +AC_SUBST(mkinstalldirs) + AM_INIT_AUTOMAKE(boehm-gc, 5.1, no-define) # FIXME: We temporarily define our own version of AC_PROG_CC. This is Index: zlib/ChangeLog.gcj from Tom Tromey * configure, Makefile.in: Rebuilt. * configure.in: Set mkinstalldirs, for in-tree build. Index: zlib/configure.in =================================================================== RCS file: /cvs/gcc/gcc/zlib/configure.in,v retrieving revision 1.9.4.1 diff -u -r1.9.4.1 configure.in --- zlib/configure.in 2001/05/13 22:32:56 1.9.4.1 +++ zlib/configure.in 2001/07/03 18:27:16 @@ -24,6 +24,11 @@ fi AC_CANONICAL_SYSTEM + +# This works around an automake problem. +mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" +AC_SUBST(mkinstalldirs) + AM_INIT_AUTOMAKE(zlib, 1.1.3) AM_MAINTAINER_MODE Index: libjava/ChangeLog from Tom Tromey * aclocal.m4, configure: Rebuilt. * acinclude.m4 (LIBGCJ_CONFIGURE): Don't set libgcj_flagbasedir. Correctly compute libgcj_basedir. (mkinstalldirs): Define and subst. Index: libjava/acinclude.m4 =================================================================== RCS file: /cvs/gcc/gcc/libjava/acinclude.m4,v retrieving revision 1.7.4.2 diff -u -r1.7.4.2 acinclude.m4 --- libjava/acinclude.m4 2001/06/13 16:35:06 1.7.4.2 +++ libjava/acinclude.m4 2001/07/03 18:27:23 @@ -12,23 +12,39 @@ dnl We may get other options which we dont document: dnl --with-target-subdir, --with-multisrctop, --with-multisubdir -if test "[$]{srcdir}" = "."; then - if test "[$]{with_target_subdir}" != "."; then - libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1" +# When building with srcdir == objdir, links to the source files will +# be created in directories within the target_subdir. We have to +# adjust toplevel_srcdir accordingly, so that configure finds +# install-sh and other auxiliary files that live in the top-level +# source directory. +if test "${srcdir}" = "."; then + if test -z "${with_target_subdir}"; then + toprel=".." else - libgcj_basedir="[$]{srcdir}/[$]{with_multisrctop}$1" + if test "${with_target_subdir}" != "."; then + toprel="${with_multisrctop}../.." + else + toprel="${with_multisrctop}.." + fi fi else - libgcj_basedir="[$]{srcdir}/$1" + toprel=".." fi + +libgcj_basedir=$srcdir/$toprel/$1/libjava AC_SUBST(libgcj_basedir) -AC_CONFIG_AUX_DIR($libgcj_basedir/..) + +AC_CONFIG_AUX_DIR(${srcdir}/$toprel) if :; then :; else # This overrides the previous occurrence for automake, but not for # autoconf, which is exactly what we want. AC_CONFIG_AUX_DIR(..) fi +# This works around an automake problem. +mkinstalldirs="`cd $ac_aux_dir && pwd`/mkinstalldirs" +AC_SUBST(mkinstalldirs) + AC_CANONICAL_SYSTEM dnl This shouldn't be needed, as long as top-level dependencies are @@ -80,11 +96,6 @@ libgcj_javaflags= . [$]{srcdir}/configure.host - -case [$]{libgcj_basedir} in -/* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{libgcj_basedir} ;; -*) libgcj_flagbasedir='[$](top_builddir)/'[$]{libgcj_basedir} ;; -esac LIBGCJ_CFLAGS="[$]{libgcj_cflags}" LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}" Index: libjava/libltdl/ChangeLog from Tom Tromey * configure: Rebuilt. * configure.in: Added aux-dir hacks to satisfy automake and in-tree builds. Index: libjava/libltdl/configure.in =================================================================== RCS file: /cvs/gcc/gcc/libjava/libltdl/configure.in,v retrieving revision 1.3 diff -u -r1.3 configure.in --- libjava/libltdl/configure.in 2000/09/10 08:04:40 1.3 +++ libjava/libltdl/configure.in 2001/07/03 18:27:33 @@ -2,12 +2,16 @@ AC_INIT(ltdl.c) -dnl We shouldn't be using these internal macros of autoconf, -dnl but CONFIG_AUX_DIR($with_auxdir) breaks automake. AC_ARG_WITH(auxdir, [ --with-auxdir=DIR path to autoconf auxiliary files], -[AC_CONFIG_AUX_DIRS($with_auxdir)], +[AC_CONFIG_AUX_DIR($with_auxdir) +dnl This is here just to satisfy automake. +ifelse(not,equal,[AC_CONFIG_AUX_DIR(../..)])], [AC_CONFIG_AUX_DIR_DEFAULT]) + +# This is another blatant hack to work around automake bugs. +mkinstalldirs="$ac_aux_dir/mkinstalldirs" +AC_SUBST(mkinstalldirs) if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then if test -f ${srcdir}/ltconfig && test -f ${srcdir}/ltmain.sh; then From gcc-patches-return-37980-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 19:30:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30843 invoked by alias); 3 Jul 2001 19:30:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30812 invoked from network); 3 Jul 2001 19:30:44 -0000 Received: from unknown (HELO mail-out2.apple.com) (17.254.0.51) by sourceware.cygnus.com with SMTP; 3 Jul 2001 19:30:44 -0000 Received: from apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out2.apple.com (8.9.3/8.9.3) with ESMTP id MAA28294 for ; Tue, 3 Jul 2001 12:30:35 -0700 (PDT) Received: from scv2.apple.com (scv2.apple.com) by apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Tue, 3 Jul 2001 12:30:30 -0700 Received: from apple.com (melos.apple.com [17.202.41.123]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id f63JUUw28445; Tue, 3 Jul 2001 12:30:30 -0700 (PDT) Message-ID: <3B421D56.52F16B98@apple.com> Date: Tue, 03 Jul 2001 12:30:29 -0700 From: Stan Shebs X-Mailer: Mozilla 4.75 (Macintosh; U; PPC) X-Accept-Language: en MIME-Version: 1.0 To: Mark Mitchell CC: Ziemowit Laski , "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 References: <16950000.994010269@warlock.codesourcery.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Mark Mitchell wrote: > > --On Friday, June 29, 2001 12:10:22 PM -0700 Ziemowit Laski > wrote: > > > Ok, here is a new, "leaner and meaner" version of the Pascal string patch > > that I submitted on June 15. Per Zack Weinberg's suggestion, I removed > > all modifications in cpplib sources, and moved \p handling to > > lex_string(). Also, I've added a blurb in extend.texi describing the > > usage of Pascal literals. > > I am not in favor on a technical basis. Too much complication for too > little win. > > Stan often points out that there are political issues here, too, regarding > Apple maintaining it's own version of GCC. However, if there is going > to be an FSF mandate to incorporate Apple changes for the sake of > eliminating the Apple fork, then we need to get that message from the FSF; > it's not for us to judge as GCC maintainers. I've now thought about this, and I don't want to try to get an FSF mandate of this sort. Suppose I manage to buttonhole RMS and feed him lots of tabouleh with parsley :-) or whatever, and convince him that accepting technically-undesirable Apple changes is a Good Idea. Then from the viewpoint of other GCC developers, I've basically bypassed the technical evaluation process in order to get bad stuff into the compiler. Not only does this have the potential to cause additional unnecessary strife in our little community, but it's also a slippery slope to an undemocratic process, where technical quality is secondary to political wheeling-dealing. Since I really believe that the current process is basically the right way to go, I don't want to undermine it for some sort of small temporary advantage. I've already made the compelling arguments to accept this extension, so if they're not enough to persuade any GCC maintainer, then so be it. The truth of the matter is that all the discussion and rewriting of this patch has already well exceeded the time that has gone into maintaining it in Apple's GCC over the past several years. Since we still don't have either an unconditional rejection or a conditional acceptance, it's becoming a time sink that is preventing us from working on more important things. So I'm going to recommend that Zem withdraw this patch (I can hear Zem saying "thank you thank you thank you" in the background there :-) ), and in the interests of keeping everybody focused on GCC's important issues, I'm also going to reconsider our policy that every Apple addition be submitted for FSF GCC. Stan From gcc-patches-return-37981-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 19:44:57 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5613 invoked by alias); 3 Jul 2001 19:44:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4584 invoked from network); 3 Jul 2001 19:43:33 -0000 Received: from unknown (HELO executor.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 3 Jul 2001 19:43:33 -0000 Received: from cuddles.cambridge.redhat.com (cuddles.cambridge.redhat.com [172.16.18.86]) by executor.cambridge.redhat.com (Postfix) with ESMTP id 7675EABAF8; Tue, 3 Jul 2001 20:43:32 +0100 (BST) Received: (from aph@localhost) by cuddles.cambridge.redhat.com (8.11.0/8.11.0) id f63JhWX23810; Tue, 3 Jul 2001 20:43:32 +0100 X-Authentication-Warning: cuddles.cambridge.redhat.com: aph set sender to aph@cambridge.redhat.com using -f From: Andrew Haley MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15170.8292.425361.809730@cuddles.cambridge.redhat.com> Date: Tue, 3 Jul 2001 20:43:32 +0100 (BST) To: gcc-patches@gcc.gnu.org Subject: i960 and -mstrict-align X-Mailer: VM 6.75 under Emacs 20.7.1 On an i960, if I have a structure like this: struct Foo { char someBit : 1; char unused_m : 7; }; it has sizeof==1 and alignof==1. So far, so good. However, if I compile with -mno-strict-align, accesses to the fields are via word accesses, so this example: void testIt(struct Foo *p, int state) { p->someBit = state; does ld (g0),g4 <-- word load. and g1,1,g1 andnot 1,g4,g4 or g1,g4,g4 st g4,(g0) <-- word store. This is going to break if the Foo is at the end of a page, or if it's adjacent to some other memory owned by another thread, or whatever. However, if I compile with -mstrict-align, everything is fine: ldob (g0),g4 ldconst 254,g5 and g4,g5,g4 and g1,1,g1 or g4,g1,g4 stob g4,(g0) Now for the question: why on earth is gcc doing this? It all seems to be begin at this line in store_fixed_bit_field (): if (! SLOW_UNALIGNED_ACCESS (word_mode, struct_align)) struct_align = BIGGEST_ALIGNMENT; If store_fixed_bit_field () is called with a mem:QI source operand, we call get_best_mode() with align==BIGGEST_ALIGNMENT. If SLOW_BYTE_ACCESS is defined, get_best_mode() searches for a mode that's as wide as possible, but smaller or equal than BITS_PER_WORD. And it returns SImode. Note that this is only true if the source operand is a MEM: if it's a REG we use the mode of the destination and everything is fine. AFAICS this will only be triggered with SLOW_BYTE_ACCESS and !SLOW_UNALIGNED_ACCESS. A question: is it ever legal to store into a MEM with a mode bigger than that MEM? Andrew. 2001-07-03 Andrew Haley * expmed.c (store_fixed_bit_field): Don't use a mode bigger than the mode of the memory location. Index: expmed.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/expmed.c,v retrieving revision 1.80 diff -p -2 -c -r1.80 expmed.c *** expmed.c 2001/05/22 07:40:25 1.80 --- expmed.c 2001/07/03 19:32:38 *************** store_fixed_bit_field (op0, offset, bits *** 677,684 **** /* Get the proper mode to use for this field. We want a mode that includes the entire field. If such a mode would be larger than ! a word, we won't be doing the extraction the normal way. */ mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT, ! struct_align, word_mode, GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0)); --- 677,689 ---- /* Get the proper mode to use for this field. We want a mode that includes the entire field. If such a mode would be larger than ! a word, we won't be doing the extraction the normal way. ! We don't want a mode bigger than the destination. */ + mode = GET_MODE (op0); mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT, ! struct_align, ! (GET_MODE_BITSIZE (mode) ! < GET_MODE_BITSIZE (word_mode) ! ? mode : word_mode), GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0)); From gcc-patches-return-37982-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 19:48:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8981 invoked by alias); 3 Jul 2001 19:48:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 6862 invoked from network); 3 Jul 2001 19:46:40 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 3 Jul 2001 19:46:40 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA18337; Tue, 3 Jul 01 15:50:51 EDT Date: Tue, 3 Jul 01 15:50:51 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107031950.AA18337@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: MEM tracking, round 3 This removes the adj_offsettable_operand, makes sure that plus_constant can handle the cases it did, and replaces calls to it with calls to adjust_address. Tested with bootstrap on alphaev56 and with compilations of several cross-compilers, but typos are a real possibility here. Tue Jul 3 15:35:52 2001 Richard Kenner * explow.c (plus_constant_wide, case PLUS): Call find_constant_term and avoid checking for constant as first operand. * recog.c (find_constant_term_loc): No longer static. (adj_offettable_operand): Delete. * rtl.h (adj_offsettable_operand): Delete declaration. (find_constant_term): Add declaration. * caller-save.c: Replace calls to adj_offsettable_operand with calls to adjust_address. * config/arm/arm.c, config/c4x/c4x.c: Likewise. * config/clipper/clipper.md, config/h8300/h8300.c: Likewise. * config/i386/i386.c, config/i386/i386.md: Likewise. * config/i860/i860.c, config/i960/i960.c: Likewise. * config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise. * config/m68k/m68k.c, config/m68k/m68k.md: Likewise. * config/m88k/m88k.md, config/mcore/mcore.c: Likewise. * config/mips/mips.c, config/mips/mips.md: Likewise. * config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise. * config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise. * config/pa/pa.c, config/pdp11/pdp11.c: Likewise. * config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise. * config/vax/vax.md, config/ns32k/ns32k.c: Likewise. * config/ns32k/ns32k.md: Likewise. *** caller-save.c 2001/07/02 19:47:39 1.37 --- caller-save.c 2001/07/03 14:04:38 *************** setup_save_areas () *** 330,342 **** /* Setup single word save area just in case... */ for (k = 0; k < j; k++) ! { ! /* This should not depend on WORDS_BIG_ENDIAN. ! The order of words in regs is the same as in memory. */ ! rtx temp = gen_rtx_MEM (regno_save_mode[i + k][1], ! XEXP (regno_save_mem[i][j], 0)); ! ! regno_save_mem[i + k][1] ! = adj_offsettable_operand (temp, k * UNITS_PER_WORD); ! } } --- 330,338 ---- /* Setup single word save area just in case... */ for (k = 0; k < j; k++) ! /* This should not depend on WORDS_BIG_ENDIAN. ! The order of words in regs is the same as in memory. */ ! regno_save_mem[i + k][1] ! = adjust_address (regno_save_mem[i][j], regno_save_mode[i + k][1], ! k * UNITS_PER_WORD); } *** explow.c 2001/07/03 01:58:33 1.64 --- explow.c 2001/07/03 14:04:41 *************** plus_constant_wide (x, c) *** 79,82 **** --- 79,83 ---- { register RTX_CODE code; + rtx y = x; register enum machine_mode mode; register rtx tem; *************** plus_constant_wide (x, c) *** 160,175 **** goto restart; } ! else if (CONSTANT_P (XEXP (x, 0))) { ! x = gen_rtx_PLUS (mode, ! plus_constant (XEXP (x, 0), c), ! XEXP (x, 1)); c = 0; } ! else if (CONSTANT_P (XEXP (x, 1))) { ! x = gen_rtx_PLUS (mode, ! XEXP (x, 0), ! plus_constant (XEXP (x, 1), c)); c = 0; } --- 161,178 ---- goto restart; } ! else if (CONSTANT_P (XEXP (x, 1))) { ! x = gen_rtx_PLUS (mode, XEXP (x, 0), plus_constant (XEXP (x, 1), c)); c = 0; } ! else if (find_constant_term_loc (&y)) { ! /* We need to be careful since X may be shared and we can't ! modify it in place. */ ! rtx copy = copy_rtx (x); ! rtx *const_loc = find_constant_term_loc (©); ! ! *const_loc = plus_constant (*const_loc, c); ! x = copy; c = 0; } *** recog.c 2001/07/03 01:58:34 1.110 --- recog.c 2001/07/03 14:04:47 *************** Boston, MA 02111-1307, USA. */ *** 56,60 **** static void validate_replace_rtx_1 PARAMS ((rtx *, rtx, rtx, rtx)); static rtx *find_single_use_1 PARAMS ((rtx, rtx *)); - static rtx *find_constant_term_loc PARAMS ((rtx *)); static void validate_replace_src_1 PARAMS ((rtx *, void *)); static rtx split_insn PARAMS ((rtx)); --- 56,59 ---- *************** asm_operand_ok (op, constraint) *** 1830,1834 **** Otherwise, return a null pointer. */ ! static rtx * find_constant_term_loc (p) rtx *p; --- 1829,1833 ---- Otherwise, return a null pointer. */ ! rtx * find_constant_term_loc (p) rtx *p; *************** mode_independent_operand (op, mode) *** 2015,2064 **** lose: ATTRIBUTE_UNUSED_LABEL return 0; - } - - /* Given an operand OP that is a valid memory reference which - satisfies offsettable_memref_p, return a new memory reference whose - address has been adjusted by OFFSET. OFFSET should be positive and - less than the size of the object referenced. */ - - rtx - adj_offsettable_operand (op, offset) - rtx op; - int offset; - { - register enum rtx_code code = GET_CODE (op); - - if (code == MEM) - { - register rtx y = XEXP (op, 0); - register rtx new; - - if (CONSTANT_ADDRESS_P (y)) - { - new = gen_rtx_MEM (GET_MODE (op), plus_constant (y, offset)); - MEM_COPY_ATTRIBUTES (new, op); - return new; - } - - if (GET_CODE (y) == PLUS) - { - rtx z = y; - register rtx *const_loc; - - op = copy_rtx (op); - z = XEXP (op, 0); - const_loc = find_constant_term_loc (&z); - if (const_loc) - { - *const_loc = plus_constant (*const_loc, offset); - return op; - } - } - - new = gen_rtx_MEM (GET_MODE (op), plus_constant (y, offset)); - MEM_COPY_ATTRIBUTES (new, op); - return new; - } - abort (); } --- 2014,2017 ---- *** rtl.h 2001/07/03 01:58:33 1.267 --- rtl.h 2001/07/03 14:04:51 *************** extern rtx follow_jumps PARAMS ((rtx)) *** 1296,1300 **** /* In recog.c */ ! extern rtx adj_offsettable_operand PARAMS ((rtx, int)); /* In emit-rtl.c */ --- 1296,1300 ---- /* In recog.c */ ! extern rtx *find_constant_term_loc PARAMS ((rtx *)); /* In emit-rtl.c */ *** config/arm/arm.c 2001/07/03 01:58:34 1.151 --- config/arm/arm.c 2001/07/03 14:05:09 *************** output_move_double (operands) *** 6570,6574 **** else { ! otherops[1] = adj_offsettable_operand (operands[1], 4); /* Take care of overlapping base/data reg. */ if (reg_mentioned_p (operands[0], operands[1])) --- 6570,6574 ---- else { ! otherops[1] = adjust_address (operands[1], VOIDmode, 4); /* Take care of overlapping base/data reg. */ if (reg_mentioned_p (operands[0], operands[1])) *************** output_move_double (operands) *** 6636,6640 **** default: ! otherops[0] = adj_offsettable_operand (operands[0], 4); otherops[1] = gen_rtx_REG (SImode, 1 + REGNO (operands[1])); output_asm_insn ("str%?\t%1, %0", operands); --- 6636,6640 ---- default: ! otherops[0] = adjust_address (operands[0], VOIDmode, 4); otherops[1] = gen_rtx_REG (SImode, 1 + REGNO (operands[1])); output_asm_insn ("str%?\t%1, %0", operands); *** config/c4x/c4x.c 2001/06/26 18:08:36 1.83 --- config/c4x/c4x.c 2001/07/03 14:05:16 *************** c4x_print_operand (file, op, letter) *** 1922,1926 **** { asm_fprintf (file, "\t%s\t@", TARGET_C3X ? "ldp" : "ldpk"); ! output_address (XEXP (adj_offsettable_operand (op, 1), 0)); asm_fprintf (file, "\n"); } --- 1922,1926 ---- { asm_fprintf (file, "\t%s\t@", TARGET_C3X ? "ldp" : "ldpk"); ! output_address (XEXP (adjust_address (op, VOIDmodem, 1), 0)); asm_fprintf (file, "\n"); } *************** c4x_print_operand (file, op, letter) *** 1944,1948 **** break; else if (code == MEM) ! output_address (XEXP (adj_offsettable_operand (op, 1), 0)); else if (code == REG) fprintf (file, "%s", reg_names[REGNO (op) + 1]); --- 1944,1948 ---- break; else if (code == MEM) ! output_address (XEXP (adjust_address (op, 1), VOIDmode, 0)); else if (code == REG) fprintf (file, "%s", reg_names[REGNO (op) + 1]); *** config/clipper/clipper.md 2000/08/08 22:40:49 1.5 --- config/clipper/clipper.md 2001/07/03 14:05:18 *************** *** 182,186 **** xops[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); xops[2] = operands[1]; ! xops[3] = adj_offsettable_operand (operands[1], 4); output_asm_insn (\"loadw %2,%0\;loadw %3,%1\", xops); return \"\"; --- 182,186 ---- xops[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); xops[2] = operands[1]; ! xops[3] = adjust_address (operands[1], SImode, 4); output_asm_insn (\"loadw %2,%0\;loadw %3,%1\", xops); return \"\"; *************** *** 215,219 **** xops[0] = operands[0]; /* r -> o */ ! xops[1] = adj_offsettable_operand (operands[0], 4); xops[2] = operands[1]; xops[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); --- 215,219 ---- xops[0] = operands[0]; /* r -> o */ ! xops[1] = adjust_address (operands[0], SImode, 4); xops[2] = operands[1]; xops[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); *************** *** 351,355 **** /* m -> r */ output_asm_insn (\"loadw %1,%0\", operands); ! xoperands[1] = adj_offsettable_operand (operands[1], 4); output_asm_insn (\"loadw %1,%0\", xoperands); return \"\"; --- 351,355 ---- /* m -> r */ output_asm_insn (\"loadw %1,%0\", operands); ! xoperands[1] = adjust_address (operands[1], SImode, 4); output_asm_insn (\"loadw %1,%0\", xoperands); return \"\"; *************** *** 366,370 **** rtx xops[4]; xops[0] = operands[0]; ! xops[1] = adj_offsettable_operand (operands[0], 4); xops[2] = operands[1]; xops[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); --- 366,370 ---- rtx xops[4]; xops[0] = operands[0]; ! xops[1] = adjust_address (operands[0], SImode, 4); xops[2] = operands[1]; xops[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); *** config/h8300/h8300.c 2001/06/26 18:08:43 1.57 --- config/h8300/h8300.c 2001/07/03 14:05:23 *************** print_operand (file, x, code) *** 1191,1195 **** break; case MEM: - x = adj_offsettable_operand (x, 0); print_operand (file, x, 0); break; --- 1191,1194 ---- *************** print_operand (file, x, code) *** 1221,1225 **** break; case MEM: ! x = adj_offsettable_operand (x, 2); print_operand (file, x, 0); break; --- 1220,1224 ---- break; case MEM: ! x = adjust_address (x, HImode, 2); print_operand (file, x, 0); break; *** config/i386/i386.c 2001/07/03 05:56:32 1.275 --- config/i386/i386.c 2001/07/03 14:05:38 *************** ix86_emit_save_regs_using_mov (pointer, *** 2494,2500 **** if (ix86_save_reg (regno, true)) { ! insn = emit_move_insn (adj_offsettable_operand (gen_rtx_MEM (Pmode, ! pointer), ! offset), gen_rtx_REG (Pmode, regno)); RTX_FRAME_RELATED_P (insn) = 1; --- 2494,2499 ---- if (ix86_save_reg (regno, true)) { ! insn = emit_move_insn (adjust_address (gen_rtx_MEM (Pmode, pointer), ! Pmode, offset), gen_rtx_REG (Pmode, regno)); RTX_FRAME_RELATED_P (insn) = 1; *************** ix86_emit_restore_regs_using_mov (pointe *** 2607,2613 **** { emit_move_insn (gen_rtx_REG (Pmode, regno), ! adj_offsettable_operand (gen_rtx_MEM (Pmode, ! pointer), ! offset)); offset += UNITS_PER_WORD; } --- 2606,2611 ---- { emit_move_insn (gen_rtx_REG (Pmode, regno), ! adjust_address (gen_rtx_MEM (Pmode, pointer), ! Pmode, offset)); offset += UNITS_PER_WORD; } *************** split_di (operands, num, lo_half, hi_hal *** 4412,4419 **** else if (offsettable_memref_p (op)) { - rtx hi_addr = XEXP (adj_offsettable_operand (op, 4), 0); - lo_half[num] = adjust_address (op, SImode, 0); ! hi_half[num] = change_address (op, SImode, hi_addr); } else --- 4410,4415 ---- else if (offsettable_memref_p (op)) { lo_half[num] = adjust_address (op, SImode, 0); ! hi_half[num] = adjust_address (op, SImode, 4); } else *************** ix86_split_to_parts (operand, parts, mod *** 6871,6877 **** operand = adjust_address (operand, SImode, 0); parts[0] = operand; ! parts[1] = adj_offsettable_operand (operand, 4); if (size == 3) ! parts[2] = adj_offsettable_operand (operand, 8); } else if (GET_CODE (operand) == CONST_DOUBLE) --- 6867,6873 ---- operand = adjust_address (operand, SImode, 0); parts[0] = operand; ! parts[1] = adjust_address (operand, SImode, 4); if (size == 3) ! parts[2] = adjust_address (operand, SImode, 8); } else if (GET_CODE (operand) == CONST_DOUBLE) *************** ix86_split_to_parts (operand, parts, mod *** 6914,6921 **** else if (offsettable_memref_p (operand)) { ! operand = change_address (operand, DImode, XEXP (operand, 0)); parts[0] = operand; ! parts[1] = adj_offsettable_operand (operand, 8); ! parts[1] = change_address (parts[1], SImode, XEXP (parts[1], 0)); } else if (GET_CODE (operand) == CONST_DOUBLE) --- 6910,6916 ---- else if (offsettable_memref_p (operand)) { ! operand = adjust_address (operand, DImode, 0); parts[0] = operand; ! parts[1] = adjust_address (operand, SImode, 8); } else if (GET_CODE (operand) == CONST_DOUBLE) *************** ix86_split_long_move (operands) *** 7032,7041 **** TARGET_64BIT ? DImode : SImode, part[0][nparts - 1]); ! part[1][1] = adj_offsettable_operand (part[1][0], ! UNITS_PER_WORD); ! part[1][1] = change_address (part[1][1], GET_MODE (part[0][1]), ! XEXP (part[1][1], 0)); if (nparts == 3) ! part[1][2] = adj_offsettable_operand (part[1][0], 8); } } --- 7027,7033 ---- TARGET_64BIT ? DImode : SImode, part[0][nparts - 1]); ! part[1][1] = adjust_address (part[1][0], VOIDmode, UNITS_PER_WORD); if (nparts == 3) ! part[1][2] = adjust_address (part[1][0], VOIDmode, 8); } } *************** ix86_expand_builtin (exp, target, subtar *** 10198,10213 **** case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); - op0 = adjust_address (target, SFmode, 0); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (op0, expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); --- 10190,10204 ---- case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (adjust_address (op0, SFmode, 0), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); *** config/i386/i386.md 2001/07/02 19:47:41 1.283 --- config/i386/i386.md 2001/07/03 14:06:15 *************** *** 9385,9390 **** if (size >= 12) size = 10; ! operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0)); ! operands[0] = adj_offsettable_operand (operands[0], size - 1); operands[1] = GEN_INT (trunc_int_for_mode (0x80, QImode)); }) --- 9385,9389 ---- if (size >= 12) size = 10; ! operands[0] = adjust_address (operands[0], QImode, size - 1); operands[1] = GEN_INT (trunc_int_for_mode (0x80, QImode)); }) *************** *** 9838,9843 **** if (size >= 12) size = 10; ! operands[0] = gen_rtx_MEM (QImode, XEXP (operands[0], 0)); ! operands[0] = adj_offsettable_operand (operands[0], size - 1); operands[1] = GEN_INT (trunc_int_for_mode (~0x80, QImode)); }) --- 9837,9841 ---- if (size >= 12) size = 10; ! operands[0] = adjust_address (operands[0], QImode, size - 1); operands[1] = GEN_INT (trunc_int_for_mode (~0x80, QImode)); }) *** config/i860/i860.c 2001/06/26 18:08:50 1.20 --- config/i860/i860.c 2001/07/03 14:06:21 *************** output_move_double (operands) *** 644,648 **** latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], 4); else latehalf[0] = operands[0]; --- 644,648 ---- latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, 4); else latehalf[0] = operands[0]; *************** output_move_double (operands) *** 651,655 **** latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], 4); else if (optype1 == CNSTOP) { --- 651,655 ---- latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, 4); else if (optype1 == CNSTOP) { *************** output_move_double (operands) *** 709,713 **** output_asm_insn ("adds %1,%0,%1", xops); operands[1] = gen_rtx_MEM (DImode, operands[0]); ! latehalf[1] = adj_offsettable_operand (operands[1], 4); addreg1 = 0; highest_first = 1; --- 709,713 ---- output_asm_insn ("adds %1,%0,%1", xops); operands[1] = gen_rtx_MEM (DImode, operands[0]); ! latehalf[1] = adjust_address (operands[1], SImode, 4); addreg1 = 0; highest_first = 1; *** config/i960/i960.c 2001/06/26 18:08:51 1.24 --- config/i960/i960.c 2001/07/03 14:06:26 *************** i960_output_move_double (dst, src) *** 591,596 **** operands[2] = gen_rtx_REG (Pmode, REGNO (dst) + 1); operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adj_offsettable_operand (operands[3], UNITS_PER_WORD); ! output_asm_insn ("lda %1,%2\n\tld %3,%0\n\tld %4,%D0", operands); return ""; } --- 591,598 ---- operands[2] = gen_rtx_REG (Pmode, REGNO (dst) + 1); operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adjust_address (operands[3], word_mode, ! UNITS_PER_WORD); ! output_asm_insn ! ("lda %1,%2\n\tld %3,%0\n\tld %4,%D0", operands); return ""; } *************** i960_output_move_double (dst, src) *** 604,608 **** { operands[0] = dst; ! operands[1] = adj_offsettable_operand (dst, UNITS_PER_WORD); if (! memory_address_p (word_mode, XEXP (operands[1], 0))) abort (); --- 606,610 ---- { operands[0] = dst; ! operands[1] = adjust_address (dst, word_mode, UNITS_PER_WORD); if (! memory_address_p (word_mode, XEXP (operands[1], 0))) abort (); *************** i960_output_move_double_zero (dst) *** 627,631 **** operands[0] = dst; { ! operands[1] = adj_offsettable_operand (dst, 4); output_asm_insn ("st g14,%0\n\tst g14,%1", operands); } --- 629,633 ---- operands[0] = dst; { ! operands[1] = adjust_address (dst, word_mode, 4); output_asm_insn ("st g14,%0\n\tst g14,%1", operands); } *************** i960_output_move_quad (dst, src) *** 681,687 **** operands[2] = gen_rtx_REG (Pmode, REGNO (dst) + 3); operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adj_offsettable_operand (operands[3], UNITS_PER_WORD); ! operands[5] = adj_offsettable_operand (operands[4], UNITS_PER_WORD); ! operands[6] = adj_offsettable_operand (operands[5], UNITS_PER_WORD); output_asm_insn ("lda %1,%2\n\tld %3,%0\n\tld %4,%D0\n\tld %5,%E0\n\tld %6,%F0", operands); return ""; --- 683,692 ---- operands[2] = gen_rtx_REG (Pmode, REGNO (dst) + 3); operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] ! = adjust_address (operands[3], word_mode, UNITS_PER_WORD); ! operands[5] ! = adjust_address (operands[4], word_mode, UNITS_PER_WORD); ! operands[6] ! = adjust_address (operands[5], word_mode, UNITS_PER_WORD); output_asm_insn ("lda %1,%2\n\tld %3,%0\n\tld %4,%D0\n\tld %5,%E0\n\tld %6,%F0", operands); return ""; *************** i960_output_move_quad (dst, src) *** 696,702 **** { operands[0] = dst; ! operands[1] = adj_offsettable_operand (dst, UNITS_PER_WORD); ! operands[2] = adj_offsettable_operand (dst, 2*UNITS_PER_WORD); ! operands[3] = adj_offsettable_operand (dst, 3*UNITS_PER_WORD); if (! memory_address_p (word_mode, XEXP (operands[3], 0))) abort (); --- 701,707 ---- { operands[0] = dst; ! operands[1] = adjust_address (dst, word_mode, UNITS_PER_WORD); ! operands[2] = adjust_address (dst, word_mode, 2 * UNITS_PER_WORD); ! operands[3] = adjust_address (dst, word_mode, 3 * UNITS_PER_WORD); if (! memory_address_p (word_mode, XEXP (operands[3], 0))) abort (); *************** i960_output_move_quad_zero (dst) *** 721,727 **** operands[0] = dst; { ! operands[1] = adj_offsettable_operand (dst, 4); ! operands[2] = adj_offsettable_operand (dst, 8); ! operands[3] = adj_offsettable_operand (dst, 12); output_asm_insn ("st g14,%0\n\tst g14,%1\n\tst g14,%2\n\tst g14,%3", operands); } --- 726,732 ---- operands[0] = dst; { ! operands[1] = adjust_address (dst, word_mode, 4); ! operands[2] = adjust_address (dst, word_mode, 8); ! operands[3] = adjust_address (dst, word_mode, 12); output_asm_insn ("st g14,%0\n\tst g14,%1\n\tst g14,%2\n\tst g14,%3", operands); } *** config/i960/i960.md 2001/04/03 15:05:49 1.19 --- config/i960/i960.md 2001/07/03 14:06:33 *************** *** 910,914 **** operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adj_offsettable_operand (operands[3], UNITS_PER_WORD); return \"lda %0,%2\;st %1,%3\;st %D1,%4\"; }" --- 910,914 ---- operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adjust_address (operands[3], word_mode, UNITS_PER_WORD); return \"lda %0,%2\;st %1,%3\;st %D1,%4\"; }" *************** *** 989,995 **** operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adj_offsettable_operand (operands[3], UNITS_PER_WORD); ! operands[5] = adj_offsettable_operand (operands[4], UNITS_PER_WORD); ! operands[6] = adj_offsettable_operand (operands[5], UNITS_PER_WORD); return \"lda %0,%2\;st %1,%3\;st %D1,%4\;st %E1,%5\;st %F1,%6\"; }" --- 989,995 ---- operands[3] = gen_rtx_MEM (word_mode, operands[2]); ! operands[4] = adjust_address (operands[3], word_mode, UNITS_PER_WORD); ! operands[5] = adjust_address (operands[4], word_mode, UNITS_PER_WORD); ! operands[6] = adjust_address (operands[5], word_mode, UNITS_PER_WORD); return \"lda %0,%2\;st %1,%3\;st %D1,%4\;st %E1,%5\;st %F1,%6\"; }" *************** *** 1085,1089 **** return \"stl %1,%0\"; case 5: ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"st g14,%0\;st g14,%1\"; } --- 1085,1089 ---- return \"stl %1,%0\"; case 5: ! operands[1] = adjust_address (operands[0], VOIDmode, 4); return \"st g14,%0\;st g14,%1\"; } *** config/m68hc11/m68hc11.c 2001/06/29 17:21:14 1.13 --- config/m68hc11/m68hc11.c 2001/07/03 14:06:41 *************** m68hc11_split_move (to, from, scratch) *** 2636,2640 **** if (offset) { ! high_from = adj_offsettable_operand (high_from, offset); low_from = high_from; } --- 2636,2640 ---- if (offset) { ! high_from = adjust_address (high_from, mode, offset); low_from = high_from; } *** config/m68k/m68k.c 2001/07/03 01:58:34 1.44 --- config/m68k/m68k.c 2001/07/03 14:06:46 *************** output_scc_di(op, operand1, operand2, de *** 1067,1071 **** loperands[1] = gen_rtx_REG (SImode, REGNO (operand1) + 1); else ! loperands[1] = adj_offsettable_operand (operand1, 4); if (operand2 != const0_rtx) { --- 1067,1071 ---- loperands[1] = gen_rtx_REG (SImode, REGNO (operand1) + 1); else ! loperands[1] = adjust_address (operand1, SImode, 4); if (operand2 != const0_rtx) { *************** output_scc_di(op, operand1, operand2, de *** 1074,1078 **** loperands[3] = gen_rtx_REG (SImode, REGNO (operand2) + 1); else ! loperands[3] = adj_offsettable_operand (operand2, 4); } loperands[4] = gen_label_rtx(); --- 1074,1078 ---- loperands[3] = gen_rtx_REG (SImode, REGNO (operand2) + 1); else ! loperands[3] = adjust_address (operand2, SImode, 4); } loperands[4] = gen_label_rtx(); *************** output_btst (operands, countop, dataop, *** 1245,1249 **** int offset = (count & ~signpos) / 8; count = count & signpos; ! operands[1] = dataop = adj_offsettable_operand (dataop, offset); } if (count == signpos) --- 1245,1249 ---- int offset = (count & ~signpos) / 8; count = count & signpos; ! operands[1] = dataop = adjust_address (dataop, QImode, offset); } if (count == signpos) *************** output_move_double (operands) *** 1880,1885 **** else if (optype0 == OFFSOP) { ! middlehalf[0] = adj_offsettable_operand (operands[0], 4); ! latehalf[0] = adj_offsettable_operand (operands[0], size - 4); } else --- 1880,1885 ---- else if (optype0 == OFFSOP) { ! middlehalf[0] = adjust_address (operands[0], SImode, 4); ! latehalf[0] = adjust_address (operands[0], SImode, size - 4); } else *************** output_move_double (operands) *** 1896,1901 **** else if (optype1 == OFFSOP) { ! middlehalf[1] = adj_offsettable_operand (operands[1], 4); ! latehalf[1] = adj_offsettable_operand (operands[1], size - 4); } else if (optype1 == CNSTOP) --- 1896,1901 ---- else if (optype1 == OFFSOP) { ! middlehalf[1] = adjust_address (operands[1], SImode, 4); ! latehalf[1] = adjust_address (operands[1], SImode, size - 4); } else if (optype1 == CNSTOP) *************** output_move_double (operands) *** 1935,1939 **** latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], size - 4); else latehalf[0] = operands[0]; --- 1935,1939 ---- latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, size - 4); else latehalf[0] = operands[0]; *************** output_move_double (operands) *** 1942,1946 **** latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], size - 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); --- 1942,1946 ---- latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, size - 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); *************** compadr: *** 1977,1990 **** xops[1] = XEXP (operands[1], 0); output_asm_insn ("lea %a1,%0", xops); ! if( GET_MODE (operands[1]) == XFmode ) { operands[1] = gen_rtx_MEM (XFmode, latehalf[0]); ! middlehalf[1] = adj_offsettable_operand (operands[1], size-8); ! latehalf[1] = adj_offsettable_operand (operands[1], size-4); } else { operands[1] = gen_rtx_MEM (DImode, latehalf[0]); ! latehalf[1] = adj_offsettable_operand (operands[1], size-4); } } --- 1977,1990 ---- xops[1] = XEXP (operands[1], 0); output_asm_insn ("lea %a1,%0", xops); ! if (GET_MODE (operands[1]) == XFmode ) { operands[1] = gen_rtx_MEM (XFmode, latehalf[0]); ! middlehalf[1] = adjust_address (operands[1], DImode, size - 8); ! latehalf[1] = adjust_address (operands[1], DImode, size - 4); } else { operands[1] = gen_rtx_MEM (DImode, latehalf[0]); ! latehalf[1] = adjust_address (operands[1], DImode, size - 4); } } *************** output_andsi3 (operands) *** 3493,3497 **** { if (GET_CODE (operands[0]) != REG) ! operands[0] = adj_offsettable_operand (operands[0], 2); operands[2] = GEN_INT (INTVAL (operands[2]) & 0xffff); /* Do not delete a following tstl %0 insn; that would be incorrect. */ --- 3493,3497 ---- { if (GET_CODE (operands[0]) != REG) ! operands[0] = adjust_address (operands[0], HImode, 2); operands[2] = GEN_INT (INTVAL (operands[2]) & 0xffff); /* Do not delete a following tstl %0 insn; that would be incorrect. */ *************** output_andsi3 (operands) *** 3512,3516 **** else { ! operands[0] = adj_offsettable_operand (operands[0], 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } --- 3512,3516 ---- else { ! operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } *************** output_iorsi3 (operands) *** 3534,3538 **** { if (GET_CODE (operands[0]) != REG) ! operands[0] = adj_offsettable_operand (operands[0], 2); /* Do not delete a following tstl %0 insn; that would be incorrect. */ CC_STATUS_INIT; --- 3534,3538 ---- { if (GET_CODE (operands[0]) != REG) ! operands[0] = adjust_address (operands[0], HImode, 2); /* Do not delete a following tstl %0 insn; that would be incorrect. */ CC_STATUS_INIT; *************** output_iorsi3 (operands) *** 3547,3556 **** { if (DATA_REG_P (operands[0])) ! { ! operands[1] = GEN_INT (logval); ! } else { ! operands[0] = adj_offsettable_operand (operands[0], 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } --- 3547,3554 ---- { if (DATA_REG_P (operands[0])) ! operands[1] = GEN_INT (logval); else { ! operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } *************** output_xorsi3 (operands) *** 3572,3576 **** { if (! DATA_REG_P (operands[0])) ! operands[0] = adj_offsettable_operand (operands[0], 2); /* Do not delete a following tstl %0 insn; that would be incorrect. */ CC_STATUS_INIT; --- 3570,3574 ---- { if (! DATA_REG_P (operands[0])) ! operands[0] = adjust_address (operands[0], HImode, 2); /* Do not delete a following tstl %0 insn; that would be incorrect. */ CC_STATUS_INIT; *************** output_xorsi3 (operands) *** 3585,3594 **** { if (DATA_REG_P (operands[0])) ! { ! operands[1] = GEN_INT (logval); ! } else { ! operands[0] = adj_offsettable_operand (operands[0], 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } --- 3583,3590 ---- { if (DATA_REG_P (operands[0])) ! operands[1] = GEN_INT (logval); else { ! operands[0] = adjust_address (operands[0], SImode, 3 - (logval / 8)); operands[1] = GEN_INT (logval % 8); } *** config/m68k/m68k.md 2001/07/02 19:47:43 1.40 --- config/m68k/m68k.md 2001/07/03 14:06:58 *************** *** 838,843 **** if (GET_CODE (operands[0]) == MEM) { ! operands[0] = adj_offsettable_operand (operands[0], ! INTVAL (operands[1]) / 8); operands[1] = GEN_INT (7 - INTVAL (operands[1]) % 8); return output_btst (operands, operands[1], operands[0], insn, 7); --- 838,843 ---- if (GET_CODE (operands[0]) == MEM) { ! operands[0] = adjust_address (operands[0], QImode, ! INTVAL (operands[1]) / 8); operands[1] = GEN_INT (7 - INTVAL (operands[1]) % 8); return output_btst (operands, operands[1], operands[0], insn, 7); *************** *** 859,864 **** if (GET_CODE (operands[0]) == MEM) { ! operands[0] = adj_offsettable_operand (operands[0], ! INTVAL (operands[1]) / 8); operands[1] = GEN_INT (7 - INTVAL (operands[1]) % 8); return output_btst (operands, operands[1], operands[0], insn, 7); --- 859,864 ---- if (GET_CODE (operands[0]) == MEM) { ! operands[0] = adjust_address (operands[0], QImode, ! INTVAL (operands[1]) / 8); operands[1] = GEN_INT (7 - INTVAL (operands[1]) % 8); return output_btst (operands, operands[1], operands[0], insn, 7); *************** *** 1443,1447 **** } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adj_offsettable_operand (operands[1], 3); return \"move%.b %1,%0\"; }") --- 1443,1447 ---- } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adjust_address (operands[1], QImode, 3); return \"move%.b %1,%0\"; }") *************** *** 1471,1475 **** } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adj_offsettable_operand (operands[1], 1); return \"move%.b %1,%0\"; }") --- 1471,1475 ---- } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adjust_address (operands[1], QImode, 1); return \"move%.b %1,%0\"; }") *************** *** 1490,1494 **** } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adj_offsettable_operand (operands[1], 2); return \"move%.w %1,%0\"; }") --- 1490,1494 ---- } if (GET_CODE (operands[1]) == MEM) ! operands[1] = adjust_address (operands[1], QImode, 2); return \"move%.w %1,%0\"; }") *************** *** 1533,1537 **** return \"clr%.l %0\;move%.l %1,%0\"; else ! operands[2] = adj_offsettable_operand (operands[0], 4); if (GET_CODE (operands[1]) != REG || GET_CODE (operands[2]) != REG || REGNO (operands[1]) != REGNO (operands[2])) --- 1533,1537 ---- return \"clr%.l %0\;move%.l %1,%0\"; else ! operands[2] = adjust_address (operands[0], SImode, 4); if (GET_CODE (operands[1]) != REG || GET_CODE (operands[2]) != REG || REGNO (operands[1]) != REGNO (operands[2])) *************** *** 1620,1624 **** { output_asm_insn (\"clr%.w %0\", operands); ! operands[0] = adj_offsettable_operand (operands[0], 2); return \"move%.w %1,%0\"; } --- 1620,1624 ---- { output_asm_insn (\"clr%.w %0\", operands); ! operands[0] = adjust_address (operands[0], HImode, 2); return \"move%.w %1,%0\"; } *************** *** 1661,1665 **** { output_asm_insn (\"clr%.b %0\", operands); ! operands[0] = adj_offsettable_operand (operands[0], 1); return \"move%.b %1,%0\"; } --- 1661,1665 ---- { output_asm_insn (\"clr%.b %0\", operands); ! operands[0] = adjust_address (operands[0], QImode, 1); return \"move%.b %1,%0\"; } *************** *** 1712,1716 **** { output_asm_insn (\"clr%.l %0\", operands); ! operands[0] = adj_offsettable_operand (operands[0], 3); return \"move%.b %1,%0\"; } --- 1712,1716 ---- { output_asm_insn (\"clr%.l %0\", operands); ! operands[0] = adjust_address (operands[0], QImode, 3); return \"move%.b %1,%0\"; } *************** *** 2110,2114 **** operands[4] = operands[1]; else ! operands[4] = adj_offsettable_operand (operands[1], 4); if (GET_CODE (operands[1]) == MEM && GET_CODE (XEXP (operands[1], 0)) == PRE_DEC) --- 2110,2114 ---- operands[4] = operands[1]; else ! operands[4] = adjust_address (operands[1], SImode, 4); if (GET_CODE (operands[1]) == MEM && GET_CODE (XEXP (operands[1], 0)) == PRE_DEC) *************** *** 2159,2163 **** operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adj_offsettable_operand (operands[0], 4); return \"add%.l %1,%2\;negx%.l %0\;neg%.l %0\"; } ") --- 2159,2163 ---- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adjust_address (operands[0], SImode, 4); return \"add%.l %1,%2\;negx%.l %0\;neg%.l %0\"; } ") *************** *** 2178,2182 **** operands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[1] = adj_offsettable_operand (operands[1], 4); return \"add%.l %1,%0\"; } ") --- 2178,2182 ---- operands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[1] = adjust_address (operands[1], SImode, 4); return \"add%.l %1,%0\"; } ") *************** *** 2211,2215 **** else { ! low = adj_offsettable_operand (operands[2], 4); high = operands[2]; } --- 2211,2215 ---- else { ! low = adjust_address (operands[2], SImode, 4); high = operands[2]; } *************** *** 2266,2270 **** else { ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"add%.l %R2,%1\;move%.l %0,%3\;addx%.l %2,%3\;move%.l %3,%0\"; } --- 2266,2270 ---- else { ! operands[1] = adjust_address (operands[0], SImode, 4); return \"add%.l %R2,%1\;move%.l %0,%3\;addx%.l %2,%3\;move%.l %3,%0\"; } *************** *** 2738,2742 **** operands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[1] = adj_offsettable_operand (operands[1], 4); return \"sub%.l %1,%0\"; } ") --- 2738,2742 ---- operands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[1] = adjust_address (operands[1], SImode, 4); return \"sub%.l %1,%0\"; } ") *************** *** 2773,2777 **** else { ! low = adj_offsettable_operand (operands[2], 4); high = operands[2]; } --- 2773,2777 ---- else { ! low = adjust_address (operands[2], SImode, 4); high = operands[2]; } *************** *** 2828,2832 **** else { ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"sub%.l %R2,%1\;move%.l %0,%3\;subx%.l %2,%3\;move%.l %3,%0\"; } --- 2828,2832 ---- else { ! operands[1] = adjust_address (operands[0], SImode, 4); return \"sub%.l %R2,%1\;move%.l %0,%3\;subx%.l %2,%3\;move%.l %3,%0\"; } *************** *** 3665,3669 **** operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 4); switch (INTVAL (lo)) { --- 3665,3669 ---- operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], SImode, 4); switch (INTVAL (lo)) { *************** *** 3686,3695 **** if (GET_CODE (operands[0]) != REG) { ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"and%.l %2,%0\;and%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adj_offsettable_operand (operands[2], 4); return \"and%.l %2,%0\;and%.l %1,%R0\"; } --- 3686,3695 ---- if (GET_CODE (operands[0]) != REG) { ! operands[1] = adjust_address (operands[0], SImode, 4); return \"and%.l %2,%0\;and%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adjust_address (operands[2], SImode, 4); return \"and%.l %2,%0\;and%.l %1,%R0\"; } *************** *** 3782,3791 **** operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 4); if (GET_MODE (operands[1]) == SImode) return \"or%.l %1,%0\"; byte_mode = (GET_MODE (operands[1]) == QImode); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adj_offsettable_operand (operands[0], byte_mode ? 3 : 2); if (byte_mode) return \"or%.b %1,%0\"; --- 3782,3792 ---- operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], SImode, 4); if (GET_MODE (operands[1]) == SImode) return \"or%.l %1,%0\"; byte_mode = (GET_MODE (operands[1]) == QImode); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adjust_address (operands[0], byte_mode ? QImode : HImode, ! byte_mode ? 3 : 2); if (byte_mode) return \"or%.b %1,%0\"; *************** *** 3831,3835 **** operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 4); switch (INTVAL (lo)) { --- 3832,3836 ---- operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], SImode, 4); switch (INTVAL (lo)) { *************** *** 3854,3863 **** if (GET_CODE (operands[0]) != REG) { ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"or%.l %2,%0\;or%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adj_offsettable_operand (operands[2], 4); return \"or%.l %2,%0\;or%.l %1,%R0\"; } --- 3855,3864 ---- if (GET_CODE (operands[0]) != REG) { ! operands[1] = adjust_address (operands[0], SImode, 4); return \"or%.l %2,%0\;or%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adjust_address (operands[2], SImode, 4); return \"or%.l %2,%0\;or%.l %1,%R0\"; } *************** *** 3944,3948 **** CC_STATUS_INIT; if (GET_CODE (operands[2]) != REG) ! operands[2] = adj_offsettable_operand (operands[2], 2); if (GET_CODE (operands[2]) != REG || REGNO (operands[2]) != REGNO (operands[0])) --- 3945,3949 ---- CC_STATUS_INIT; if (GET_CODE (operands[2]) != REG) ! operands[2] = adjust_address (operands[2], HImode, 2); if (GET_CODE (operands[2]) != REG || REGNO (operands[2]) != REGNO (operands[0])) *************** *** 3963,3967 **** byte_mode = (GET_MODE (operands[1]) == QImode); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adj_offsettable_operand (operands[0], byte_mode ? 3 : 2); if (byte_mode) return \"or%.b %1,%0\"; --- 3964,3969 ---- byte_mode = (GET_MODE (operands[1]) == QImode); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adjust_address (operands[0], byte_mode ? QImode : HImode, ! byte_mode ? 3 : 2); if (byte_mode) return \"or%.b %1,%0\"; *************** *** 4010,4014 **** operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 4); switch (INTVAL (lo)) { --- 4012,4016 ---- operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], SImode, 4); switch (INTVAL (lo)) { *************** *** 4035,4044 **** if (GET_CODE (operands[0]) != REG) { ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"eor%.l %2,%0\;eor%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adj_offsettable_operand (operands[2], 4); return \"eor%.l %2,%0\;eor%.l %1,%R0\"; } --- 4037,4046 ---- if (GET_CODE (operands[0]) != REG) { ! operands[1] = adjust_address (operands[0], SImode, 4); return \"eor%.l %2,%0\;eor%.l %R2,%1\"; } if (GET_CODE (operands[2]) != REG) { ! operands[1] = adjust_address (operands[2], SImode, 4); return \"eor%.l %2,%0\;eor%.l %1,%R0\"; } *************** *** 4139,4143 **** operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[1] = adj_offsettable_operand (operands[0], 4); if (ADDRESS_REG_P (operands[0])) return \"exg %/d0,%1\;neg%.l %/d0\;exg %/d0,%1\;exg %/d0,%0\;negx%.l %/d0\;exg %/d0,%0\"; --- 4141,4145 ---- operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[1] = adjust_address (operands[0], SImode, 4); if (ADDRESS_REG_P (operands[0])) return \"exg %/d0,%1\;neg%.l %/d0\;exg %/d0,%1\;exg %/d0,%0\;negx%.l %/d0\;exg %/d0,%0\"; *************** *** 4452,4456 **** operands[1] = operands[0]; else ! operands[1] = adj_offsettable_operand (operands[0], 4); return \"not%.l %1\;not%.l %0\"; }") --- 4454,4458 ---- operands[1] = operands[0]; else ! operands[1] = adjust_address (operands[0], SImode, 4); return \"not%.l %1\;not%.l %0\"; }") *************** *** 4521,4525 **** operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adj_offsettable_operand (operands[0], 4); if (ADDRESS_REG_P (operands[0])) return \"move%.l %1,%0\;sub%.l %2,%2\"; --- 4523,4527 ---- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adjust_address (operands[0], SImode, 4); if (ADDRESS_REG_P (operands[0])) return \"move%.l %1,%0\;sub%.l %2,%2\"; *************** *** 4545,4549 **** else { ! operands[3] = adj_offsettable_operand (operands[0], 4); return \"move%.w %1,%2\;move%.l %2,%0\;clr%.l %3\"; } --- 4547,4551 ---- else { ! operands[3] = adjust_address (operands[0], SImode, 4); return \"move%.w %1,%2\;move%.l %2,%0\;clr%.l %3\"; } *************** *** 4566,4570 **** operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[3] = adj_offsettable_operand (operands[1], 4); if (GET_CODE (operands[0]) == REG) operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); --- 4568,4572 ---- operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[3] = adjust_address (operands[1], SImode, 4); if (GET_CODE (operands[0]) == REG) operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); *************** *** 4574,4578 **** return \"move%.l %3,%0\;clr%.l %0\"; else ! operands[2] = adj_offsettable_operand (operands[0], 4); if (ADDRESS_REG_P (operands[2])) return \"move%.l %3,%0\;sub%.l %2,%2\"; --- 4576,4580 ---- return \"move%.l %3,%0\;clr%.l %0\"; else ! operands[2] = adjust_address (operands[0], SImode, 4); if (ADDRESS_REG_P (operands[2])) return \"move%.l %3,%0\;sub%.l %2,%2\"; *************** *** 4736,4740 **** { if (GET_CODE (operands[1]) != REG) ! operands[1] = adj_offsettable_operand (operands[1], 2); return \"move%.w %1,%0\"; } ") --- 4738,4742 ---- { if (GET_CODE (operands[1]) != REG) ! operands[1] = adjust_address (operands[1], HImode, 2); return \"move%.w %1,%0\"; } ") *************** *** 4777,4781 **** operands[3] = operands[0]; else ! operands[3] = adj_offsettable_operand (operands[0], 4); if (TARGET_68020) return \"move%.l %1,%3\;smi %2\;extb%.l %2\;move%.l %2,%0\"; --- 4779,4783 ---- operands[3] = operands[0]; else ! operands[3] = adjust_address (operands[0], SImode, 4); if (TARGET_68020) return \"move%.l %1,%3\;smi %2\;extb%.l %2\;move%.l %2,%0\"; *************** *** 4917,4921 **** ;; operands[2] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); ;; else ! ;; operands[2] = adj_offsettable_operand (operands[1], 4); ;; return \"move%.l %0,%2\;clr%.l %1\"; ;;} ") --- 4919,4923 ---- ;; operands[2] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); ;; else ! ;; operands[2] = adjust_address (operands[1], SImode, 4); ;; return \"move%.l %0,%2\;clr%.l %1\"; ;;} ") *************** *** 4946,4954 **** operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adj_offsettable_operand (operands[0], 4); if (GET_CODE (operands[1]) == REG) operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[3] = adj_offsettable_operand (operands[1], 4); if (ADDRESS_REG_P (operands[0])) return \"move%.l %1,%2\;sub%.l %0,%0\"; --- 4948,4956 ---- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[2] = adjust_address (operands[0], SImode, 4); if (GET_CODE (operands[1]) == REG) operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else ! operands[3] = adjust_address (operands[1], SImode, 4); if (ADDRESS_REG_P (operands[0])) return \"move%.l %1,%2\;sub%.l %0,%0\"; *************** *** 5285,5289 **** { operands[0] ! = adj_offsettable_operand (operands[0], INTVAL (operands[1]) / 8); return \"move%.l %2,%0\"; --- 5287,5291 ---- { operands[0] ! = adjust_address (operands[0], SImode, INTVAL (operands[1]) / 8); return \"move%.l %2,%0\"; *************** *** 5308,5317 **** } else ! operands[0] ! = adj_offsettable_operand (operands[0], INTVAL (operands[2]) / 8); if (GET_CODE (operands[3]) == MEM) ! operands[3] = adj_offsettable_operand (operands[3], ! (32 - INTVAL (operands[1])) / 8); if (INTVAL (operands[1]) == 8) return \"move%.b %3,%0\"; --- 5310,5322 ---- } else ! operands[0] = adjust_address (operands[0], ! INTVAL (operands[1]) == 8 ? QImode : HImode, ! INTVAL (operands[2]) / 8); if (GET_CODE (operands[3]) == MEM) ! operands[3] = adjust_address (operands[3], ! INTVAL (operands[1]) == 8 ? QImode : HImode, ! (32 - INTVAL (operands[1])) / 8); ! if (INTVAL (operands[1]) == 8) return \"move%.b %3,%0\"; *************** *** 5338,5342 **** { operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[2]) / 8); return \"move%.l %1,%0\"; --- 5343,5347 ---- { operands[1] ! = adjust_address (operands[1], SImode, INTVAL (operands[2]) / 8); return \"move%.l %1,%0\"; *************** *** 5363,5372 **** else operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[3]) / 8); output_asm_insn (\"clr%.l %0\", operands); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adj_offsettable_operand (operands[0], ! (32 - INTVAL (operands[1])) / 8); if (INTVAL (operands[2]) == 8) return \"move%.b %1,%0\"; --- 5368,5379 ---- else operands[1] ! = adjust_address (operands[1], SImode, INTVAL (operands[3]) / 8); output_asm_insn (\"clr%.l %0\", operands); if (GET_CODE (operands[0]) == MEM) ! operands[0] = adjust_address (operands[0], ! INTVAL (operands[2]) == 8 ? QImode : HImode, ! (32 - INTVAL (operands[1])) / 8); ! if (INTVAL (operands[2]) == 8) return \"move%.b %1,%0\"; *************** *** 5392,5396 **** { operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[2]) / 8); return \"move%.l %1,%0\"; --- 5399,5403 ---- { operands[1] ! = adjust_address (operands[1], SImode, INTVAL (operands[2]) / 8); return \"move%.l %1,%0\"; *************** *** 5416,5420 **** else operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) --- 5423,5429 ---- else operands[1] ! = adjust_address (operands[1], ! INTVAL (operands[2]) == 8 ? QImode : HImode, ! INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) *************** *** 5919,5923 **** operands[3] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[3] = adj_offsettable_operand (operands[0], 4); if (! ADDRESS_REG_P (operands[0])) { --- 5928,5932 ---- operands[3] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[3] = adjust_address (operands[0], SImode, 4); if (! ADDRESS_REG_P (operands[0])) { *************** *** 5999,6003 **** operands[3] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[3] = adj_offsettable_operand (operands[0], 4); if (!ADDRESS_REG_P (operands[0])) { --- 6008,6012 ---- operands[3] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else ! operands[3] = adjust_address (operands[0], SImode, 4); if (!ADDRESS_REG_P (operands[0])) { *** config/m88k/m88k.md 2001/04/03 15:05:58 1.12 --- config/m88k/m88k.md 2001/07/03 14:07:04 *************** *** 2014,2018 **** ; return \"or %0,%#r0,0\;or %d0,%#r0,0\"; ; case 1: ! ; operands[1] = adj_offsettable_operand (operands[0], 4); ; return \"%v0st\\t %#r0,%0\;st %#r0,%1\"; ; } --- 2014,2018 ---- ; return \"or %0,%#r0,0\;or %d0,%#r0,0\"; ; case 1: ! ; operands[1] = adjust_address (operands[0], SImode, 4); ; return \"%v0st\\t %#r0,%0\;st %#r0,%1\"; ; } *** config/mcore/mcore.c 2001/06/26 18:09:02 1.13 --- mcore.c 2001/07/03 14:07:08 *************** mcore_print_operand (stream, x, code) *** 310,315 **** break; case MEM: ! mcore_print_operand_address (stream, ! XEXP (adj_offsettable_operand (x, 4), 0)); break; default: --- 310,315 ---- break; case MEM: ! mcore_print_operand_address ! (stream, XEXP (adjust_address (x, SImode, 4), 0)); break; default: *** config/mips/mips.c 2001/07/03 01:58:35 1.119 --- config/mips/mips.c 2001/07/03 14:07:21 *************** mips_move_2words (operands, insn) *** 2539,2543 **** else if (double_memory_operand (op1, GET_MODE (op1))) { ! operands[2] = adj_offsettable_operand (op1, 4); ret = (reg_mentioned_p (op0, op1) ? "lw\t%D0,%2\n\tlw\t%0,%1" --- 2539,2543 ---- else if (double_memory_operand (op1, GET_MODE (op1))) { ! operands[2] = adjust_address (op1, SImode, 4); ret = (reg_mentioned_p (op0, op1) ? "lw\t%D0,%2\n\tlw\t%0,%1" *************** mips_move_2words (operands, insn) *** 2633,2637 **** else if (double_memory_operand (op0, GET_MODE (op0))) { ! operands[2] = adj_offsettable_operand (op0, 4); ret = "sw\t%1,%0\n\tsw\t%D1,%2"; } --- 2633,2637 ---- else if (double_memory_operand (op0, GET_MODE (op0))) { ! operands[2] = adjust_address (op0, SImode, 4); ret = "sw\t%1,%0\n\tsw\t%D1,%2"; } *************** mips_move_2words (operands, insn) *** 2648,2652 **** else { ! operands[2] = adj_offsettable_operand (op0, 4); ret = "sw\t%.,%0\n\tsw\t%.,%2"; } --- 2648,2652 ---- else { ! operands[2] = adjust_address (op0, SImode, 4); ret = "sw\t%.,%0\n\tsw\t%.,%2"; } *** config/mips/mips.md 2001/07/02 19:47:43 1.96 --- config/mips/mips.md 2001/07/03 14:07:38 *************** move\\t%0,%z4\\n\\ *** 5071,5076 **** scratch = gen_rtx_REG (SImode, REGNO (scratch)); memword = adjust_address (op1, SImode, 0); ! offword = change_address (adj_offsettable_operand (op1, 4), ! SImode, NULL_RTX); if (BYTES_BIG_ENDIAN) { --- 5071,5076 ---- scratch = gen_rtx_REG (SImode, REGNO (scratch)); memword = adjust_address (op1, SImode, 0); ! offword = adjust_address (op1, SImode, 4); ! if (BYTES_BIG_ENDIAN) { *************** move\\t%0,%z4\\n\\ *** 5151,5156 **** scratch = gen_rtx_REG (SImode, REGNO (operands[2])); memword = adjust_address (op0, SImode, 0); ! offword = change_address (adj_offsettable_operand (op0, 4), ! SImode, NULL_RTX); if (BYTES_BIG_ENDIAN) { --- 5151,5156 ---- scratch = gen_rtx_REG (SImode, REGNO (operands[2])); memword = adjust_address (op0, SImode, 0); ! offword = adjust_address (op0, SImode, 4); ! if (BYTES_BIG_ENDIAN) { *** config/mn10200/mn10200.c 2001/06/26 18:09:04 1.18 --- config/mn10200/mn10200.c 2001/07/03 14:07:40 *************** print_operand (file, x, code) *** 218,222 **** case MEM: fputc ('(', file); ! x = adj_offsettable_operand (x, 2); output_address (XEXP (x, 0)); fputc (')', file); --- 218,222 ---- case MEM: fputc ('(', file); ! x = adjust_address (x, HImode, 2); output_address (XEXP (x, 0)); fputc (')', file); *** config/mn10300/mn10300.c 2001/06/26 18:09:07 1.36 --- config/mn10300/mn10300.c 2001/07/03 14:07:42 *************** print_operand (file, x, code) *** 201,205 **** case MEM: fputc ('(', file); ! x = adj_offsettable_operand (x, 4); output_address (XEXP (x, 0)); fputc (')', file); --- 201,205 ---- case MEM: fputc ('(', file); ! x = adjust_address (x, SImode, 4); output_address (XEXP (x, 0)); fputc (')', file); *** config/ns32k/ns32k.c 2001/07/02 19:47:43 1.15 --- config/ns32k/ns32k.c 2001/07/03 14:07:43 *************** split_di (operands, num, lo_half, hi_hal *** 256,260 **** { lo_half[num] = operands[num]; ! hi_half[num] = adj_offsettable_operand (operands[num], 4); } else --- 256,260 ---- { lo_half[num] = operands[num]; ! hi_half[num] = adjust_address (operands[num], SImode, 4); } else *************** output_move_double (operands) *** 326,330 **** latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], 4); else latehalf[0] = operands[0]; --- 326,330 ---- latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, 4); else latehalf[0] = operands[0]; *************** output_move_double (operands) *** 333,337 **** latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); --- 333,337 ---- latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); *************** output_move_double (operands) *** 383,387 **** output_asm_insn ("addr %a0,%1", xops); operands[1] = gen_rtx_MEM (DImode, operands[0]); ! latehalf[1] = adj_offsettable_operand (operands[1], 4); /* The first half has the overlap, Do the late half first. */ output_asm_insn (singlemove_string (latehalf), latehalf); --- 383,387 ---- output_asm_insn ("addr %a0,%1", xops); operands[1] = gen_rtx_MEM (DImode, operands[0]); ! latehalf[1] = adjust_address (operands[1], SImode, 4); /* The first half has the overlap, Do the late half first. */ output_asm_insn (singlemove_string (latehalf), latehalf); *** config/ns32k/ns32k.md 2001/06/30 18:07:44 1.18 --- config/ns32k/ns32k.md 2001/07/03 14:07:48 *************** *** 2218,2223 **** if (INTVAL (operands[2]) >= 8) { ! operands[0] = adj_offsettable_operand (operands[0], ! INTVAL (operands[2]) / 8); operands[2] = GEN_INT (INTVAL (operands[2]) % 8); } --- 2218,2223 ---- if (INTVAL (operands[2]) >= 8) { ! operands[0] = adjust_address (operands[0], QImode, ! INTVAL (operands[2]) / 8); operands[2] = GEN_INT (INTVAL (operands[2]) % 8); } *** config/pa/pa.c 2001/07/03 01:58:35 1.114 --- config/pa/pa.c 2001/07/03 14:07:58 *************** output_move_double (operands) *** 2062,2066 **** latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], 4); else latehalf[0] = operands[0]; --- 2062,2066 ---- latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, 4); else latehalf[0] = operands[0]; *************** output_move_double (operands) *** 2069,2073 **** latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); --- 2069,2073 ---- latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); *** config/pdp11/pdp11.c 2001/06/26 18:09:11 1.17 --- config/pdp11/pdp11.c 2001/07/03 14:08:00 *************** output_move_double (operands) *** 405,409 **** latehalf[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], 2); else latehalf[0] = operands[0]; --- 405,409 ---- latehalf[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], HImode, 2); else latehalf[0] = operands[0]; *************** output_move_double (operands) *** 412,416 **** latehalf[1] = gen_rtx_REG (HImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], 2); else if (optype1 == CNSTOP) { --- 412,416 ---- latehalf[1] = gen_rtx_REG (HImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], HImode, 2); else if (optype1 == CNSTOP) { *************** output_move_quad (operands) *** 617,621 **** latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 2); else if (optype0 == OFFSOP) ! latehalf[0] = adj_offsettable_operand (operands[0], 4); else latehalf[0] = operands[0]; --- 617,621 ---- latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 2); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, 4); else latehalf[0] = operands[0]; *************** output_move_quad (operands) *** 624,628 **** latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 2); else if (optype1 == OFFSOP) ! latehalf[1] = adj_offsettable_operand (operands[1], 4); else if (optype1 == CNSTOP) { --- 624,628 ---- latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 2); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, 4); else if (optype1 == CNSTOP) { *** config/pdp11/pdp11.md 2001/04/03 15:06:09 1.14 --- config/pdp11/pdp11.md 2001/07/03 14:08:01 *************** *** 835,844 **** /* we don't want to mess with auto increment */ ! switch(which_alternative) { case 0: latehalf[0] = operands[0]; ! operands[0] = adj_offsettable_operand(operands[0], 2); output_asm_insn(\"mov %1, %0\", operands); --- 835,844 ---- /* we don't want to mess with auto increment */ ! switch (which_alternative) { case 0: latehalf[0] = operands[0]; ! operands[0] = adjust_address(operands[0], HImode, 2); output_asm_insn(\"mov %1, %0\", operands); *************** *** 1001,1005 **** operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 2); if (! CONSTANT_P(operands[2])) --- 1001,1005 ---- operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], HImode, 2); if (! CONSTANT_P(operands[2])) *************** *** 1010,1014 **** operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adj_offsettable_operand(operands[2], 2); output_asm_insn (\"add %2, %0\", operands); --- 1010,1014 ---- operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adjust_address (operands[2], HImode, 2); output_asm_insn (\"add %2, %0\", operands); *************** *** 1103,1107 **** operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 2); lateoperands[2] = operands[2]; --- 1103,1107 ---- operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], HImode, 2); lateoperands[2] = operands[2]; *************** *** 1110,1114 **** operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adj_offsettable_operand(operands[2], 2); output_asm_insn (\"sub %2, %0\", operands); --- 1110,1114 ---- operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adjust_address (operands[2], HImode, 2); output_asm_insn (\"sub %2, %0\", operands); *************** *** 1210,1214 **** operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 2); if (! CONSTANT_P(operands[2])) --- 1210,1214 ---- operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], HImode, 2); if (! CONSTANT_P(operands[2])) *************** *** 1219,1223 **** operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adj_offsettable_operand(operands[2], 2); output_asm_insn (\"bic %2, %0\", operands); --- 1219,1223 ---- operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adjust_address (operands[2], HImode, 2); output_asm_insn (\"bic %2, %0\", operands); *************** *** 1275,1279 **** operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adj_offsettable_operand (operands[0], 2); if (! CONSTANT_P(operands[2])) --- 1275,1279 ---- operands[0] = gen_rtx_REG (HImode, REGNO (operands[0]) + 1); else ! operands[0] = adjust_address (operands[0], HImode, 2); if (! CONSTANT_P(operands[2])) *************** *** 1284,1288 **** operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adj_offsettable_operand (operands[2], 2); output_asm_insn (\"bis %2, %0\", operands); --- 1284,1288 ---- operands[2] = gen_rtx_REG (HImode, REGNO (operands[2]) + 1); else ! operands[2] = adjust_address (operands[2], HImode, 2); output_asm_insn (\"bis %2, %0\", operands); *** config/sh/sh.c 2001/07/02 19:47:44 1.103 --- config/sh/sh.c 2001/07/03 14:08:09 *************** print_operand (stream, x, code) *** 295,299 **** if (GET_CODE (XEXP (x, 0)) != PRE_DEC && GET_CODE (XEXP (x, 0)) != POST_INC) ! x = adj_offsettable_operand (x, 4); print_operand_address (stream, XEXP (x, 0)); break; --- 295,299 ---- if (GET_CODE (XEXP (x, 0)) != PRE_DEC && GET_CODE (XEXP (x, 0)) != POST_INC) ! x = adjust_address (x, SImode, 4); print_operand_address (stream, XEXP (x, 0)); break; *** config/v850/v850.c 2001/06/26 18:09:20 1.42 --- config/v850/v850.c 2001/07/03 14:08:12 *************** print_operand (file, x, code) *** 483,487 **** break; case MEM: ! x = XEXP (adj_offsettable_operand (x, 4), 0); print_operand_address (file, x); if (GET_CODE (x) == CONST_INT) --- 483,487 ---- break; case MEM: ! x = XEXP (adjust_address (x, SImode, 4), 0); print_operand_address (file, x); if (GET_CODE (x) == CONST_INT) *** config/vax/vax.md 2001/01/14 09:08:51 1.15 --- config/vax/vax.md 2001/07/03 14:08:14 *************** *** 1323,1327 **** else operands[0] ! = adj_offsettable_operand (operands[0], INTVAL (operands[2]) / 8); CC_STATUS_INIT; --- 1323,1329 ---- else operands[0] ! = adjust_address (operands[0], ! INTVAL (operands[1]) == 8 ? QImode : HImode, ! INTVAL (operands[2]) / 8); CC_STATUS_INIT; *************** *** 1349,1353 **** else operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) --- 1351,1357 ---- else operands[1] ! = adjust_address (operands[1], ! INTVAL (operands[2]) == 8 ? QImode : HImode, ! INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) *************** *** 1374,1378 **** else operands[1] ! = adj_offsettable_operand (operands[1], INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) --- 1378,1384 ---- else operands[1] ! = adjust_address (operands[1], ! INTVAL (operands[2]) == 8 ? QImode : HImode, ! INTVAL (operands[3]) / 8); if (INTVAL (operands[2]) == 8) *** config/we32k/we32k.c 2001/06/26 18:09:23 1.10 --- config/we32k/we32k.c 2001/07/03 14:08:15 *************** output_move_double (operands) *** 52,56 **** } else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand (operands[0], 4); else abort (); --- 52,56 ---- } else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address (operands[0], SImode, 4); else abort (); *************** output_move_double (operands) *** 63,67 **** else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) { ! lsw_operands[1] = adj_offsettable_operand (operands[1], 4); lsw_sreg = operands[1]; for ( ; ; ) --- 63,67 ---- else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) { ! lsw_operands[1] = adjust_address (operands[1], SImode, 4); lsw_sreg = operands[1]; for ( ; ; ) *************** output_push_double (operands) *** 129,133 **** lsw_operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand (operands[0], 4); else if (GET_CODE (operands[0]) == CONST_DOUBLE) { --- 129,133 ---- lsw_operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address (operands[0], SImode, 4); else if (GET_CODE (operands[0]) == CONST_DOUBLE) { *** config/we32k/we32k.md 2000/05/01 17:32:22 1.5 --- config/we32k/we32k.md 2001/07/03 14:08:16 *************** *** 129,133 **** else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand(operands[0], 4); else abort(); --- 130,134 ---- else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address (operands[0], SImode, 4); else abort(); *************** *** 137,141 **** else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adj_offsettable_operand(operands[2], 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) --- 138,142 ---- else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adjust_address (operands[2], SImode, 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) *************** *** 179,183 **** else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand(operands[0], 4); else abort(); --- 180,184 ---- else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address(operands[0], SImode, 4); else abort(); *************** *** 187,191 **** else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) ! lsw_operands[1] = adj_offsettable_operand(operands[1], 4); else if (GET_CODE (operands[1]) == CONST_DOUBLE) --- 188,192 ---- else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) ! lsw_operands[1] = adjust_address (operands[1], SImode, 4); else if (GET_CODE (operands[1]) == CONST_DOUBLE) *************** *** 207,211 **** else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adj_offsettable_operand(operands[2], 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) --- 208,212 ---- else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adjust_address (operands[2], SImode, 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) *************** *** 293,297 **** else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand(operands[0], 4); else abort(); --- 294,298 ---- else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address (operands[0], SImode, 4); else abort(); *************** *** 301,305 **** else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adj_offsettable_operand(operands[2], 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) --- 302,306 ---- else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adjust_address (operands[2], SImode, 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) *************** *** 343,347 **** else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adj_offsettable_operand(operands[0], 4); else abort(); --- 344,348 ---- else if (GET_CODE (operands[0]) == MEM && offsettable_memref_p (operands[0])) ! lsw_operands[0] = adjust_address (operands[0], SImode, 4); else abort(); *************** *** 351,355 **** else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) ! lsw_operands[1] = adj_offsettable_operand(operands[1], 4); else if (GET_CODE (operands[1]) == CONST_DOUBLE) --- 352,356 ---- else if (GET_CODE (operands[1]) == MEM && offsettable_memref_p (operands[1])) ! lsw_operands[1] = adjust_address (operands[1], SImode, 4); else if (GET_CODE (operands[1]) == CONST_DOUBLE) *************** *** 371,375 **** else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adj_offsettable_operand(operands[2], 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) --- 372,376 ---- else if (GET_CODE (operands[2]) == MEM && offsettable_memref_p (operands[2])) ! lsw_operands[2] = adjust_address (operands[2], SImode, 4); else if (GET_CODE (operands[2]) == CONST_DOUBLE) From gcc-patches-return-37983-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 20:32:07 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1590 invoked by alias); 3 Jul 2001 20:32:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1553 invoked from network); 3 Jul 2001 20:32:02 -0000 Received: from unknown (HELO laptop.moene.indiv.nluug.nl) (195.109.255.217) by sourceware.cygnus.com with SMTP; 3 Jul 2001 20:32:02 -0000 Received: from local ([127.0.0.1] helo=moene.indiv.nluug.nl) by laptop.moene.indiv.nluug.nl with esmtp (Exim 3.12 #1 (Debian)) id 15HW87-0000Az-00; Tue, 03 Jul 2001 21:46:39 +0200 Message-ID: <3B42211F.5E7E2636@moene.indiv.nluug.nl> Date: Tue, 03 Jul 2001 21:46:39 +0200 From: Toon Moene Organization: Moene Computational Physics, Maartensdijk, The Netherlands X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: Zack Weinberg CC: gcc-patches@gcc.gnu.org Subject: Re: libf2c: remove unnecessary variables from FLAGS_TO_PASS References: <20010702153009.J12723@stanford.edu> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Zack Weinberg wrote: > Patch appended. Bootstrapping on i686-linux now. Assuming this worked the following is > * Makefile.in: Take PICFLAG and RUNTESTFLAGS out of FLAGS_TO_PASS. OK - I don't know why they were there either. Someone will scream if it breaks their favorite setup. Thanks ! -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction) From gcc-patches-return-37984-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 20:32:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1838 invoked by alias); 3 Jul 2001 20:32:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1798 invoked from network); 3 Jul 2001 20:32:28 -0000 Received: from unknown (HELO laptop.moene.indiv.nluug.nl) (195.109.255.217) by sourceware.cygnus.com with SMTP; 3 Jul 2001 20:32:28 -0000 Received: from local ([127.0.0.1] helo=moene.indiv.nluug.nl) by laptop.moene.indiv.nluug.nl with esmtp (Exim 3.12 #1 (Debian)) id 15HVwC-0000As-00; Tue, 03 Jul 2001 21:34:20 +0200 Message-ID: <3B421E3C.D3ABCBBD@moene.indiv.nluug.nl> Date: Tue, 03 Jul 2001 21:34:20 +0200 From: Toon Moene Organization: Moene Computational Physics, Maartensdijk, The Netherlands X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: "Joseph S. Myers" CC: gcc-patches@gcc.gnu.org Subject: Re: Patch to add common doc files gpl.texi, funding.texi, in doc/includedirectory References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit "Joseph S. Myers" wrote: > The Look and Feel section is removed from the G77 manual since the > corresponding section it refers to was removed from the main GCC > manual in a gcc2 merge some time ago; Funding Free Software is added > to the invariant sections of the G77 manual for consistency with the > GCC manual. Thanks - for a long time I've wondered what to do with the Look-and-Feel section. This seems the correct reason to remove it. > 2001-07-03 Joseph S. Myers > > * g77.texi: Use gpl.texi and funding.texi. Remove Look and Feel > section. Add Funding Free Software to invariant sections. > * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Update > dependencies and use doc/include in search path. OK. Thanks a lot ! -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction) From gcc-patches-return-37985-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 21:24:49 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32485 invoked by alias); 3 Jul 2001 21:24:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32437 invoked from network); 3 Jul 2001 21:24:47 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 3 Jul 2001 21:24:47 -0000 Received: from bolero.cs.tu-berlin.de (doko@bolero.cs.tu-berlin.de [130.149.19.1]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id XAA08129; Tue, 3 Jul 2001 23:18:59 +0200 (MET DST) Received: (from doko@localhost) by bolero.cs.tu-berlin.de (8.10.2+Sun/8.9.3) id f63LIxs14765; Tue, 3 Jul 2001 23:18:59 +0200 (MEST) From: Matthias Klose MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15170.14018.503061.124372@gargle.gargle.HOWL> Date: Tue, 3 Jul 2001 23:18:58 +0200 To: gcc-patches@gcc.gnu.org, java@gcc.gnu.org Cc: "Joseph S. Myers" , Stephane Carrez Subject: [3.0] RFC: generate java man pages from texi sources In-Reply-To: <15168.58340.525902.202263@gargle.gargle.HOWL> References: <15168.58340.525902.202263@gargle.gargle.HOWL> X-Mailer: VM 6.89 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid Matthias Klose writes: > bootstrap currently running. verified that the generated gcc man pages > are the same as with the old texi2pod.pl. bootstrap and install sucessful on i386-linux. patch applies to mainline as well (20010702). I'd like to have feedback where gij, jv-convert and fastjar should be documented. From gcc-patches-return-37986-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 22:15:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25892 invoked by alias); 3 Jul 2001 22:15:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25779 invoked from network); 3 Jul 2001 22:14:45 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 3 Jul 2001 22:14:45 -0000 Received: from hg.cs.mu.oz.au (root@hg.cs.mu.OZ.AU [128.250.25.19]) by mumnunah.cs.mu.OZ.AU with ESMTP id IAA17117; Wed, 4 Jul 2001 08:14:03 +1000 (EST) Received: (from fjh@localhost) by hg.cs.mu.oz.au (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id IAA18401; Wed, 4 Jul 2001 08:14:02 +1000 Date: Wed, 4 Jul 2001 08:14:02 +1000 From: Fergus Henderson To: Mark Mitchell Cc: Ziemowit Laski , "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 Message-ID: <20010704081402.A28432@hg.cs.mu.oz.au> References: <200106291910.MAA15591@scv3.apple.com> <16950000.994010269@warlock.codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre3i In-Reply-To: <16950000.994010269@warlock.codesourcery.com> On 01-Jul-2001, Mark Mitchell wrote: > > --On Friday, June 29, 2001 12:10:22 PM -0700 Ziemowit Laski > wrote: > > > Ok, here is a new, "leaner and meaner" version of the Pascal string patch > > that I submitted on June 15. Per Zack Weinberg's suggestion, I removed > > all modifications in cpplib sources, and moved \p handling to > > lex_string(). Also, I've added a blurb in extend.texi describing the > > usage of Pascal literals. > > I am not in favor on a technical basis. Too much complication for too > little win. For what it is worth, I'm in favour of this one. There are some real benefits, and the complication seems to me to be relatively small, so I think it is worth it. I don't have authority to approve it, though. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-37987-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 22:44:31 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9303 invoked by alias); 3 Jul 2001 22:44:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9263 invoked from network); 3 Jul 2001 22:44:29 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 3 Jul 2001 22:44:29 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id AAA13020; Wed, 4 Jul 2001 00:44:23 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f63MiMt25542; Wed, 4 Jul 2001 00:44:22 +0200 (MEST) From: Rainer Orth Message-ID: <15170.19141.96232.618572@xayide.TechFak.Uni-Bielefeld.DE> Date: Wed, 4 Jul 2001 00:44:21 +0200 (MEST) To: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: 3.0.1 PATCH: NUL-terminate jvgenmain's mangled_classname X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII I'm currently investigation the state of GCC 3.0's libjava on IRIX 6.2 (both N32 and N64 ABIs) and IRIX 5.3 (really mips-sgi-irix5.3 on IRIX 6.2, i.e. O32 ABI), and noticed that this patch http://gcc.gnu.org/ml/gcc-patches/2001-03/msg01932.html is needed on the branch as well. Ok to install? Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-37988-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 22:49:51 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15506 invoked by alias); 3 Jul 2001 22:49:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15447 invoked from network); 3 Jul 2001 22:49:48 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 3 Jul 2001 22:49:48 -0000 Received: from apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id PAA16720 for ; Tue, 3 Jul 2001 15:49:47 -0700 (PDT) Received: from scv2.apple.com (scv2.apple.com) by apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Tue, 3 Jul 2001 15:49:44 -0700 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id f63Mnhw28468 for ; Tue, 3 Jul 2001 15:49:43 -0700 (PDT) Message-Id: <200107032249.f63Mnhw28468@scv2.apple.com> Date: Tue, 3 Jul 2001 15:49:43 -0700 Content-Type: multipart/alternative; boundary=Apple-Mail-1150615457-1 Mime-Version: 1.0 (Apple Message framework v388) From: Ziemowit Laski To: gcc-patches@gcc.gnu.org X-Mailer: Apple Mail (2.388) Subject: PATCH: Pascal Strings -- TAKE FOUR --Apple-Mail-1150615457-1 Content-Transfer-Encoding: 7bit Content-Type: text/plain; format=flowed; charset=us-ascii Ok, I've incorporated the gist of the discussion betw. Fergus Henderson and Jakub Jelinek (and would like to thank the former for his vote of confidence -:) ). As Stan has correctly pointed out, the time these Pascal strings have taken is disproportional to their overall "non-complexity." Personally, I tend to view this as a learning experience, though I must admit even I have trouble justifying more hacking on this. So, please, someone from the top of the MAINTAINERS file :), please approve this. --Zem 2001-07-03 Ziemowit Laski * gcc/c-common.c: Support for Pascal string concatenation (combine_string) * gcc/c-common.h: Add CTI_PASCAL_STRING_TYPE, pascal_string_type_node * gcc/c-lex.c: Creation of Pascal string literals (lex_string) * gcc/c-typeck.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/flags.h: Add 'flag_pascal_strings' extern decl * gcc/toplev.c: Add '-fpascal-strings' command-line option * gcc/cp/decl2.c: Add '-fpascal-strings' command-line option * gcc/cp/typeck2.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/doc/extend.texi: Add description of '-fpascal-strings' * gcc/doc/invoke.texi: Add description of '-fpascal-strings' * gcc/testsuite/g++.dg/pascal-strings-1.C: New C++ test case * gcc/testsuite/g++.dg/pascal-strings-2.C: New C++ test case * gcc/testsuite/gcc.dg/pascal-strings-1.c: New C test case * gcc/testsuite/gcc.dg/pascal-strings-2.c: New C test case -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 --Apple-Mail-1150615457-1 Content-Type: multipart/mixed; boundary=Apple-Mail-819598790-2 --Apple-Mail-819598790-2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii; format=flowed Ok, I've incorporated the gist of the discussion betw. Fergus Henderson and Jakub Jelinek (and would like to thank the former for his vote of confidence -:) ). As Stan has correctly pointed out, the time these Pascal strings have taken is disproportional to their overall "non-complexity." Personally, I tend to view this as a learning experience, though I must admit even I have trouble justifying more hacking on this. So, please, someone from the top of the MAINTAINERS file :), please approve this. --Zem 2001-07-03 Ziemowit Laski * gcc/c-common.c: Support for Pascal string concatenation (combine_string) * gcc/c-common.h: Add CTI_PASCAL_STRING_TYPE, pascal_string_type_node * gcc/c-lex.c: Creation of Pascal string literals (lex_string) * gcc/c-typeck.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/flags.h: Add 'flag_pascal_strings' extern decl * gcc/toplev.c: Add '-fpascal-strings' command-line option * gcc/cp/decl2.c: Add '-fpascal-strings' command-line option * gcc/cp/typeck2.c: Distinguish Pascal strings from wide strings (digest_init) * gcc/doc/extend.texi: Add description of '-fpascal-strings' * gcc/doc/invoke.texi: Add description of '-fpascal-strings' * gcc/testsuite/g++.dg/pascal-strings-1.C: New C++ test case * gcc/testsuite/g++.dg/pascal-strings-2.C: New C++ test case * gcc/testsuite/gcc.dg/pascal-strings-1.c: New C test case * gcc/testsuite/gcc.dg/pascal-strings-2.c: New C test case --Apple-Mail-819598790-2 Content-Disposition: attachment; filename="fsfgcc3_pascal_strings.diff" Content-Type: application/octet-stream; name="fsfgcc3_pascal_strings.diff"; x-unix-mode=0664 Content-Transfer-Encoding: quoted-printable Index:=20gcc/c-common.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/c-common.c,v=0Aretrieving=20revision=201.239=0Adiff=20= -c=20-3=20-p=20-r1.239=20c-common.c=0A***=20c-common.c=092001/07/01=20= 23:23:28=091.239=0A---=20c-common.c=092001/07/03=2022:27:58=0A= ***************=20cpp_reader=20*parse_in;=09=09/*=20Declared=20in=20c-=0A= ***=20138,143=20****=0A---=20138,148=20----=0A=20=20=0A=20=20=09tree=20= char_array_type_node;=0A=20=20=0A+=20=20=20=20Type=20`unsigned=20= char[SOMENUMBER]'.=0A+=20=20=20=20Used=20for=20pascal-type=20strings=20= ("\pstring").=0A+=20=0A+=20=09tree=20pascal_string_type_node;=0A+=20=0A=20= =20=20=20=20Type=20`int[SOMENUMBER]'=20or=20something=20like=20it.=0A=20=20= =20=20=20Used=20when=20an=20array=20of=20int=20needed=20and=20the=20size=20= is=20irrelevant.=0A=20=20=0A***************=20int=20flag_short_double;=0A= ***=20189,194=20****=0A---=20194,204=20----=0A=20=20=0A=20=20int=20= flag_short_wchar;=0A=20=20=0A+=20/*=20Nonzero=20means=20initial=20"\p"=20= in=20string=20becomes=20a=20length=20byte=20and=0A+=20=20=20=20string=20= type=20becomes=20_unsigned_=20char*=20.=20=20*/=0A+=20=0A+=20int=20= flag_pascal_strings;=0A+=20=0A=20=20/*=20Nonzero=20means=20warn=20about=20= possible=20violations=20of=20sequence=20point=20rules.=20=20*/=0A=20=20=0A= =20=20int=20warn_sequence_point;=0A***************=20fname_decl=20(rid,=20= id)=0A***=20511,516=20****=0A---=20521,538=20----=0A=20=20=20=20return=20= decl;=0A=20=20}=0A=20=20=0A+=20/*=20Given=20a=20wide=20flag=20and=20a=20= pascal_string=20flag,=0A+=20=20=20=20=20return=20the=20node=20indicating=20= the=20type=20for=20combine_strings=0A+=20=20=20=20=20to=20assign=20to=20= the=20resulting=20string.=20*/=0A+=20=0A+=20static=20tree=0A+=20= choose_string_type=20(wide_flag,=20ps_flag)=0A+=20=20=20=20=20=20int=20= wide_flag,=20ps_flag;=0A+=20{=0A+=20=20=20/*=20Pascal=20strings=20are=20= not=20supported=20in=20wide=20mode=20*/=0A+=20=20=20return=20(wide_flag=20= ?=20wchar_type_node=20:=20(ps_flag=20?=20unsigned_char_type_node=20:=20= char_type_node));=0A+=20}=0A+=20=0A=20=20/*=20Given=20a=20chain=20of=20= STRING_CST=20nodes,=0A=20=20=20=20=20concatenate=20them=20into=20one=20= STRING_CST=0A=20=20=20=20=20and=20give=20it=20a=20suitable=20= array-of-chars=20data=20type.=20=20*/=0A***************=20= combine_strings=20(strings)=0A***=20526,532=20****=0A---=20548,562=20= ----=0A=20=20=20=20int=20wchar_bytes=20=3D=20TYPE_PRECISION=20= (wchar_type_node)=20/=20BITS_PER_UNIT;=0A=20=20=20=20int=20nchars;=0A=20=20= =20=20const=20int=20nchars_max=20=3D=20flag_isoc99=20?=204095=20:=20509;=0A= +=20=20=20int=20is_pascal_string=20=3D=200;=0A=20=20=0A+=20=20=20/*=20If=20= first=20string=20is=20a=20pascal-string,=20that=20"wins".=20*/=0A+=20=20=20= if=20(TREE_TYPE=20(strings)=20=3D=3D=20pascal_string_type_node)=0A+=20=20= =20=20=20{=0A+=20=20=20=20=20=20=20is_pascal_string=20=3D=201;=0A+=20=20=20= =20=20=20=20length=20=3D=202;=20=20=20/*=20account=20for=20the=20\p=20= length=20byte,=20and=20the=20NUL.=20*/=0A+=20=20=20=20=20}=0A+=20=0A=20=20= =20=20if=20(TREE_CHAIN=20(strings))=0A=20=20=20=20=20=20{=0A=20=20=20=20=20= =20=20=20/*=20More=20than=20one=20in=20the=20chain,=20so=20concatenate.=20= =20*/=0A***************=20combine_strings=20(strings)=0A***=20542,547=20= ****=0A---=20572,587=20----=0A=20=20=09=20=20=20=20=20=20wide_length=20= +=3D=20(TREE_STRING_LENGTH=20(t)=20-=20wchar_bytes);=0A=20=20=09=20=20=20= =20=20=20wide_flag=20=3D=201;=0A=20=20=09=20=20=20=20}=0A+=20=09=20=20= else=20if=20(TREE_TYPE=20(t)=20=3D=3D=20pascal_string_type_node)=0A+=20=09= =20=20=20=20{=0A+=20=09=20=20=20=20=20=20/*=20This=20one=20is=20a=20= pascal-string=20--=20don't=20count=20its=0A+=20=09=09=20length=20byte.=20= =20*/=0A+=20=09=20=20=20=20=20=20length=20+=3D=20(TREE_STRING_LENGTH=20= (t)=20-=202);=0A+=20=0A+=20=09=20=20=20=20=20=20/*=20If=20the=20first=20= string=20was=20*not*=20a=20Pascal=20string,=20emit=20an=20error.=20*/=0A= +=20=09=20=20=20=20=20=20if=20(t=20!=3D=20strings=20&&=20= !is_pascal_string)=0A+=20=09=20=20=20=20=20=20=20=20error=20("Pascal=20= string-length=20escape=20(\\p)=20not=20allowed=20in=20concatenation");=0A= +=20=09=20=20=20=20}=0A=20=20=09=20=20else=0A=20=20=09=20=20=20=20length=20= +=3D=20(TREE_STRING_LENGTH=20(t)=20-=201);=0A=20=20=09}=0A= ***************=20combine_strings=20(strings)=0A***=20558,571=20****=0A=20= =20=09=20for=20any=20individual=20strings=20that=20are=20not=20wide.=20=20= */=0A=20=20=0A=20=20=20=20=20=20=20=20q=20=3D=20p;=0A=20=20=20=20=20=20=20= =20for=20(t=20=3D=20strings;=20t;=20t=20=3D=20TREE_CHAIN=20(t))=0A=20=20=09= {=0A=20=20=09=20=20int=20len=20=3D=20(TREE_STRING_LENGTH=20(t)=0A=20=20=09= =09=20=20=20=20=20-=20((TREE_TYPE=20(t)=20=3D=3D=20= wchar_array_type_node)=0A=20=20=09=09=09?=20wchar_bytes=20:=201));=0A=20=20= =09=20=20if=20((TREE_TYPE=20(t)=20=3D=3D=20wchar_array_type_node)=20=3D=3D= =20wide_flag)=0A=20=20=09=20=20=20=20{=0A!=20=09=20=20=20=20=20=20memcpy=20= (q,=20TREE_STRING_POINTER=20(t),=20len);=0A=20=20=09=20=20=20=20=20=20q=20= +=3D=20len;=0A=20=20=09=20=20=20=20}=0A=20=20=09=20=20else=0A---=20= 598,617=20----=0A=20=20=09=20for=20any=20individual=20strings=20that=20= are=20not=20wide.=20=20*/=0A=20=20=0A=20=20=20=20=20=20=20=20q=20=3D=20= p;=0A+=20=20=20=20=20=20=20if=20(is_pascal_string)=0A+=20=09++q;=0A=20=20= =20=20=20=20=20=20for=20(t=20=3D=20strings;=20t;=20t=20=3D=20TREE_CHAIN=20= (t))=0A=20=20=09{=0A=20=20=09=20=20int=20len=20=3D=20(TREE_STRING_LENGTH=20= (t)=0A=20=20=09=09=20=20=20=20=20-=20((TREE_TYPE=20(t)=20=3D=3D=20= wchar_array_type_node)=0A=20=20=09=09=09?=20wchar_bytes=20:=201));=0A+=20= =09=20=20char=20*string_ptr=20=3D=20TREE_STRING_POINTER=20(t);=0A+=20=09=20= =20/*=20Skip=20the=20length=20byte=20in=20Pascal=20strings.=20*/=0A+=20=09= =20=20if=20(TREE_TYPE=20(t)=20=3D=3D=20pascal_string_type_node)=0A+=20=09= =20=20=20=20++string_ptr,=20--len;=0A=20=20=09=20=20if=20((TREE_TYPE=20= (t)=20=3D=3D=20wchar_array_type_node)=20=3D=3D=20wide_flag)=0A=20=20=09=20= =20=20=20{=0A!=20=09=20=20=20=20=20=20memcpy=20(q,=20string_ptr,=20len);=0A= =20=20=09=20=20=20=20=20=20q=20+=3D=20len;=0A=20=20=09=20=20=20=20}=0A=20= =20=09=20=20else=0A***************=20combine_strings=20(strings)=0A***=20= 575,588=20****=0A=20=20=09=09{=0A=20=20=09=09=20=20if=20= (BYTES_BIG_ENDIAN)=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20= =20for=20(j=3D0;=20j<(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)-1;=20j++)=0A=20= =20=09=09=09*q++=20=3D=200;=0A!=20=09=09=20=20=20=20=20=20*q++=20=3D=20= TREE_STRING_POINTER=20(t)[i];=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09=20= =20else=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20=20*q++=20= =3D=20TREE_STRING_POINTER=20(t)[i];=0A!=20=09=09=20=20=20=20=20=20for=20= (j=3D0;=20j<(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)-1;=20j++)=0A=20=20=09=09= =09*q++=20=3D=200;=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09}=0A---=20= 621,634=20----=0A=20=20=09=09{=0A=20=20=09=09=20=20if=20= (BYTES_BIG_ENDIAN)=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20= =20for=20(j=20=3D=200;=20j=20<=20(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)=20= -=201;=20j++)=0A=20=20=09=09=09*q++=20=3D=200;=0A!=20=09=09=20=20=20=20=20= =20*q++=20=3D=20string_ptr[i];=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09= =20=20else=0A=20=20=09=09=20=20=20=20{=0A!=20=09=09=20=20=20=20=20=20= *q++=20=3D=20string_ptr[i];=0A!=20=09=09=20=20=20=20=20=20for=20(j=20=3D=20= 0;=20j=20<=20(WCHAR_TYPE_SIZE=20/=20BITS_PER_UNIT)=20-=201;=20j++)=0A=20=20= =09=09=09*q++=20=3D=200;=0A=20=20=09=09=20=20=20=20}=0A=20=20=09=09}=0A= ***************=20combine_strings=20(strings)=0A***=20597,602=20****=0A= ---=20643,657=20----=0A=20=20=20=20=20=20=20=20else=0A=20=20=09*q=20=3D=20= 0;=0A=20=20=0A+=20=20=20=20=20=20=20if=20(is_pascal_string)=0A+=20=09{=0A= +=20=09=20=20*p=20=3D=20length=20-=202;=0A+=20=09=20=20if=20(length=20-=20= 2=20>=20255)=0A+=20=09=20=20=20=20{=0A+=20=09=20=20=20=20=20=20error=20= ("Pascal=20string=20too=20long");=0A+=20=09=20=20=20=20}=0A+=20=09}=0A+=20= =0A=20=20=20=20=20=20=20=20value=20=3D=20build_string=20(length,=20p);=0A= =20=20=20=20=20=20}=0A=20=20=20=20else=0A***************=20= combine_strings=20(strings)=0A***=20622,628=20****=0A=20=20=20=20=20=20=20= =20&&=20(!=20flag_traditional=20=20&&=20!=20flag_writable_strings))=0A=20= =20=20=20=20=20{=0A=20=20=20=20=20=20=20=20tree=20elements=0A!=20=09=3D=20= build_type_variant=20(wide_flag=20?=20wchar_type_node=20:=20= char_type_node,=0A=20=20=09=09=09=20=20=20=20=20=201,=200);=0A=20=20=20=20= =20=20=20=20TREE_TYPE=20(value)=0A=20=20=09=3D=20build_array_type=20= (elements,=0A---=20677,683=20----=0A=20=20=20=20=20=20=20=20&&=20(!=20= flag_traditional=20=20&&=20!=20flag_writable_strings))=0A=20=20=20=20=20=20= {=0A=20=20=20=20=20=20=20=20tree=20elements=0A!=20=09=3D=20= build_type_variant=20(choose_string_type=20(wide_flag,=20= is_pascal_string),=0A=20=20=09=09=09=20=20=20=20=20=201,=200);=0A=20=20=20= =20=20=20=20=20TREE_TYPE=20(value)=0A=20=20=09=3D=20build_array_type=20= (elements,=0A***************=20combine_strings=20(strings)=0A***=20= 630,636=20****=0A=20=20=20=20=20=20}=0A=20=20=20=20else=0A=20=20=20=20=20= =20TREE_TYPE=20(value)=0A!=20=20=20=20=20=20=20=3D=20build_array_type=20= (wide_flag=20?=20wchar_type_node=20:=20char_type_node,=0A=20=20=09=09=09=20= =20build_index_type=20(build_int_2=20(nchars=20-=201,=200)));=0A=20=20=0A= =20=20=20=20TREE_CONSTANT=20(value)=20=3D=201;=0A---=20685,691=20----=0A=20= =20=20=20=20=20}=0A=20=20=20=20else=0A=20=20=20=20=20=20TREE_TYPE=20= (value)=0A!=20=20=20=20=20=20=20=3D=20build_array_type=20= (choose_string_type=20(wide_flag,=20is_pascal_string),=0A=20=20=09=09=09=20= =20build_index_type=20(build_int_2=20(nchars=20-=201,=200)));=0A=20=20=0A= =20=20=20=20TREE_CONSTANT=20(value)=20=3D=201;=0A***************=20= c_common_nodes_and_builtins=20()=0A***=203005,3010=20****=0A---=20= 3060,3068=20----=0A=20=20=20=20=20=20=20array=20type.=20=20*/=0A=20=20=20= =20char_array_type_node=0A=20=20=20=20=20=20=3D=20build_array_type=20= (char_type_node,=20array_domain_type);=0A+=20=20=20/*=20Pascal-type=20= strings=20("\pstuff")=20must=20be=20unsigned=20char*=20*/=0A+=20=20=20= pascal_string_type_node=0A+=20=20=20=20=20=3D=20build_array_type=20= (unsigned_char_type_node,=20array_domain_type);=0A=20=20=0A=20=20=20=20= /*=20Likewise=20for=20arrays=20of=20ints.=20=20*/=0A=20=20=20=20= int_array_type_node=0AIndex:=20gcc/c-common.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/c-common.h,v=0Aretrieving=20revision=201.77=0Adiff=20-c=20= -3=20-p=20-r1.77=20c-common.h=0A***=20c-common.h=092001/07/02=2012:16:54=09= 1.77=0A---=20c-common.h=092001/07/03=2022:27:59=0A***************=20enum=20= c_tree_index=0A***=20147,152=20****=0A---=20147,153=20----=0A=20=20=20=20= =20=20CTI_WIDEST_UINT_LIT_TYPE,=0A=20=20=0A=20=20=20=20=20=20= CTI_CHAR_ARRAY_TYPE,=0A+=20=20=20=20=20CTI_PASCAL_STRING_TYPE,=20=20=20=20= /*=20for=20Pascal=20strings=20*/=0A=20=20=20=20=20=20= CTI_WCHAR_ARRAY_TYPE,=0A=20=20=20=20=20=20CTI_INT_ARRAY_TYPE,=0A=20=20=20= =20=20=20CTI_STRING_TYPE,=0A***************=20struct=20= c_common_identifier=0A***=20210,215=20****=0A---=20211,217=20----=0A=20=20= #define=20c_bool_false_node=09=09c_global_trees[CTI_C_BOOL_FALSE]=0A=20=20= =0A=20=20#define=20char_array_type_node=09=09= c_global_trees[CTI_CHAR_ARRAY_TYPE]=0A+=20#define=20= pascal_string_type_node=20=09c_global_trees[CTI_PASCAL_STRING_TYPE]=0A=20= =20#define=20wchar_array_type_node=09=09= c_global_trees[CTI_WCHAR_ARRAY_TYPE]=0A=20=20#define=20= int_array_type_node=09=09c_global_trees[CTI_INT_ARRAY_TYPE]=0A=20=20= #define=20string_type_node=09=09c_global_trees[CTI_STRING_TYPE]=0AIndex:=20= gcc/c-lex.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/c-lex.c,v=0Aretrieving=20revision=201.141=0Adiff=20-c=20= -3=20-p=20-r1.141=20c-lex.c=0A***=20c-lex.c=092001/05/23=2019:05:37=09= 1.141=0A---=20c-lex.c=092001/07/03=2022:27:59=0A***************=20= lex_string=20(str,=20len,=20wide)=0A***=201293,1298=20****=0A---=20= 1293,1299=20----=0A=20=20=20=20unsigned=20int=20c;=0A=20=20=20=20= unsigned=20width=20=3D=20wide=20?=20WCHAR_TYPE_SIZE=0A=20=20=09=09=09:=20= TYPE_PRECISION=20(char_type_node);=0A+=20=20=20int=20is_pascal_string=20= =3D=200,=20is_pascal_escape=20=3D=200;=0A=20=20=0A=20=20#ifdef=20= MULTIBYTE_CHARS=0A=20=20=20=20/*=20Reset=20multibyte=20conversion=20= state.=20=20*/=0A***************=20lex_string=20(str,=20len,=20wide)=0A= ***=201321,1326=20****=0A---=201322,1328=20----=0A=20=20=20=20=20=20=20=20= c=20=3D=20*p++;=0A=20=20#endif=0A=20=20=0A+=20=20=20=20=20=20=20= is_pascal_escape=20=3D=200;=0A=20=20=20=20=20=20=20=20if=20(c=20=3D=3D=20= '\\'=20&&=20!ignore_escape_flag)=0A=20=20=09{=0A=20=20=09=20=20unsigned=20= int=20mask;=0A***************=20lex_string=20(str,=20len,=20wide)=0A***=20= 1329,1339=20****=0A=20=20=09=20=20=20=20mask=20=3D=20((unsigned=20int)=20= 1=20<<=20width)=20-=201;=0A=20=20=09=20=20else=0A=20=20=09=20=20=20=20= mask=20=3D=20~0;=0A!=20=09=20=20c=20=3D=20cpp_parse_escape=20(parse_in,=20= (const=20unsigned=20char=20**)=20&p,=0A!=20=09=09=09=09(const=20unsigned=20= char=20*)=20limit,=0A!=20=09=09=09=09mask,=20flag_traditional);=0A=20=20=09= }=0A=20=20=09=0A=20=20=20=20=20=20=20=20/*=20Add=20this=20single=20= character=20into=20the=20buffer=20either=20as=20a=20wchar_t=0A=20=20=09=20= or=20as=20a=20single=20byte.=20=20*/=0A=20=20=20=20=20=20=20=20if=20= (wide)=0A---=201331,1364=20----=0A=20=20=09=20=20=20=20mask=20=3D=20= ((unsigned=20int)=201=20<<=20width)=20-=201;=0A=20=20=09=20=20else=0A=20=20= =09=20=20=20=20mask=20=3D=20~0;=0A!=20=0A!=20=09=20=20= if(flag_pascal_strings=20&&=20*p=20=3D=3D=20'p')=0A!=20=09=20=20=20=20{=0A= !=20=09=20=20=20=20=20=20is_pascal_escape=20=3D=201;=0A!=20=09=20=20=20=20= =20=20p++;=0A!=20=09=20=20=20=20}=0A!=20=09=20=20else=0A!=20=09=20=20=20=20= c=20=3D=20cpp_parse_escape=20(parse_in,=20(const=20unsigned=20char=20**)=20= &p,=0A!=20=09=09=09=09=20=20(const=20unsigned=20char=20*)=20limit,=0A!=20= =09=09=09=09=20=20mask,=20flag_traditional);=0A=20=20=09}=0A=20=20=09=0A= +=20=0A+=20=20=20=20=20=20=20/*=20Pascal=20string-length=20escape=20(\p)=20= may=20appear=20only=20as=20first=20char=20of=20a=20string=0A+=20=09=20= literal,=20and=20never=20in=20wide=20strings.=20*/=0A+=20=20=20=20=20=20=20= if=20(is_pascal_escape)=0A+=20=09{=0A+=20=09=20=20if=20(wide=20||=20q=20= !=3D=20buf)=0A+=20=09=20=20=20=20{=0A+=20=09=20=20=20=20=20=20error=20= (wide?=0A+=20=09=09=20=20=20=20=20=20=20"Pascal=20string-length=20escape=20= (\\p)=20not=20allowed=20in=20wide=20string":=0A+=20=09=09=20=20=20=20=20=20= =20"Pascal=20string-length=20escape=20(\\p)=20must=20be=20at=20beginning=20= of=20string");=0A+=20=09=20=20=20=20=20=20c=20=3D=20'p';=0A+=20=09=20=20=20= =20}=0A+=20=09=20=20else=0A+=20=09=20=20=20=20is_pascal_string=20=3D=20= 1;=0A+=20=09}=0A+=20=0A=20=20=20=20=20=20=20=20/*=20Add=20this=20single=20= character=20into=20the=20buffer=20either=20as=20a=20wchar_t=0A=20=20=09=20= or=20as=20a=20single=20byte.=20=20*/=0A=20=20=20=20=20=20=20=20if=20= (wide)=0A***************=20lex_string=20(str,=20len,=20wide)=0A***=20= 1362,1367=20****=0A---=201387,1403=20----=0A=20=20=09}=0A=20=20=20=20=20=20= }=0A=20=20=0A+=20=20=20/*=20Truncate=20pascal=20string=20to=20255=20= chars=20+=20length=20byte=20*/=0A+=20=20=20if=20(is_pascal_string)=0A+=20= =20=20=20=20{=0A+=20=20=20=20=20=20=20if=20(q=20-=20buf=20>=20256)=0A+=20= =09{=0A+=20=09=20=20error=20("Pascal=20string=20too=20long");=0A+=20=09=20= =20q=20=3D=20buf=20+=20256;=0A+=20=09}=0A+=20=20=20=20=20=20=20*buf=20=3D=20= q=20-=20buf=20-=201;=20=20=20/*=20initialize=20length=20byte=20*/=0A+=20=20= =20=20=20}=0A+=20=0A=20=20=20=20/*=20Terminate=20the=20string=20value,=20= either=20with=20a=20single=20byte=20zero=0A=20=20=20=20=20=20=20or=20= with=20a=20wide=20zero.=20=20*/=0A=20=20=0A***************=20lex_string=20= (str,=20len,=20wide)=0A***=201379,1384=20****=0A---=201415,1422=20----=0A= =20=20=0A=20=20=20=20if=20(wide)=0A=20=20=20=20=20=20TREE_TYPE=20(value)=20= =3D=20wchar_array_type_node;=0A+=20=20=20else=20if=20(is_pascal_string)=0A= +=20=20=20=20=20TREE_TYPE=20(value)=20=3D=20pascal_string_type_node;=0A=20= =20=20=20else=0A=20=20=20=20=20=20TREE_TYPE=20(value)=20=3D=20= char_array_type_node;=0A=20=20=20=20return=20value;=0AIndex:=20= gcc/c-typeck.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/c-typeck.c,v=0Aretrieving=20revision=201.127=0Adiff=20= -c=20-3=20-p=20-r1.127=20c-typeck.c=0A***=20c-typeck.c=092001/06/29=20= 17:21:12=091.127=0A---=20c-typeck.c=092001/07/03=2022:28:00=0A= ***************=20digest_init=20(type,=20init,=20require_constan=0A***=20= 4711,4723=20****=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09=20=20=20=20=20=20=20= !=3D=20char_type_node)=0A=20=20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20= (typ1)=20=3D=3D=20TYPE_PRECISION=20(char_type_node))=0A=20=20=09=20=20=20= =20{=0A=20=20=09=20=20=20=20=20=20error_init=20("char-array=20= initialized=20from=20wide=20string");=0A=20=20=09=20=20=20=20=20=20= return=20error_mark_node;=0A=20=20=09=20=20=20=20}=0A!=20=09=20=20if=20= ((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09= =20=20=20=20=20=20=20=3D=3D=20char_type_node)=0A=20=20=09=20=20=20=20=20=20= &&=20TYPE_PRECISION=20(typ1)=20!=3D=20TYPE_PRECISION=20(char_type_node))=0A= =20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20error_init=20= ("int-array=20initialized=20from=20non-wide=20string");=0A---=20= 4711,4727=20----=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A=20=20=09=20=20=20=20=20=20=20= !=3D=20char_type_node)=0A+=20=09=20=20=20=20=20=20&&=20= (TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20(inside_init)))=0A+=20=09=20= =20=20=20=20=20=20!=3D=20unsigned_char_type_node)=0A=20=20=09=20=20=20=20= =20=20&&=20TYPE_PRECISION=20(typ1)=20=3D=3D=20TYPE_PRECISION=20= (char_type_node))=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20= error_init=20("char-array=20initialized=20from=20wide=20string");=0A=20=20= =09=20=20=20=20=20=20return=20error_mark_node;=0A=20=20=09=20=20=20=20}=0A= !=20=09=20=20if=20(((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20= (inside_init)))=0A=20=20=09=20=20=20=20=20=20=20=3D=3D=20char_type_node)=0A= +=20=09=20=20=20=20=20=20||=20(TYPE_MAIN_VARIANT=20(TREE_TYPE=20= (TREE_TYPE=20(inside_init)))=0A+=20=09=20=20=20=20=20=20=20=3D=3D=20= unsigned_char_type_node))=0A=20=20=09=20=20=20=20=20=20&&=20= TYPE_PRECISION=20(typ1)=20!=3D=20TYPE_PRECISION=20(char_type_node))=0A=20= =20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20error_init=20= ("int-array=20initialized=20from=20non-wide=20string");=0AIndex:=20= gcc/flags.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/flags.h,v=0Aretrieving=20revision=201.65=0Adiff=20-c=20= -3=20-p=20-r1.65=20flags.h=0A***=20flags.h=092001/05/27=2021:04:27=09= 1.65=0A---=20flags.h=092001/07/03=2022:28:00=0A***************=20extern=20= int=20flag_print_asm_name;=0A***=20215,220=20****=0A---=20215,225=20----=0A= =20=20=0A=20=20extern=20int=20flag_signed_char;=0A=20=20=0A+=20/*=20= Nonzero=20means=20initial=20"\p"=20in=20string=20becomes=20a=20length=20= byte=20and=0A+=20=20=20=20string=20type=20becomes=20_unsigned_=20char*=20= .=20=20*/=0A+=20=0A+=20extern=20int=20flag_pascal_strings;=0A+=20=0A=20=20= /*=20Nonzero=20means=20give=20an=20enum=20type=20only=20as=20many=20= bytes=20as=20it=20needs.=20=20*/=0A=20=20=0A=20=20extern=20int=20= flag_short_enums;=0AIndex:=20gcc/toplev.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/toplev.c,v=0Aretrieving=20revision=201.477=0Adiff=20-c=20= -3=20-p=20-r1.477=20toplev.c=0A***=20toplev.c=092001/07/02=2020:21:14=09= 1.477=0A---=20toplev.c=092001/07/03=2022:28:01=0A***************=20= lang_independent_options=20f_options[]=20=3D=0A***=201170,1175=20****=0A= ---=201170,1177=20----=0A=20=20=20=20=20N_("Report=20on=20permanent=20= memory=20allocation=20at=20end=20of=20run")=20},=0A=20=20=20=20{=20= "trapv",=20&flag_trapv,=201,=0A=20=20=20=20=20N_("Trap=20for=20signed=20= overflow=20in=20addition=20/=20subtraction=20/=20multiplication.")=20},=0A= +=20=20=20{=20"pascal-strings",=20&flag_pascal_strings,=201,=0A+=20=20=20= =20N_("Allow=20Pascal-style=20string=20literals.")=20},=0A=20=20};=0A=20=20= =0A=20=20/*=20Table=20of=20language-specific=20options.=20=20*/=0AIndex:=20= gcc/cp/decl2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/cp/decl2.c,v=0Aretrieving=20revision=201.472=0Adiff=20= -c=20-3=20-p=20-r1.472=20decl2.c=0A***=20decl2.c=092001/06/27=2006:55:29=09= 1.472=0A---=20decl2.c=092001/07/03=2022:28:02=0A***************=20= lang_f_options[]=20=3D=0A***=20445,450=20****=0A---=20445,451=20----=0A=20= =20=20=20{"short-wchar",=20&flag_short_wchar,=201},=0A=20=20=20=20= {"asm",=20&flag_no_asm,=200},=0A=20=20=20=20{"builtin",=20= &flag_no_builtin,=200},=0A+=20=20=20{"pascal-strings",=20= &flag_pascal_strings,=201},=0A=20=20=0A=20=20=20=20/*=20C++-only=20= options.=20=20*/=0A=20=20=20=20{"access-control",=20= &flag_access_control,=201},=0AIndex:=20gcc/cp/typeck2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/cp/typeck2.c,v=0Aretrieving=20revision=201.102=0Adiff=20= -c=20-3=20-p=20-r1.102=20typeck2.c=0A***=20typeck2.c=092001/06/10=20= 13:48:04=091.102=0A---=20typeck2.c=092001/07/03=2022:28:02=0A= ***************=20digest_init=20(type,=20init,=20tail)=0A***=20519,531=20= ****=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20(TREE_TYPE=20= (TREE_TYPE=20(string)))=0A=20=20=09=20=20=20=20=20=20=20!=3D=20= char_type_node)=0A=20=20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20= (typ1)=20=3D=3D=20BITS_PER_UNIT)=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20= =20=20=20=20error=20("char-array=20initialized=20from=20wide=20string");=0A= =20=20=09=20=20=20=20=20=20return=20error_mark_node;=0A=20=20=09=20=20=20= =20}=0A!=20=09=20=20if=20((TYPE_MAIN_VARIANT=20(TREE_TYPE=20(TREE_TYPE=20= (string)))=0A=20=20=09=20=20=20=20=20=20=20=3D=3D=20char_type_node)=0A=20= =20=09=20=20=20=20=20=20&&=20TYPE_PRECISION=20(typ1)=20!=3D=20= BITS_PER_UNIT)=0A=20=20=09=20=20=20=20{=0A=20=20=09=20=20=20=20=20=20= error=20("int-array=20initialized=20from=20non-wide=20string");=0A---=20= 519,535=20----=0A=20=20=0A=20=20=09=20=20if=20((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20=20=20=20=20=20=20!=3D=20= char_type_node)=0A+=20=09=20=20=20=20=20=20&&=20(TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(string)))=0A+=20=09=20=20=20=20=20=20=20!=3D=20= unsigned_char_type_node)=20=0A=20=20=09=20=20=20=20=20=20&&=20= TYPE_PRECISION=20(typ1)=20=3D=3D=20BITS_PER_UNIT)=0A=20=20=09=20=20=20=20= {=0A=20=20=09=20=20=20=20=20=20error=20("char-array=20initialized=20from=20= wide=20string");=0A=20=20=09=20=20=20=20=20=20return=20error_mark_node;=0A= =20=20=09=20=20=20=20}=0A!=20=09=20=20if=20(((TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(string)))=0A=20=20=09=20=20=20=20=20=20=20=3D=3D= =20char_type_node)=0A+=20=09=20=20=20=20=20=20||=20(TYPE_MAIN_VARIANT=20= (TREE_TYPE=20(TREE_TYPE=20(string)))=0A+=20=09=20=20=20=20=20=20=20=3D=3D=20= unsigned_char_type_node))=09=20=20=20=20=20=20=20=0A=20=20=09=20=20=20=20= =20=20&&=20TYPE_PRECISION=20(typ1)=20!=3D=20BITS_PER_UNIT)=0A=20=20=09=20= =20=20=20{=0A=20=20=09=20=20=20=20=20=20error=20("int-array=20= initialized=20from=20non-wide=20string");=0AIndex:=20gcc/doc/extend.texi=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/doc/extend.texi,v=0Aretrieving=20revision=201.14=0Adiff=20= -c=20-3=20-p=20-r1.14=20extend.texi=0A***=20extend.texi=092001/07/03=20= 00:46:05=091.14=0A---=20extend.texi=092001/07/03=2022:28:03=0A= ***************=20extensions,=20accepted=20by=20GCC=20in=20C89=20mode=20=0A= ***=2059,64=20****=0A---=2059,66=20----=0A=20=20*=20C++=20Comments::=20=20= =20=20=20=20=20=20C++=20comments=20are=20recognized.=0A=20=20*=20Dollar=20= Signs::=20=20=20=20=20=20=20=20Dollar=20sign=20is=20allowed=20in=20= identifiers.=0A=20=20*=20Character=20Escapes::=20=20=20@samp{\e}=20= stands=20for=20the=20character=20@key{ESC}.=0A+=20*=20Pascal=20Strings::=20= =20=20=20=20=20Constructing=20string=20literals=20with=20a=20= Pascal-style=20=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20length=20byte.=0A=20=20*=20Variable=20= Attributes::=09Specifying=20attributes=20of=20variables.=0A=20=20*=20= Type=20Attributes::=09Specifying=20attributes=20of=20types.=0A=20=20*=20= Alignment::=20=20=20=20=20=20=20=20=20=20=20Inquiring=20about=20the=20= alignment=20of=20a=20type=20or=20variable.=0A***************=20machines,=20= typically=20because=20the=20target=20a=0A***=202354,2359=20****=0A---=20= 2356,2405=20----=0A=20=20You=20can=20use=20the=20sequence=20@samp{\e}=20= in=20a=20string=20or=20character=20constant=20to=0A=20=20stand=20for=20= the=20ASCII=20character=20@key{ESC}.=0A=20=20=0A+=20@node=20Pascal=20= Strings=0A+=20@section=20Constructing=20String=20Literals=20with=20a=20= Pascal-style=20Length=20Byte=0A+=20@cindex=20Pascal=20length=20byte=0A+=20= @cindex=20Pascal=20strings=0A+=20=0A+=20Specifying=20the=20= @w{@option{-fpascal-strings}}=20option=20will=20cause=20the=0A+=20= compiler=20to=20recognize=20and=20construct=20Pascal-style=20string=20= literals.=20=20This=0A+=20functionality=20is=20disabled=20by=20default;=20= furthermore,=20its=20use=20in=20new=20code=0A+=20is=20discouraged.=0A+=20= =0A+=20Pascal=20string=20literals=20take=20the=20form=20= @samp{"\pstring"}.=20=20The=20special=0A+=20escape=20sequence=20= @samp{\p}=20denotes=20the=20Pascal=20length=20byte=20for=20the=20string,=0A= +=20and=20will=20be=20replaced=20at=20compile=20time=20with=20the=20= number=20of=20characters=20that=0A+=20follow.=20=20The=20@samp{\p}=20may=20= only=20appear=20at=20the=20beginning=20of=20a=20string=0A+=20literal,=20= and=20may=20@emph{not}=20appear=20in=20wide=20string=20literals=20or=20= as=20an=0A+=20integral=20constant.=0A+=20=0A+=20As=20is=20the=20case=20= with=20C=20string=20literals,=20Pascal=20string=20literals=20are=0A+=20= terminated=20with=20a=20NUL=20character;=20this=20character=20is=20= @emph{not}=20counted=0A+=20when=20computing=20the=20value=20of=20the=20= length=20byte.=0A+=20=0A+=20Pascal-style=20literals=20are=20treated=20by=20= the=20compiler=20as=20being=20of=20type=0A+=20@samp{const=20unsigned=20= char=20[]}=20in=20C++=20and=20@samp{unsigned=20char=20[]}=20(or=0A+=20= @samp{const=20unsigned=20char=20[]},=20if=20the=20= @w{@option{-Wwrite-strings}}=0A+=20option=20is=20given)=20in=20C.=20=20= Pascal=20string=20literals=20may=20be=20used=20as=20static=0A+=20= initializers=20for=20@samp{char}=20arrays=20(whose=20elements=20need=20= not=20be=0A+=20@samp{unsigned}=20or=20@samp{const}).=20=20They=20may=20= also=20be=20converted=20to=0A+=20@samp{const=20unsigned=20char=20*}=20= and,=20in=20the=20C=20language=20as=20@samp{const=20char=0A+=20*}=20of=20= any=20signedness=20(In=20C,=20if=20the=20@w{@option{-Wwrite-strings}}=20= is=20not=0A+=20given,=20then=20@samp{const}=20may=20be=20omitted=20as=20= well).=20=20For=20example:=0A+=20=0A+=20@example=0A+=20const=20unsigned=20= char=20a[]=20=3D=20"\pHello";=0A+=20char=20b[]=20=3D=20"\pGoodbye";=0A+=20= const=20unsigned=20char=20*c=20=3D=20"\pHello";=0A+=20const=20signed=20= char=20*d=20=3D=20"\pHello";=20=20=20=20/*=20error=20in=20C++=20*/=0A+=20= char=20*e=20=3D=20"\pHi";=20=20/*=20error=20in=20C++;=20warning=20in=20C=20= with=20-Wwrite-strings=20*/=0A+=20@end=20example=0A+=20=0A+=20@noindent=0A= +=20Pascal-style=20literals=20are=20useful=20for=20calling=20external=20= routines=20that=0A+=20expect=20Pascal=20strings=20as=20arguments,=20as=20= is=20true=20with=20some=20Apple=20MacOS=0A+=20Toolbox=20calls.=0A+=20=20=20= =0A=20=20@node=20Alignment=0A=20=20@section=20Inquiring=20on=20Alignment=20= of=20Types=20or=20Variables=0A=20=20@cindex=20alignment=0AIndex:=20= gcc/doc/invoke.texi=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= /cvs/gcc/gcc/gcc/doc/invoke.texi,v=0Aretrieving=20revision=201.31=0Adiff=20= -c=20-3=20-p=20-r1.31=20invoke.texi=0A***=20invoke.texi=092001/07/03=20= 14:03:14=091.31=0A---=20invoke.texi=092001/07/03=2022:28:15=0A= ***************=20in=20the=20following=20sections.=0A***=20164,170=20= ****=0A=20=20-fallow-single-precision=20=20-fcond-mismatch=20@gol=0A=20=20= -fsigned-bitfields=20=20-fsigned-char=20@gol=0A=20=20= -funsigned-bitfields=20=20-funsigned-char=20@gol=0A!=20= -fwritable-strings=20=20-fshort-wchar}=0A=20=20=0A=20=20@item=20C++=20= Language=20Options=0A=20=20@xref{C++=20Dialect=20Options,,Options=20= Controlling=20C++=20Dialect}.=0A---=20164,171=20----=0A=20=20= -fallow-single-precision=20=20-fcond-mismatch=20@gol=0A=20=20= -fsigned-bitfields=20=20-fsigned-char=20@gol=0A=20=20= -funsigned-bitfields=20=20-funsigned-char=20@gol=0A!=20= -fwritable-strings=20=20-fshort-wchar=20@gol=0A!=20-fpascal-strings}=0A=20= =20=0A=20=20@item=20C++=20Language=20Options=0A=20=20@xref{C++=20Dialect=20= Options,,Options=20Controlling=20C++=20Dialect}.=0A***************=20= with=20ISO=20or=20GNU=20C=20conventions=20(the=20defau=0A***=201223,1228=20= ****=0A---=201224,1236=20----=0A=20=20Override=20the=20underlying=20type=20= for=20@samp{wchar_t}=20to=20be=20@samp{short=0A=20=20unsigned=20int}=20= instead=20of=20the=20default=20for=20the=20target.=20=20This=20option=20= is=0A=20=20useful=20for=20building=20programs=20to=20run=20under=20= WINE@.=0A+=20=0A+=20@item=20-fpascal-strings=0A+=20Allow=20for=20= Pascal-style=20string=20literals=20to=20be=20constructed.=0A+=20=0A+=20= @xref{Pascal=20Strings,,Constructing=20String=20Literals=20with=20a=20= Pascal-style=0A+=20Length=20Byte},=20for=20more=20information=20on=20the=20= syntax=20and=20semantics=20of=20Pascal=0A+=20string=20literals.=0A=20=20= @end=20table=0A=20=20=0A=20=20@node=20C++=20Dialect=20Options=0AIndex:=20= gcc/testsuite/g++.dg/pascal-strings-1.C=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-1.C=0Adiff=20-N=20pascal-strings-1.C=0A***=20/dev/null=09= Tue=20Jul=20=203=2015:08:25=202001=0A---=20pascal-strings-1.C=09Tue=20= Jul=20=203=2015:09:37=202001=0A***************=0A***=200=20****=0A---=20= 1,43=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20run=20}=20*/=0A+=20/*=20{=20= dg-options=20"-fpascal-strings"=20}=20*/=0A+=20=0A+=20typedef=20= __SIZE_TYPE__=20size_t;=0A+=20extern=20"C"=20void=20abort=20(void);=0A+=20= extern=20"C"=20size_t=20strlen=20(const=20char=20*s);=0A+=20=0A+=20const=20= unsigned=20char=20*pascalStr1=20=3D=20"\pHello,=20World!";=0A+=20const=20= unsigned=20char=20*concat1=20=3D=20"\pConcatenated"=20"string"=20= "\pliteral";=0A+=20=0A+=20const=20unsigned=20char=20msg1[]=20=3D=20= "\pHello";=20=20=20/*=20ok=20*/=0A+=20const=20unsigned=20char=20*msg2=20= =3D=20"\pHello";=20=20=20=20/*=20ok=20*/=0A+=20const=20signed=20char=20= msg3[]=20=3D=20"\pHello";=20=20=20=20=20/*=20ok=20*/=0A+=20const=20char=20= msg4[]=20=3D=20"\pHello";=20=20=20=20=20=20=20=20=20=20=20=20/*=20ok=20= */=0A+=20unsigned=20char=20msg5[]=20=3D=20"\pHello";=20=20=20/*=20ok=20= */=0A+=20signed=20char=20msg7[]=20=3D=20"\pHello";=20=20=20=20=20/*=20ok=20= */=0A+=20char=20msg8[]=20=3D=20"\pHello";=20=20=20=20=20=20=20=20=20=20=20= =20/*=20ok=20*/=0A+=20=20=20=20=0A+=20int=0A+=20main=20(void)=0A+=20{=0A= +=20=20=20const=20unsigned=20char=20*pascalStr2=20=3D=20"\pGood-bye!";=0A= +=20=0A+=20=20=20if=20(strlen=20((const=20char=20*)pascalStr1)=20!=3D=20= 14)=0A+=20=20=20=20=20abort=20();=0A+=20=20=20if=20(*pascalStr1=20!=3D=20= 13)=0A+=20=20=20=20=20abort=20();=20=20/*=20the=20length=20byte=20does=20= not=20include=20trailing=20null=20*/=0A+=20=0A+=20=20=20if=20(strlen=20= ((const=20char=20*)pascalStr2)=20!=3D=2010)=0A+=20=20=20=20=20abort=20= ();=0A+=20=20=20if=20(*pascalStr2=20!=3D=209)=0A+=20=20=20=20=20abort=20= ();=0A+=20=0A+=20=20=20if=20(strlen=20((const=20char=20*)concat1)=20!=3D=20= 26)=0A+=20=20=20=20=20abort=20();=0A+=20=20=20if=20(*concat1=20!=3D=20= 25)=0A+=20=20=20=20=20abort=20();=0A+=20=0A+=20=20=20return=200;=0A+=20}=0A= +=20=0AIndex:=20gcc/testsuite/g++.dg/pascal-strings-2.C=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-2.C=0Adiff=20-N=20pascal-strings-2.C=0A***=20/dev/null=09= Tue=20Jul=20=203=2015:08:25=202001=0A---=20pascal-strings-2.C=09Tue=20= Jul=20=203=2015:09:37=202001=0A***************=0A***=200=20****=0A---=20= 1,44=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20compile=20}=20*/=0A+=20/*=20= {=20dg-options=20"-fpascal-strings"=20}=20*/=0A+=20=0A+=20const=20= wchar_t=20*pascalStr1=20=3D=20L"\pHi!";=20/*=20{=20dg-error=20"not=20= allowed=20in=20wide"=20}=20*/=0A+=20const=20wchar_t=20*pascalStr2=20=3D=20= L"Bye\p!";=20/*=20{=20dg-error=20"not=20allowed=20in=20wide"=20}=20*/=0A= +=20=0A+=20const=20wchar_t=20*initErr0=20=3D=20"\pHi";=20=20=20/*=20{=20= dg-error=20"cannot=20convert"=20}=20*/=0A+=20const=20wchar_t=20= initErr0a[]=20=3D=20"\pHi";=20=20/*=20{=20dg-error=20"initialized=20from=20= non-wide=20string"=20}=20*/=0A+=20const=20wchar_t=20*initErr1=20=3D=20= "Bye";=20=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20= const=20wchar_t=20initErr1a[]=20=3D=20"Bye";=20=20=20/*=20{=20dg-error=20= "initialized=20from=20non-wide=20string"=20}=20*/=0A+=20=0A+=20const=20= char=20*initErr2=20=3D=20L"Hi";=20=20=20/*=20{=20dg-error=20"cannot=20= convert"=20}=20*/=0A+=20const=20char=20initErr2a[]=20=3D=20L"Hi";=20=20= /*=20{=20dg-error=20"initialized=20from=20wide=20string"=20}=20*/=0A+=20= const=20signed=20char=20*initErr3=20=3D=20L"Hi";=20=20/*=20{=20dg-error=20= "cannot=20convert"=20}=20*/=0A+=20const=20signed=20char=20initErr3a[]=20= =3D=20L"Hi";=20=20/*=20{=20dg-error=20"initialized=20from=20wide=20= string"=20}=20*/=0A+=20const=20unsigned=20char=20*initErr4=20=3D=20= L"Hi";=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20const=20= unsigned=20char=20initErr4a[]=20=3D=20L"Hi";=20/*=20{=20dg-error=20= "initialized=20from=20wide=20string"=20}=20*/=0A+=20=0A+=20const=20char=20= *pascalStr3=20=3D=20"Hello\p,=20World!";=20/*=20{=20dg-error=20"must=20= be=20at=20beginning"=20}=20*/=0A+=20=0A+=20const=20char=20*concat2=20=3D=20= "Hi"=20"\pthere";=20/*=20{=20dg-error=20"not=20allowed=20in=20= concatenation"=20}=20*/=0A+=20const=20char=20*concat3=20=3D=20"Hi"=20= "there\p";=20/*=20{=20dg-error=20"must=20be=20at=20beginning"=20}=20*/=0A= +=20=0A+=20const=20char=20*s2=20=3D=20"\pGoodbye!";=20=20=20/*=20{=20= dg-error=20"cannot=20convert"=20}=20*/=0A+=20unsigned=20char=20*s3=20=3D=20= "\pHi!";=20=20=20=20=20/*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A= +=20char=20*s4=20=3D=20"\pHi";=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= /*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20signed=20char=20= *s5=20=3D=20"\pHi";=20=20=20=20=20=20=20=20/*=20{=20dg-error=20"cannot=20= convert"=20}=20*/=0A+=20const=20signed=20char=20*s6=20=3D=20"\pHi";=20=20= /*=20{=20dg-error=20"cannot=20convert"=20}=20*/=0A+=20=0A+=20/*=20Pascal=20= literals=20in=20C++=20may=20be=20no=20more=20than=20255=20characters=20=0A= +=20=20=20=20(excluding=20the=20\p=20and=20the=20trailing=20NUL)=20in=20= length.=20*/=0A+=20=0A+=20const=20unsigned=20char=20*tooLong1=20=3D=0A+=20= =20=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 234567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20"123456789012345";=20=20/*=20ok=20*/=0A+=20= const=20unsigned=20char=20*tooLong2=20=3D=0A+=20=20=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 234567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20"1234567890123456";=20=20/*=20{=20dg-error=20= "too=20long"=20}=20*/=0AIndex:=20gcc/testsuite/gcc.dg/pascal-strings-1.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-1.c=0Adiff=20-N=20pascal-strings-1.c=0A***=20/dev/null=09= Tue=20Jul=20=203=2015:10:28=202001=0A---=20pascal-strings-1.c=09Tue=20= Jul=20=203=2015:09:47=202001=0A***************=0A***=200=20****=0A---=20= 1,45=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20run=20}=20*/=0A+=20/*=20{=20= dg-options=20"-std=3Diso9899:1999=20-fpascal-strings"=20}=20*/=0A+=20=0A= +=20typedef=20__WCHAR_TYPE__=20wchar_t;=0A+=20typedef=20__SIZE_TYPE__=20= size_t;=0A+=20=0A+=20extern=20void=20abort=20(void);=0A+=20extern=20= size_t=20strlen=20(const=20char=20*s);=0A+=20=0A+=20const=20unsigned=20= char=20*pascalStr1=20=3D=20"\pHello,=20World!";=0A+=20const=20unsigned=20= char=20*concat1=20=3D=20"\pConcatenated"=20"string"=20"\pliteral";=0A+=20= =0A+=20const=20unsigned=20char=20msg1[]=20=3D=20"\pHello";=20=20=20/*=20= ok=20*/=0A+=20const=20unsigned=20char=20*msg2=20=3D=20"\pHello";=20=20=20= =20/*=20ok=20*/=0A+=20const=20signed=20char=20msg3[]=20=3D=20"\pHello";=20= =20=20=20=20/*=20ok=20*/=0A+=20const=20char=20msg4[]=20=3D=20"\pHello";=20= =20=20=20=20=20=20=20=20=20=20=20/*=20ok=20*/=0A+=20unsigned=20char=20= msg5[]=20=3D=20"\pHello";=20=20=20/*=20ok=20*/=0A+=20signed=20char=20= msg7[]=20=3D=20"\pHello";=20=20=20=20=20/*=20ok=20*/=0A+=20char=20msg8[]=20= =3D=20"\pHello";=20=20=20=20=20=20=20=20=20=20=20=20/*=20ok=20*/=0A+=20=20= =20=20=0A+=20int=0A+=20main=20(void)=0A+=20{=0A+=20=20=20const=20= unsigned=20char=20*pascalStr2=20=3D=20"\pGood-bye!";=0A+=20=0A+=20=20=20= if=20(strlen=20((const=20char=20*)pascalStr1)=20!=3D=2014)=0A+=20=20=20=20= =20abort=20();=0A+=20=20=20if=20(*pascalStr1=20!=3D=2013)=0A+=20=20=20=20= =20abort=20();=20=20/*=20the=20length=20byte=20does=20not=20include=20= trailing=20null=20*/=0A+=20=0A+=20=20=20if=20(strlen=20((const=20char=20= *)pascalStr2)=20!=3D=2010)=0A+=20=20=20=20=20abort=20();=0A+=20=20=20if=20= (*pascalStr2=20!=3D=209)=0A+=20=20=20=20=20abort=20();=0A+=20=0A+=20=20=20= if=20(strlen=20((const=20char=20*)concat1)=20!=3D=2026)=0A+=20=20=20=20=20= abort=20();=0A+=20=20=20if=20(*concat1=20!=3D=2025)=0A+=20=20=20=20=20= abort=20();=0A+=20=0A+=20=20=20return=200;=0A+=20}=0A+=20=0AIndex:=20= gcc/testsuite/gcc.dg/pascal-strings-2.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0ARCS=20file:=20= pascal-strings-2.c=0Adiff=20-N=20pascal-strings-2.c=0A***=20/dev/null=09= Tue=20Jul=20=203=2015:10:28=202001=0A---=20pascal-strings-2.c=09Tue=20= Jul=20=203=2015:09:47=202001=0A***************=0A***=200=20****=0A---=20= 1,46=20----=0A+=20/*=20Test=20for=20handling=20of=20Pascal-style=20= string=20literals=20*/=0A+=20/*=20Origin:=20Ziemowit=20Laski=20= =20*/=0A+=20/*=20{=20dg-do=20compile=20}=20*/=0A+=20/*=20= {=20dg-options=20"-std=3Diso9899:1999=20-Wwrite-strings=20= -fpascal-strings"=20}=20*/=0A+=20=0A+=20typedef=20__WCHAR_TYPE__=20= wchar_t;=0A+=20=0A+=20const=20wchar_t=20*pascalStr1=20=3D=20L"\pHi!";=20= /*=20{=20dg-error=20"not=20allowed=20in=20wide"=20}=20*/=0A+=20const=20= wchar_t=20*pascalStr2=20=3D=20L"Bye\p!";=20/*=20{=20dg-error=20"not=20= allowed=20in=20wide"=20}=20*/=0A+=20=0A+=20const=20wchar_t=20*initErr0=20= =3D=20"\pHi";=20=20=20/*=20{=20dg-warning=20"incompatible=20pointer=20= type"=20}=20*/=0A+=20const=20wchar_t=20initErr0a[]=20=3D=20"\pHi";=20=20= /*=20{=20dg-error=20"initialized=20from=20non-wide=20string"=20}=20*/=0A= +=20const=20wchar_t=20*initErr1=20=3D=20"Bye";=20=20=20/*=20{=20= dg-warning=20"incompatible=20pointer=20type"=20}=20*/=0A+=20const=20= wchar_t=20initErr1a[]=20=3D=20"Bye";=20=20=20/*=20{=20dg-error=20= "initialized=20from=20non-wide=20string"=20}=20*/=0A+=20=0A+=20const=20= char=20*initErr2=20=3D=20L"Hi";=20=20=20/*=20{=20dg-warning=20= "incompatible=20pointer=20type"=20}=20*/=0A+=20const=20char=20= initErr2a[]=20=3D=20L"Hi";=20=20/*=20{=20dg-error=20"initialized=20from=20= wide=20string"=20}=20*/=0A+=20const=20signed=20char=20*initErr3=20=3D=20= L"Hi";=20=20/*=20{=20dg-warning=20"incompatible=20pointer=20type"=20}=20= */=0A+=20const=20signed=20char=20initErr3a[]=20=3D=20L"Hi";=20=20/*=20{=20= dg-error=20"initialized=20from=20wide=20string"=20}=20*/=0A+=20const=20= unsigned=20char=20*initErr4=20=3D=20L"Hi";=20=20/*=20{=20dg-warning=20= "incompatible=20pointer=20type"=20}=20*/=0A+=20const=20unsigned=20char=20= initErr4a[]=20=3D=20L"Hi";=20/*=20{=20dg-error=20"initialized=20from=20= wide=20string"=20}=20*/=0A+=20=0A+=20const=20char=20*pascalStr3=20=3D=20= "Hello\p,=20World!";=20/*=20{=20dg-error=20"must=20be=20at=20beginning"=20= }=20*/=0A+=20=0A+=20const=20char=20*concat2=20=3D=20"Hi"=20"\pthere";=20= /*=20{=20dg-error=20"not=20allowed=20in=20concatenation"=20}=20*/=0A+=20= const=20char=20*concat3=20=3D=20"Hi"=20"there\p";=20/*=20{=20dg-error=20= "must=20be=20at=20beginning"=20}=20*/=0A+=20=0A+=20const=20char=20*s2=20= =3D=20"\pGoodbye!";=20=20=20/*=20ok=20*/=0A+=20unsigned=20char=20*s3=20=3D= =20"\pHi!";=20=20=20=20=20/*=20{=20dg-warning=20"initialization=20= discards=20qualifiers"=20}=20*/=0A+=20char=20*s4=20=3D=20"\pHi";=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20/*=20{=20dg-warning=20= "initialization=20discards=20qualifiers"=20}=20*/=0A+=20signed=20char=20= *s5=20=3D=20"\pHi";=20=20=20=20=20=20=20=20/*=20{=20dg-warning=20= "initialization=20discards=20qualifiers"=20}=20*/=0A+=20const=20signed=20= char=20*s6=20=3D=20"\pHi";=20=20/*=20ok=20*/=0A+=20=0A+=20/*=20Pascal=20= literals=20in=20C++=20may=20be=20no=20more=20than=20255=20characters=20=0A= +=20=20=20=20(excluding=20the=20\p=20and=20the=20trailing=20NUL)=20in=20= length.=20*/=0A+=20=0A+=20const=20unsigned=20char=20*tooLong1=20=3D=0A+=20= =20=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 234567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20"123456789012345";=20=20/*=20ok=20*/=0A+=20= const=20unsigned=20char=20*tooLong2=20=3D=0A+=20=20=20= "\p12345678901234567890123456789012345678901234567890123456789012345678901= 234567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20= "1234567890123456789012345678901234567890123456789012345678901234567890123= 4567890"=0A+=20=20=20=20=20"1234567890123456";=20=20/*=20{=20dg-error=20= "too=20long"=20}=20*/=0A= --Apple-Mail-819598790-2 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii; format=flowed -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 --Apple-Mail-819598790-2-- --Apple-Mail-1150615457-1-- From gcc-patches-return-37989-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 22:52:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17819 invoked by alias); 3 Jul 2001 22:52:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16871 invoked from network); 3 Jul 2001 22:51:30 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 3 Jul 2001 22:51:30 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f63MlYM10213; Tue, 3 Jul 2001 23:47:34 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Daniel Berlin Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Revised DWARF2 macro info patch References: <878zicv8hl.fsf@cgsoftware.com> <877kxqdjj2.fsf@cgsoftware.com> From: Jason Merrill In-Reply-To: <877kxqdjj2.fsf@cgsoftware.com> (Daniel Berlin's message of "Tue, 03 Jul 2001 13:12:01 -0400") Date: 03 Jul 2001 23:47:34 +0100 Message-ID: Lines: 14 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii >>>>> "Daniel" == Daniel Berlin writes: > What you really want is to omit start/end for files which have no > macro definitions, and don't include other files that *have* macro > definitions. Yes. > This is a bit tricker, since we are outputting on the fly. We don't have to output on the fly, though. But no need to worry about it now. Jason From gcc-patches-return-37990-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:19:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 29983 invoked by alias); 3 Jul 2001 23:19:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 29189 invoked from network); 3 Jul 2001 23:18:33 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:18:33 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id QAA01622; Tue, 3 Jul 2001 16:35:53 -0700 To: Ziemowit Laski CC: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Pascal Strings -- TAKE FOUR References: <200107032249.f63Mnhw28468@scv2.apple.com> From: Geoff Keating Date: 03 Jul 2001 16:34:53 -0700 In-Reply-To: Ziemowit Laski's message of "Tue, 3 Jul 2001 15:49:43 -0700" Message-ID: Lines: 32 X-Mailer: Gnus v5.5/Emacs 20.3 + /* Pascal strings are not supported in wide mode */ Comments should really be full sentences, so this one should be + /* Pascal strings are not supported in wide mode. */ [note the two spaces after the '.'.] It'd also be nice, but not mandatory, if you could keep the line after that one inside 80 characters. + if (is_pascal_string) + { + *p = length - 2; + if (length - 2 > 255) + { + error ("Pascal string too long"); + } + } + The explicit constant 255 is wrong, there are some platforms that GCC supports where char is 16 bits. There are a number of places in your patch where that needs fixing. Other than these details, the patch looks good; please improve and re-send. -- - Geoffrey Keating From gcc-patches-return-37991-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:29:34 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2355 invoked by alias); 3 Jul 2001 23:29:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2332 invoked from network); 3 Jul 2001 23:29:33 -0000 Received: from unknown (HELO mail-out2.apple.com) (17.254.0.51) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:29:33 -0000 Received: from apple.con (A17-128-100-225.apple.com [17.128.100.225]) by mail-out2.apple.com (8.9.3/8.9.3) with ESMTP id QAA13633 for ; Tue, 3 Jul 2001 16:29:32 -0700 (PDT) Received: from scv3.apple.com (scv3.apple.com) by apple.con (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Tue, 3 Jul 2001 16:27:47 +0100 Received: from apple.com (melos.apple.com [17.202.41.123]) by scv3.apple.com (8.9.3/8.9.3) with ESMTP id QAA08013 for ; Tue, 3 Jul 2001 16:29:30 -0700 (PDT) Message-ID: <3B42555B.23C069AB@apple.com> Date: Tue, 03 Jul 2001 16:29:31 -0700 From: Stan Shebs X-Mailer: Mozilla 4.75 (Macintosh; U; PPC) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: Flush more old crud from Darwin port Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Just to prove that I'm not always trying to put junk into GCC :-), I've committed this patch that removes the ancient NeXT flag flag_no_mach_text_sections from the Darwin config. (In Apple's GCC, it's set by a pragma that's used in a few places, but there's no actual benefit, so we're deprecating the pragma and deleting the flag.) Bootstrapped on powerpc-apple-darwin1.3. Stan 2001-07-03 Stan Shebs * darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove case for flag_no_mach_text_sections. (EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION. * darwin.c (flag_no_mach_text_sections): Remove. * darwin-protos.h (darwin_init_pragma): Remove decl. Index: config/darwin-protos.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/darwin-protos.h,v retrieving revision 1.3 diff -c -3 -p -r1.3 darwin-protos.h *** darwin-protos.h 2001/06/28 19:55:52 1.3 --- darwin-protos.h 2001/07/03 20:32:27 *************** extern void darwin_encode_section_info P *** 58,64 **** extern void machopic_finish PARAMS ((FILE *)); #ifdef GCC_C_PRAGMA_H - extern void darwin_init_pragma PARAMS ((int (*) (tree *))); extern void darwin_pragma_ignore PARAMS ((cpp_reader *)); extern void darwin_pragma_options PARAMS ((cpp_reader *)); extern void darwin_pragma_unused PARAMS ((cpp_reader *)); --- 58,63 ---- Index: config/darwin.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/darwin.c,v retrieving revision 1.4 diff -c -3 -p -r1.4 darwin.c *** darwin.c 2001/07/03 01:58:34 1.4 --- darwin.c 2001/07/03 20:32:28 *************** static int machopic_data_defined_p PARAM *** 46,55 **** static int func_name_maybe_scoped PARAMS ((const char *)); static void update_non_lazy_ptrs PARAMS ((const char *)); - /* Make everything that used to go in the text section really go there. */ - - int flag_no_mach_text_sections = 0; - int name_needs_quotes (name) const char *name; --- 46,51 ---- Index: config/darwin.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/darwin.h,v retrieving revision 1.8 diff -c -3 -p -r1.8 darwin.h *** darwin.h 2001/06/28 19:55:52 1.8 --- darwin.h 2001/07/03 20:32:29 *************** do { text_section (); \ *** 308,324 **** /* Create new Mach-O sections. */ #undef SECTION_FUNCTION ! #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, WAS_TEXT, OBJC) \ void \ FUNCTION () \ { \ - extern void text_section (); \ extern void objc_section_init (); \ - extern int flag_no_mach_text_sections; \ \ ! if (WAS_TEXT && flag_no_mach_text_sections) \ ! text_section (); \ ! else if (in_section != SECTION) \ { \ if (OBJC) \ objc_section_init (); \ --- 308,320 ---- /* Create new Mach-O sections. */ #undef SECTION_FUNCTION ! #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, OBJC) \ void \ FUNCTION () \ { \ extern void objc_section_init (); \ \ ! if (in_section != SECTION) \ { \ if (OBJC) \ objc_section_init (); \ *************** do { if (!strcmp (alias_name, name)) *** 361,464 **** #define EXTRA_SECTION_FUNCTIONS \ SECTION_FUNCTION (const_section, \ in_const, \ ! ".const", 1, 0) \ SECTION_FUNCTION (const_data_section, \ in_const_data, \ ! ".const_data", 1, 0) \ SECTION_FUNCTION (cstring_section, \ in_cstring, \ ! ".cstring", 1, 0) \ SECTION_FUNCTION (literal4_section, \ in_literal4, \ ! ".literal4", 1, 0) \ SECTION_FUNCTION (literal8_section, \ in_literal8, \ ! ".literal8", 1, 0) \ SECTION_FUNCTION (constructor_section, \ in_constructor, \ ! ".constructor", 0, 0) \ SECTION_FUNCTION (mod_init_section, \ in_mod_init, \ ! ".mod_init_func", 0, 0) \ SECTION_FUNCTION (mod_term_section, \ in_mod_term, \ ! ".mod_term_func", 0, 0) \ SECTION_FUNCTION (destructor_section, \ in_destructor, \ ! ".destructor", 0, 0) \ SECTION_FUNCTION (objc_class_section, \ in_objc_class, \ ! ".objc_class", 0, 1) \ SECTION_FUNCTION (objc_meta_class_section, \ in_objc_meta_class, \ ! ".objc_meta_class", 0, 1) \ SECTION_FUNCTION (objc_category_section, \ in_objc_category, \ ! ".objc_category", 0, 1) \ SECTION_FUNCTION (objc_class_vars_section, \ in_objc_class_vars, \ ! ".objc_class_vars", 0, 1) \ SECTION_FUNCTION (objc_instance_vars_section, \ in_objc_instance_vars, \ ! ".objc_instance_vars", 0, 1) \ SECTION_FUNCTION (objc_cls_meth_section, \ in_objc_cls_meth, \ ! ".objc_cls_meth", 0, 1) \ SECTION_FUNCTION (objc_inst_meth_section, \ in_objc_inst_meth, \ ! ".objc_inst_meth", 0, 1) \ SECTION_FUNCTION (objc_cat_cls_meth_section, \ in_objc_cat_cls_meth, \ ! ".objc_cat_cls_meth", 0, 1) \ SECTION_FUNCTION (objc_cat_inst_meth_section, \ in_objc_cat_inst_meth, \ ! ".objc_cat_inst_meth", 0, 1) \ SECTION_FUNCTION (objc_selector_refs_section, \ in_objc_selector_refs, \ ! ".objc_message_refs", 0, 1) \ SECTION_FUNCTION (objc_selector_fixup_section, \ in_objc_selector_fixup, \ ! ".section __OBJC, __sel_fixup", 0, 1) \ SECTION_FUNCTION (objc_symbols_section, \ in_objc_symbols, \ ! ".objc_symbols", 0, 1) \ SECTION_FUNCTION (objc_module_info_section, \ in_objc_module_info, \ ! ".objc_module_info", 0, 1) \ SECTION_FUNCTION (objc_protocol_section, \ in_objc_protocol, \ ! ".objc_protocol", 0, 1) \ SECTION_FUNCTION (objc_string_object_section, \ in_objc_string_object, \ ! ".objc_string_object", 0, 1) \ SECTION_FUNCTION (objc_constant_string_object_section, \ in_objc_constant_string_object, \ ! ".section __OBJC, __cstring_object", 0, 1) \ SECTION_FUNCTION (objc_class_names_section, \ in_objc_class_names, \ ! ".objc_class_names", 0, 1) \ SECTION_FUNCTION (objc_meth_var_names_section, \ in_objc_meth_var_names, \ ! ".objc_meth_var_names", 0, 1) \ SECTION_FUNCTION (objc_meth_var_types_section, \ in_objc_meth_var_types, \ ! ".objc_meth_var_types", 0, 1) \ SECTION_FUNCTION (objc_cls_refs_section, \ in_objc_cls_refs, \ ! ".objc_cls_refs", 0, 1) \ \ SECTION_FUNCTION (machopic_lazy_symbol_ptr_section, \ in_machopic_lazy_symbol_ptr, \ ! ".lazy_symbol_pointer", 0, 0) \ SECTION_FUNCTION (machopic_nl_symbol_ptr_section, \ in_machopic_nl_symbol_ptr, \ ! ".non_lazy_symbol_pointer", 0, 0) \ SECTION_FUNCTION (machopic_symbol_stub_section, \ in_machopic_symbol_stub, \ ! ".symbol_stub", 0, 0) \ SECTION_FUNCTION (machopic_picsymbol_stub_section, \ in_machopic_picsymbol_stub, \ ! ".picsymbol_stub", 0, 0) \ \ void \ objc_section_init () \ --- 357,460 ---- #define EXTRA_SECTION_FUNCTIONS \ SECTION_FUNCTION (const_section, \ in_const, \ ! ".const", 0) \ SECTION_FUNCTION (const_data_section, \ in_const_data, \ ! ".const_data", 0) \ SECTION_FUNCTION (cstring_section, \ in_cstring, \ ! ".cstring", 0) \ SECTION_FUNCTION (literal4_section, \ in_literal4, \ ! ".literal4", 0) \ SECTION_FUNCTION (literal8_section, \ in_literal8, \ ! ".literal8", 0) \ SECTION_FUNCTION (constructor_section, \ in_constructor, \ ! ".constructor", 0) \ SECTION_FUNCTION (mod_init_section, \ in_mod_init, \ ! ".mod_init_func", 0) \ SECTION_FUNCTION (mod_term_section, \ in_mod_term, \ ! ".mod_term_func", 0) \ SECTION_FUNCTION (destructor_section, \ in_destructor, \ ! ".destructor", 0) \ SECTION_FUNCTION (objc_class_section, \ in_objc_class, \ ! ".objc_class", 1) \ SECTION_FUNCTION (objc_meta_class_section, \ in_objc_meta_class, \ ! ".objc_meta_class", 1) \ SECTION_FUNCTION (objc_category_section, \ in_objc_category, \ ! ".objc_category", 1) \ SECTION_FUNCTION (objc_class_vars_section, \ in_objc_class_vars, \ ! ".objc_class_vars", 1) \ SECTION_FUNCTION (objc_instance_vars_section, \ in_objc_instance_vars, \ ! ".objc_instance_vars", 1) \ SECTION_FUNCTION (objc_cls_meth_section, \ in_objc_cls_meth, \ ! ".objc_cls_meth", 1) \ SECTION_FUNCTION (objc_inst_meth_section, \ in_objc_inst_meth, \ ! ".objc_inst_meth", 1) \ SECTION_FUNCTION (objc_cat_cls_meth_section, \ in_objc_cat_cls_meth, \ ! ".objc_cat_cls_meth", 1) \ SECTION_FUNCTION (objc_cat_inst_meth_section, \ in_objc_cat_inst_meth, \ ! ".objc_cat_inst_meth", 1) \ SECTION_FUNCTION (objc_selector_refs_section, \ in_objc_selector_refs, \ ! ".objc_message_refs", 1) \ SECTION_FUNCTION (objc_selector_fixup_section, \ in_objc_selector_fixup, \ ! ".section __OBJC, __sel_fixup", 1) \ SECTION_FUNCTION (objc_symbols_section, \ in_objc_symbols, \ ! ".objc_symbols", 1) \ SECTION_FUNCTION (objc_module_info_section, \ in_objc_module_info, \ ! ".objc_module_info", 1) \ SECTION_FUNCTION (objc_protocol_section, \ in_objc_protocol, \ ! ".objc_protocol", 1) \ SECTION_FUNCTION (objc_string_object_section, \ in_objc_string_object, \ ! ".objc_string_object", 1) \ SECTION_FUNCTION (objc_constant_string_object_section, \ in_objc_constant_string_object, \ ! ".section __OBJC, __cstring_object", 1) \ SECTION_FUNCTION (objc_class_names_section, \ in_objc_class_names, \ ! ".objc_class_names", 1) \ SECTION_FUNCTION (objc_meth_var_names_section, \ in_objc_meth_var_names, \ ! ".objc_meth_var_names", 1) \ SECTION_FUNCTION (objc_meth_var_types_section, \ in_objc_meth_var_types, \ ! ".objc_meth_var_types", 1) \ SECTION_FUNCTION (objc_cls_refs_section, \ in_objc_cls_refs, \ ! ".objc_cls_refs", 1) \ \ SECTION_FUNCTION (machopic_lazy_symbol_ptr_section, \ in_machopic_lazy_symbol_ptr, \ ! ".lazy_symbol_pointer", 0) \ SECTION_FUNCTION (machopic_nl_symbol_ptr_section, \ in_machopic_nl_symbol_ptr, \ ! ".non_lazy_symbol_pointer", 0) \ SECTION_FUNCTION (machopic_symbol_stub_section, \ in_machopic_symbol_stub, \ ! ".symbol_stub", 0) \ SECTION_FUNCTION (machopic_picsymbol_stub_section, \ in_machopic_picsymbol_stub, \ ! ".picsymbol_stub", 0) \ \ void \ objc_section_init () \ From gcc-patches-return-37992-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:34:09 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4685 invoked by alias); 3 Jul 2001 23:34:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4646 invoked from network); 3 Jul 2001 23:34:06 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:34:06 -0000 Received: from apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id QAA26453 for ; Tue, 3 Jul 2001 16:34:02 -0700 (PDT) Received: from scv2.apple.com (scv2.apple.com) by apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Tue, 3 Jul 2001 16:33:53 -0700 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id f63NXrw10326; Tue, 3 Jul 2001 16:33:53 -0700 (PDT) Message-Id: <200107032333.f63NXrw10326@scv2.apple.com> Date: Tue, 3 Jul 2001 16:33:53 -0700 From: Ziemowit Laski Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Cc: gcc-patches@gcc.gnu.org To: Geoff Keating X-Mailer: Apple Mail (2.388) In-Reply-To: Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit On Tuesday, July 3, 2001, at 04:34 , Geoff Keating wrote: > The explicit constant 255 is wrong, there are some platforms that GCC > supports where char is 16 bits. There are a number of places in your > patch where that needs fixing. Please advise on how I should encode that information -- I'm tempted to say ((unsigned char)-1) but perhaps there's some macro somewhere in the bowels of gcc that's more suitable? > Other than these details, the patch looks good; please improve and > re-send. Thanks, will do. --Zem -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 From gcc-patches-return-37993-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:40:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7648 invoked by alias); 3 Jul 2001 23:40:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7237 invoked from network); 3 Jul 2001 23:38:38 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:38:38 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA07365; Tue, 3 Jul 2001 16:38:37 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f63Ncad25421; Tue, 3 Jul 2001 16:38:36 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Tue, 3 Jul 2001 16:38:36 -0700 From: Richard Henderson To: Andrew Haley Cc: gcc-patches@gcc.gnu.org Subject: Re: i960 and -mstrict-align Message-ID: <20010703163836.A25416@redhat.com> Mail-Followup-To: Richard Henderson , Andrew Haley , gcc-patches@gcc.gnu.org References: <15170.8292.425361.809730@cuddles.cambridge.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <15170.8292.425361.809730@cuddles.cambridge.redhat.com>; from aph@cambridge.redhat.com on Tue, Jul 03, 2001 at 08:43:32PM +0100 On Tue, Jul 03, 2001 at 08:43:32PM +0100, Andrew Haley wrote: > A question: is it ever legal to store into a MEM with a mode bigger > than that MEM? Well, in context it's certainly legal to widen the operation, as long as you wind up with with the right data in the later addresses. > * expmed.c (store_fixed_bit_field): Don't use a mode bigger than > the mode of the memory location. Ok. r~ From gcc-patches-return-37994-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:48:49 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14029 invoked by alias); 3 Jul 2001 23:48:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13999 invoked from network); 3 Jul 2001 23:48:48 -0000 Received: from unknown (HELO mail-out2.apple.com) (17.254.0.51) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:48:48 -0000 Received: from apple.con (A17-128-100-225.apple.com [17.128.100.225]) by mail-out2.apple.com (8.9.3/8.9.3) with ESMTP id QAA16799 for ; Tue, 3 Jul 2001 16:48:45 -0700 (PDT) Received: from scv1.apple.com (scv1.apple.com) by apple.con (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Tue, 3 Jul 2001 16:46:59 +0100 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv1.apple.com (8.9.3/8.9.3) with ESMTP id QAA12572; Tue, 3 Jul 2001 16:48:42 -0700 (PDT) Message-Id: <200107032348.QAA12572@scv1.apple.com> Date: Tue, 3 Jul 2001 16:48:43 -0700 From: Ziemowit Laski Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Cc: gcc-patches@gcc.gnu.org To: Geoff Keating X-Mailer: Apple Mail (2.388) In-Reply-To: Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit On Tuesday, July 3, 2001, at 04:33 , Ziemowit Laski wrote: >> The explicit constant 255 is wrong, there are some platforms that GCC >> supports where char is 16 bits. There are a number of places in your >> patch where that needs fixing. > > Please advise on how I should encode that information -- I'm tempted to > say > > ((unsigned char)-1) > > but perhaps there's some macro somewhere in the bowels of gcc that's > more suitable? Oh, yes, this leads to one more thing -- how should I construct the test cases to test for an excessively long Pascal string? Currently, I just hard-code a 256-character string, but that would be perfectly fine with 16-bit chars (and so the test case would fail). Is there some sort of a GNU preprocessor extension to repeat a character in a string literal? Another approach, I guess, could be to #ifdef that particular test away on platforms where char is not 8 bits wide. --Zem From gcc-patches-return-37995-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Tue Jul 03 23:49:39 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14451 invoked by alias); 3 Jul 2001 23:49:38 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13659 invoked from network); 3 Jul 2001 23:48:17 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 3 Jul 2001 23:48:17 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA08130; Tue, 3 Jul 2001 16:48:16 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f63NmGB25432; Tue, 3 Jul 2001 16:48:16 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Tue, 3 Jul 2001 16:48:16 -0700 From: Richard Henderson To: Mark Mitchell Cc: Ziemowit Laski , "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 Message-ID: <20010703164816.B25416@redhat.com> Mail-Followup-To: Richard Henderson , Mark Mitchell , Ziemowit Laski , "gcc-patches@gcc.gnu.org" References: <200106291910.MAA15591@scv3.apple.com> <16950000.994010269@warlock.codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <16950000.994010269@warlock.codesourcery.com>; from mark@codesourcery.com on Sun, Jul 01, 2001 at 10:57:49AM -0700 On Sun, Jul 01, 2001 at 10:57:49AM -0700, Mark Mitchell wrote: > I am not in favor on a technical basis. Too much complication for too > little win. I disagree. I don't think there's that much complication. I'm in favor of approving Zem's patch, assuming that the docs are up to Joseph's rigorous standards. r~ From gcc-patches-return-37996-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:00:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19580 invoked by alias); 4 Jul 2001 00:00:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19543 invoked from network); 4 Jul 2001 00:00:03 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:00:03 -0000 Received: from fencer.cygnus.com (fencer.cygnus.com [205.180.230.60]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id RAA09358; Tue, 3 Jul 2001 17:00:00 -0700 (PDT) Received: (green@localhost) by fencer.cygnus.com (8.9.3/8.6.4) id RAA24314; Tue, 3 Jul 2001 17:00:00 -0700 Date: Tue, 3 Jul 2001 17:00:00 -0700 Message-Id: <200107040000.RAA24314@fencer.cygnus.com> X-Authentication-Warning: fencer.cygnus.com: green set sender to green@redhat.com using -f From: Anthony Green To: gcc-patches@gcc.gnu.org Subject: Patch: add missing v850 dependencies X-Organization: Red Hat, Sunnyvale, California X-URL: http://www.cygnus.com/~green Reply-to: green@cygnus.com Parallel builds of the v850 port are broken due to missing Makefile dependencies. Ok for trunk? AG 2001-07-03 Anthony Green * config/v850/t-v850 (v850-c.o): Add missing dependencies. Index: gcc/config/v850/t-v850 =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/v850/t-v850,v retrieving revision 1.7 diff -u -p -r1.7 t-v850 --- t-v850 2001/05/17 03:16:14 1.7 +++ t-v850 2001/07/03 23:50:41 @@ -51,6 +51,6 @@ fp-bit.c: $(srcdir)/config/fp-bit.c TCFLAGS = -Wa,-mwarn-signed-overflow -Wa,-mwarn-unsigned-overflow -v850-c.o: $(srcdir)/config/v850/v850-c.c +v850-c.o: $(srcdir)/config/v850/v850-c.c $(RTL_H) $(TREE_H) $(CONFIG_H) $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< From gcc-patches-return-37997-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:09:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24458 invoked by alias); 4 Jul 2001 00:09:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23675 invoked from network); 4 Jul 2001 00:07:45 -0000 Received: from unknown (HELO cc730106-b.taylor1.mi.home.com) (24.13.63.84) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:07:45 -0000 Received: from localhost (jsturm@localhost) by cc730106-b.taylor1.mi.home.com (8.9.3/8.9.3) with ESMTP id VAA04387; Tue, 3 Jul 2001 21:12:26 -0400 X-Authentication-Warning: mars.deadcafe.org: jsturm owned process doing -bs Date: Tue, 3 Jul 2001 21:12:26 -0400 (EDT) From: Jeff Sturm X-Sender: jsturm@mars.deadcafe.org To: Alexandre Petit-Bianco cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: PATCH: java instance initializers In-Reply-To: <15169.60273.588701.922377@fencer.cygnus.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Alexandre Petit-Bianco wrote: > I would just say: > > > { > > case CALL_EXPR: > > found = CALL_EXPLICIT_CONSTRUCTOR_P (body); > > + invokes_this = CALL_THIS_CONSTRUCTOR_P (body) > > body = NULL_TREE; > > break; > > case COMPOUND_EXPR: Thanks. I committed this with your suggestion. Jeff From gcc-patches-return-37998-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:09:22 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24637 invoked by alias); 4 Jul 2001 00:09:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23922 invoked from network); 4 Jul 2001 00:08:00 -0000 Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:08:00 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HaCw-0003xM-00; Wed, 04 Jul 2001 01:07:54 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HaCv-0001EB-00; Wed, 04 Jul 2001 01:07:53 +0100 Date: Wed, 4 Jul 2001 01:07:51 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Stan Shebs cc: Ziemowit Laski , "gcc-patches@gcc.gnu.org" Subject: Re: PATCH: Support for Pascal strings -- Take 2 In-Reply-To: <3B421D56.52F16B98@apple.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Stan Shebs wrote: > The truth of the matter is that all the discussion and rewriting > of this patch has already well exceeded the time that has gone into > maintaining it in Apple's GCC over the past several years. Since I'd hope you'd want to end up with any and all patches that stay in Apple's GCC and do not go in the FSF GCC being clean (in implementation, if not in the semantics of the extension they implement), self-contained, and with proper documentation and testcases - so while improving patches not intended for FSF GCC is not the purpose of the GCC lists, if a patch intended for FSF GCC ends up not going in FSF GCC, the improvements to it ought still to be found useful. (I don't know, though, how at present your patches to FSF GCC are maintained and distinguished from each other and from unmodified FSF code, and to what extent they are already properly documented or have testcases.) -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-37999-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:09:39 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24820 invoked by alias); 4 Jul 2001 00:09:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24077 invoked from network); 4 Jul 2001 00:08:18 -0000 Received: from unknown (HELO cc730106-b.taylor1.mi.home.com) (24.13.63.84) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:08:18 -0000 Received: from localhost (jsturm@localhost) by cc730106-b.taylor1.mi.home.com (8.9.3/8.9.3) with ESMTP id VAA04391; Tue, 3 Jul 2001 21:12:48 -0400 X-Authentication-Warning: mars.deadcafe.org: jsturm owned process doing -bs Date: Tue, 3 Jul 2001 21:12:48 -0400 (EDT) From: Jeff Sturm X-Sender: jsturm@mars.deadcafe.org To: Tom Tromey cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: PATCH: java instance initializers In-Reply-To: <87n16m9d9f.fsf@creche.redhat.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 3 Jul 2001, Tom Tromey wrote: > Jeff> If a java class contains instance initializers called through a > Jeff> constructor invoking `this', the initializers are executed twice: > > Could you check your test case in to libjava/testsuite/libjava.lang ? Done. Jeff From gcc-patches-return-38000-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:15:19 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 27568 invoked by alias); 4 Jul 2001 00:15:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26749 invoked from network); 4 Jul 2001 00:13:39 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.163.213.130) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:13:39 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id RAA02092; Tue, 3 Jul 2001 17:12:30 -0700 Date: Tue, 3 Jul 2001 17:12:29 -0700 From: Jeffrey Oldham To: kenner@vlsi1.ultra.nyu.edu Cc: gcc-patches@gcc.gnu.org, Jeffrey Oldham Subject: Re: MEM tracking, round 3 Message-ID: <20010703171229.A2085@codesourcery.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="82I3+IH0IqGh5yIs" Content-Disposition: inline User-Agent: Mutt/1.2.5i Organization: CodeSourcery LLC --82I3+IH0IqGh5yIs Content-Type: text/plain; charset=us-ascii Content-Disposition: inline gcc 3.1 i686-pc-linux-gnu no longer bootstraps. The problem occurs on line 175 of explow.c which your patch changed. Below are the commands that show the problem. Attached is the offending preprocessed file. Will you please back out your patch until i686-pc-linux-gnu bootstraps using your patch? Thanks, Jeffrey D. Oldham oldham@codesourcery.com ./xgcc -v -save-temps -B./ -B/nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/bin/ -isystem /nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/include -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -fPIC -g1 -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I/nfs/oz/home/oldham/gcc/gcc5/gcc -I/nfs/oz/home/oldham/gcc/gcc5/gcc/. -I/nfs/oz/home/oldham/gcc/gcc5/gcc/config -I/nfs/oz/home/oldham/gcc/gcc5/gcc/../include -fexceptions -c /nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c -o libgcc/./unwind-dw2.o Reading specs from ./specs Configured with: /nfs/oz/home/oldham/gcc/gcc5/configure --prefix=/nfs/oz/home/oldham/gcc-install/gcc5 Thread model: single gcc version 3.1 20010703 (experimental) ./cpp0 -lang-c -v -I. -I. -I/nfs/oz/home/oldham/gcc/gcc5/gcc -I/nfs/oz/home/oldham/gcc/gcc5/gcc/. -I/nfs/oz/home/oldham/gcc/gcc5/gcc/config -I/nfs/oz/home/oldham/gcc/gcc5/gcc/../include -iprefix ./../lib/gcc-lib/i686-pc-linux-gnu/3.1/ -isystem ./include -isystem /nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/bin/include -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ -D__PIC__ -D__pic__ -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -isystem /nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/include -isystem ./include /nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c unwind-dw2.i ignoring nonexistent directory "/nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/bin/include" GNU CPP version 3.1 20010703 (experimental) (cpplib) (i386 Linux/ELF) ignoring nonexistent directory "../lib/gcc-lib/i686-pc-linux-gnu/3.1/include" ignoring nonexistent directory "../lib/gcc-lib/i686-pc-linux-gnu/3.1/../../../../i686-pc-linux-gnu/include" ignoring nonexistent directory "/usr/local/include" ignoring duplicate directory "." ignoring duplicate directory "/nfs/oz/home/oldham/gcc/gcc5/gcc" ignoring duplicate directory "include" ignoring duplicate directory "/nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: . /nfs/oz/home/oldham/gcc/gcc5/gcc /nfs/oz/home/oldham/gcc/gcc5/gcc/config /nfs/oz/home/oldham/gcc/gcc5/include include /nfs/oz/home/oldham/gcc-install/gcc5/i686-pc-linux-gnu/include /nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3.1/include /usr/include End of search list. ./cc1 -fpreprocessed unwind-dw2.i -quiet -dumpbase unwind-dw2.c -g1 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -version -fPIC -fexceptions -o unwind-dw2.s GNU CPP version 3.1 20010703 (experimental) (cpplib) (i386 Linux/ELF) GNU C version 3.1 20010703 (experimental) (i686-pc-linux-gnu) compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release). /nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c: In function `execute_stack_op': /nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c:300: warning: `result' might be used uninitialized in this function /nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c:678: Internal error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See for instructions. --82I3+IH0IqGh5yIs Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="unwind-dw2.i" Content-Transfer-Encoding: quoted-printable # 21 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" # 1 "tconfig.h" 1 # 1 "/nfs/oz/home/oldham/gcc/gcc5/include/ansidecl.h" 1 # 3 "tconfig.h" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" 1 # 53 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" struct processor_costs { int add; int lea; int shift_var; int shift_const; int mult_init; int mult_bit; int divide; int large_insn; int move_ratio; int movzbl_load; int int_load[3]; int int_store[3]; int fp_move; int fp_load[3]; int fp_store[3]; int mmx_move; int mmx_load[2]; int mmx_store[2]; int sse_move; int sse_load[3]; int sse_store[3]; int mmxsse_to_integer; }; extern struct processor_costs *ix86_cost; extern int target_flags; # 204 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" extern const int x86_use_leave, x86_push_memory, x86_zero_extend_with_and; extern const int x86_use_bit_test, x86_cmove, x86_deep_branch; extern const int x86_branch_hints, x86_unroll_strlen; extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx; extern const int x86_use_loop, x86_use_fiop, x86_use_mov0; extern const int x86_use_cltd, x86_read_modify_write; extern const int x86_read_modify, x86_split_long_moves; extern const int x86_promote_QImode, x86_single_stringop; extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs; extern const int x86_promote_hi_regs, x86_integer_DFmode_moves; extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8; extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall; extern const int x86_accumulate_outgoing_args, x86_prologue_using_move; extern const int x86_epilogue_using_move; # 374 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" enum processor_type { PROCESSOR_I386, PROCESSOR_I486, PROCESSOR_PENTIUM, PROCESSOR_PENTIUMPRO, PROCESSOR_K6, PROCESSOR_ATHLON, PROCESSOR_PENTIUM4, PROCESSOR_max }; extern enum processor_type ix86_cpu; extern int ix86_arch; # 1090 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" enum reg_class { NO_REGS, AREG, DREG, CREG, BREG, SIREG, DIREG, AD_REGS, Q_REGS, NON_Q_REGS, INDEX_REGS, LEGACY_REGS, GENERAL_REGS, FP_TOP_REG, FP_SECOND_REG, FLOAT_REGS, SSE_REGS, MMX_REGS, FP_TOP_SSE_REGS, FP_SECOND_SSE_REGS, FLOAT_SSE_REGS, FLOAT_INT_REGS, INT_SSE_REGS, FLOAT_INT_SSE_REGS, ALL_REGS, LIM_REG_CLASSES }; # 1537 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" typedef struct ix86_args { int words; int nregs; int regno; int sse_words; int sse_nregs; int sse_regno; } CUMULATIVE_ARGS; # 1980 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" enum ix86_builtins { IX86_BUILTIN_ADDPS, IX86_BUILTIN_ADDSS, IX86_BUILTIN_DIVPS, IX86_BUILTIN_DIVSS, IX86_BUILTIN_MULPS, IX86_BUILTIN_MULSS, IX86_BUILTIN_SUBPS, IX86_BUILTIN_SUBSS, IX86_BUILTIN_CMPEQPS, IX86_BUILTIN_CMPLTPS, IX86_BUILTIN_CMPLEPS, IX86_BUILTIN_CMPGTPS, IX86_BUILTIN_CMPGEPS, IX86_BUILTIN_CMPNEQPS, IX86_BUILTIN_CMPNLTPS, IX86_BUILTIN_CMPNLEPS, IX86_BUILTIN_CMPNGTPS, IX86_BUILTIN_CMPNGEPS, IX86_BUILTIN_CMPORDPS, IX86_BUILTIN_CMPUNORDPS, IX86_BUILTIN_CMPNEPS, IX86_BUILTIN_CMPEQSS, IX86_BUILTIN_CMPLTSS, IX86_BUILTIN_CMPLESS, IX86_BUILTIN_CMPGTSS, IX86_BUILTIN_CMPGESS, IX86_BUILTIN_CMPNEQSS, IX86_BUILTIN_CMPNLTSS, IX86_BUILTIN_CMPNLESS, IX86_BUILTIN_CMPNGTSS, IX86_BUILTIN_CMPNGESS, IX86_BUILTIN_CMPORDSS, IX86_BUILTIN_CMPUNORDSS, IX86_BUILTIN_CMPNESS, IX86_BUILTIN_COMIEQSS, IX86_BUILTIN_COMILTSS, IX86_BUILTIN_COMILESS, IX86_BUILTIN_COMIGTSS, IX86_BUILTIN_COMIGESS, IX86_BUILTIN_COMINEQSS, IX86_BUILTIN_UCOMIEQSS, IX86_BUILTIN_UCOMILTSS, IX86_BUILTIN_UCOMILESS, IX86_BUILTIN_UCOMIGTSS, IX86_BUILTIN_UCOMIGESS, IX86_BUILTIN_UCOMINEQSS, IX86_BUILTIN_CVTPI2PS, IX86_BUILTIN_CVTPS2PI, IX86_BUILTIN_CVTSI2SS, IX86_BUILTIN_CVTSS2SI, IX86_BUILTIN_CVTTPS2PI, IX86_BUILTIN_CVTTSS2SI, IX86_BUILTIN_M_FROM_INT, IX86_BUILTIN_M_TO_INT, IX86_BUILTIN_MAXPS, IX86_BUILTIN_MAXSS, IX86_BUILTIN_MINPS, IX86_BUILTIN_MINSS, IX86_BUILTIN_LOADAPS, IX86_BUILTIN_LOADUPS, IX86_BUILTIN_STOREAPS, IX86_BUILTIN_STOREUPS, IX86_BUILTIN_LOADSS, IX86_BUILTIN_STORESS, IX86_BUILTIN_MOVSS, IX86_BUILTIN_MOVHLPS, IX86_BUILTIN_MOVLHPS, IX86_BUILTIN_LOADHPS, IX86_BUILTIN_LOADLPS, IX86_BUILTIN_STOREHPS, IX86_BUILTIN_STORELPS, IX86_BUILTIN_MASKMOVQ, IX86_BUILTIN_MOVMSKPS, IX86_BUILTIN_PMOVMSKB, IX86_BUILTIN_MOVNTPS, IX86_BUILTIN_MOVNTQ, IX86_BUILTIN_PACKSSWB, IX86_BUILTIN_PACKSSDW, IX86_BUILTIN_PACKUSWB, IX86_BUILTIN_PADDB, IX86_BUILTIN_PADDW, IX86_BUILTIN_PADDD, IX86_BUILTIN_PADDSB, IX86_BUILTIN_PADDSW, IX86_BUILTIN_PADDUSB, IX86_BUILTIN_PADDUSW, IX86_BUILTIN_PSUBB, IX86_BUILTIN_PSUBW, IX86_BUILTIN_PSUBD, IX86_BUILTIN_PSUBSB, IX86_BUILTIN_PSUBSW, IX86_BUILTIN_PSUBUSB, IX86_BUILTIN_PSUBUSW, IX86_BUILTIN_PAND, IX86_BUILTIN_PANDN, IX86_BUILTIN_POR, IX86_BUILTIN_PXOR, IX86_BUILTIN_PAVGB, IX86_BUILTIN_PAVGW, IX86_BUILTIN_PCMPEQB, IX86_BUILTIN_PCMPEQW, IX86_BUILTIN_PCMPEQD, IX86_BUILTIN_PCMPGTB, IX86_BUILTIN_PCMPGTW, IX86_BUILTIN_PCMPGTD, IX86_BUILTIN_PEXTRW, IX86_BUILTIN_PINSRW, IX86_BUILTIN_PMADDWD, IX86_BUILTIN_PMAXSW, IX86_BUILTIN_PMAXUB, IX86_BUILTIN_PMINSW, IX86_BUILTIN_PMINUB, IX86_BUILTIN_PMULHUW, IX86_BUILTIN_PMULHW, IX86_BUILTIN_PMULLW, IX86_BUILTIN_PSADBW, IX86_BUILTIN_PSHUFW, IX86_BUILTIN_PSLLW, IX86_BUILTIN_PSLLD, IX86_BUILTIN_PSLLQ, IX86_BUILTIN_PSRAW, IX86_BUILTIN_PSRAD, IX86_BUILTIN_PSRLW, IX86_BUILTIN_PSRLD, IX86_BUILTIN_PSRLQ, IX86_BUILTIN_PSLLWI, IX86_BUILTIN_PSLLDI, IX86_BUILTIN_PSLLQI, IX86_BUILTIN_PSRAWI, IX86_BUILTIN_PSRADI, IX86_BUILTIN_PSRLWI, IX86_BUILTIN_PSRLDI, IX86_BUILTIN_PSRLQI, IX86_BUILTIN_PUNPCKHBW, IX86_BUILTIN_PUNPCKHWD, IX86_BUILTIN_PUNPCKHDQ, IX86_BUILTIN_PUNPCKLBW, IX86_BUILTIN_PUNPCKLWD, IX86_BUILTIN_PUNPCKLDQ, IX86_BUILTIN_SHUFPS, IX86_BUILTIN_RCPPS, IX86_BUILTIN_RCPSS, IX86_BUILTIN_RSQRTPS, IX86_BUILTIN_RSQRTSS, IX86_BUILTIN_SQRTPS, IX86_BUILTIN_SQRTSS, IX86_BUILTIN_UNPCKHPS, IX86_BUILTIN_UNPCKLPS, IX86_BUILTIN_ANDPS, IX86_BUILTIN_ANDNPS, IX86_BUILTIN_ORPS, IX86_BUILTIN_XORPS, IX86_BUILTIN_EMMS, IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR, IX86_BUILTIN_SFENCE, IX86_BUILTIN_PREFETCH, IX86_BUILTIN_SETPS1, IX86_BUILTIN_SETPS, IX86_BUILTIN_CLRPS, IX86_BUILTIN_SETRPS, IX86_BUILTIN_LOADPS1, IX86_BUILTIN_LOADRPS, IX86_BUILTIN_STOREPS1, IX86_BUILTIN_STORERPS, IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_MAX }; # 2779 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" extern int const dbx_register_map[53]; extern int const dbx64_register_map[53]; extern int const svr4_dbx_register_map[53]; # 3106 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/i386.h" enum cmodel { CM_32, CM_SMALL, CM_KERNEL, CM_MEDIUM, CM_LARGE, CM_SMALL_PIC }; extern const char *ix86_cmodel_string; extern enum cmodel ix86_cmodel; extern const char *ix86_cpu_string; extern const char *ix86_arch_string; extern const char *ix86_regparm_string; extern const char *ix86_align_loops_string; extern const char *ix86_align_jumps_string; extern const char *ix86_align_funcs_string; extern const char *ix86_preferred_stack_boundary_string; extern const char *ix86_branch_cost_string; extern int ix86_regparm; extern int ix86_preferred_stack_boundary; extern int ix86_branch_cost; extern const char * const hi_reg_name[]; extern const char * const qi_reg_name[]; extern const char * const qi_high_reg_name[]; extern enum reg_class const regclass_map[]; extern struct rtx_def *ix86_compare_op0; extern struct rtx_def *ix86_compare_op1; # 4 "tconfig.h" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/att.h" 1 # 22 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/att.h" # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/unix.h" 1 # 23 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/att.h" 2 # 5 "tconfig.h" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/linux.h" 1 # 45 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/linux.h" # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/svr4.h" 1 # 46 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/svr4.h" # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/elfos.h" 1 # 84 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/elfos.h" # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/dbxelf.h" 1 # 85 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/elfos.h" 2 # 47 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/svr4.h" 2 # 46 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/linux.h" 2 # 6 "tconfig.h" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/linux.h" 1 # 234 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/linux.h" # 1 "/usr/include/signal.h" 1 3 # 29 "/usr/include/signal.h" 3 # 1 "/usr/include/features.h" 1 3 # 250 "/usr/include/features.h" 3 # 1 "/usr/include/sys/cdefs.h" 1 3 # 251 "/usr/include/features.h" 2 3 # 278 "/usr/include/features.h" 3 # 1 "/usr/include/gnu/stubs.h" 1 3 # 279 "/usr/include/features.h" 2 3 # 30 "/usr/include/signal.h" 2 3 # 1 "/usr/include/bits/sigset.h" 1 3 # 23 "/usr/include/bits/sigset.h" 3 typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; # 103 "/usr/include/bits/sigset.h" 3 extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); # 117 "/usr/include/bits/sigset.h" 3 extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { = unsigned long int __mask =3D (((unsigned long int) 1) << (((__sig) - 1) % (= 8 * sizeof (unsigned long int)))); unsigned long int __word =3D (((__sig) -= 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __m= ask) ? 1 : 0; } extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned = long int __mask =3D (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeo= f (unsigned long int)))); unsigned long int __word =3D (((__sig) - 1) / (8 = * sizeof (unsigned long int))); return ((__set->__val[__word] |=3D __mask),= 0); } extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned = long int __mask =3D (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeo= f (unsigned long int)))); unsigned long int __word =3D (((__sig) - 1) / (8 = * sizeof (unsigned long int))); return ((__set->__val[__word] &=3D ~__mask)= , 0); } # 34 "/usr/include/signal.h" 2 3 typedef __sig_atomic_t sig_atomic_t; typedef __sigset_t sigset_t; # 1 "/usr/include/bits/types.h" 1 3 # 26 "/usr/include/bits/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/bits/types.h" 2 3 # 1 "include/stddef.h" 1 3 # 199 "include/stddef.h" 3 typedef unsigned int size_t; # 30 "/usr/include/bits/types.h" 2 3 typedef unsigned char __u_char; typedef unsigned short __u_short; typedef unsigned int __u_int; typedef unsigned long __u_long; __extension__ typedef unsigned long long int __u_quad_t; __extension__ typedef long long int __quad_t; # 49 "/usr/include/bits/types.h" 3 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; typedef __quad_t *__qaddr_t; typedef __u_quad_t __dev_t; typedef __u_int __uid_t; typedef __u_int __gid_t; typedef __u_long __ino_t; typedef __u_int __mode_t; typedef __u_int __nlink_t; typedef long int __off_t; typedef __quad_t __loff_t; typedef int __pid_t; typedef int __ssize_t; typedef long int __rlim_t; typedef __quad_t __rlim64_t; typedef __u_int __id_t; typedef struct { int __val[2]; } __fsid_t; typedef int __daddr_t; typedef char *__caddr_t; typedef long int __time_t; typedef long int __swblk_t; typedef long int __clock_t; typedef unsigned long int __fd_mask; # 100 "/usr/include/bits/types.h" 3 typedef struct { __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))]; } __fd_set; typedef int __key_t; typedef unsigned short int __ipc_pid_t; typedef long int __blkcnt_t; typedef __quad_t __blkcnt64_t; typedef __u_long __fsblkcnt_t; typedef __u_quad_t __fsblkcnt64_t; typedef __u_long __fsfilcnt_t; typedef __u_quad_t __fsfilcnt64_t; typedef __u_long __ino64_t; typedef __loff_t __off64_t; typedef long int __t_scalar_t; typedef unsigned long int __t_uscalar_t; typedef int __intptr_t; # 56 "/usr/include/signal.h" 2 3 # 1 "/usr/include/bits/signum.h" 1 3 # 57 "/usr/include/signal.h" 2 3 # 71 "/usr/include/signal.h" 3 typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) ; # 86 "/usr/include/signal.h" 3 extern __sighandler_t signal (int __sig, __sighandler_t __handler) ; # 108 "/usr/include/signal.h" 3 extern int kill (__pid_t __pid, int __sig) ; extern int killpg (__pid_t __pgrp, int __sig) ; extern int raise (int __sig) ; extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ; extern int gsignal (int __sig) ; extern void psignal (int __sig, __const char *__s) ; # 138 "/usr/include/signal.h" 3 extern int __sigpause (int __sig_or_mask, int __is_sig) ; extern int sigpause (int __mask) ; # 163 "/usr/include/signal.h" 3 extern int sigblock (int __mask) ; extern int sigsetmask (int __mask) ; extern int siggetmask (void) ; # 183 "/usr/include/signal.h" 3 typedef __sighandler_t sig_t; # 1 "/usr/include/time.h" 1 3 # 83 "/usr/include/time.h" 3 struct timespec { long int tv_sec; long int tv_nsec; }; # 192 "/usr/include/signal.h" 2 3 # 1 "/usr/include/bits/siginfo.h" 1 3 # 29 "/usr/include/bits/siginfo.h" 3 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 / sizeof (int)) - 3)]; struct { __pid_t si_pid; __uid_t si_uid; } _kill; struct { unsigned int _timer1; unsigned int _timer2; } _timer; struct { __pid_t si_pid; __uid_t si_uid; sigval_t si_sigval; } _rt; struct { __pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime; } _sigchld; struct { void *si_addr; } _sigfault; struct { int si_band; int si_fd; } _sigpoll; } _sifields; } siginfo_t; # 113 "/usr/include/bits/siginfo.h" 3 enum { SI_SIGIO =3D -5, SI_ASYNCIO, SI_MESGQ, SI_TIMER, SI_QUEUE, SI_USER }; enum { ILL_ILLOPC =3D 1, ILL_ILLOPN, ILL_ILLADR, ILL_ILLTRP, ILL_PRVOPC, ILL_PRVREG, ILL_COPROC, ILL_BADSTK }; enum { FPE_INTDIV =3D 1, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB }; enum { SEGV_MAPERR =3D 1, SEGV_ACCERR }; enum { BUS_ADRALN =3D 1, BUS_ADRERR, BUS_OBJERR }; enum { TRAP_BRKPT =3D 1, TRAP_TRACE }; enum { CLD_EXITED =3D 1, CLD_KILLED, CLD_DUMPED, CLD_TRAPPED, CLD_STOPPED, CLD_CONTINUED }; enum { POLL_IN =3D 1, POLL_OUT, POLL_MSG, POLL_ERR, POLL_PRI, POLL_HUP }; # 246 "/usr/include/bits/siginfo.h" 3 typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 / sizeof (int)) - 3)]; struct { void (*_function) (sigval_t); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; enum { SIGEV_SIGNAL =3D 0, SIGEV_NONE, SIGEV_THREAD }; # 195 "/usr/include/signal.h" 2 3 extern int sigemptyset (sigset_t *__set) ; extern int sigfillset (sigset_t *__set) ; extern int sigaddset (sigset_t *__set, int __signo) ; extern int sigdelset (sigset_t *__set, int __signo) ; extern int sigismember (__const sigset_t *__set, int __signo) ; # 227 "/usr/include/signal.h" 3 # 1 "/usr/include/bits/sigaction.h" 1 3 # 25 "/usr/include/bits/sigaction.h" 3 struct sigaction { union { __sighandler_t sa_handler; void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; __sigset_t sa_mask; int sa_flags; void (*sa_restorer) (void); }; # 228 "/usr/include/signal.h" 2 3 extern int sigprocmask (int __how, __const sigset_t *__set, sigset_t *__ose= t) ; extern int sigsuspend (__const sigset_t *__set) ; extern int __sigaction (int __sig, __const struct sigaction *__act, struct = sigaction *__oact) ; extern int sigaction (int __sig, __const struct sigaction *__act, struct si= gaction *__oact) ; extern int sigpending (sigset_t *__set) ; extern int sigwait (__const sigset_t *__set, int *__sig) ; extern int sigwaitinfo (__const sigset_t *__set, siginfo_t *__info) ; extern int sigtimedwait (__const sigset_t *__set, siginfo_t *__info, __cons= t struct timespec *__timeout) ; extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) ; # 271 "/usr/include/signal.h" 3 extern __const char *__const _sys_siglist[64]; extern __const char *__const sys_siglist[64]; struct sigvec { __sighandler_t sv_handler; int sv_mask; int sv_flags; }; # 295 "/usr/include/signal.h" 3 extern int sigvec (int __sig, __const struct sigvec *__vec, struct sigvec *= __ovec) ; # 1 "/usr/include/bits/sigcontext.h" 1 3 # 28 "/usr/include/bits/sigcontext.h" 3 # 1 "/usr/include/asm/sigcontext.h" 1 3 # 12 "/usr/include/asm/sigcontext.h" 3 struct _fpreg { unsigned short significand[4]; unsigned short exponent; }; struct _fpstate { unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel; struct _fpreg _st[8]; unsigned long status; }; struct sigcontext { unsigned short gs, __gsh; unsigned short fs, __fsh; unsigned short es, __esh; unsigned short ds, __dsh; unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long esp; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; unsigned long trapno; unsigned long err; unsigned long eip; unsigned short cs, __csh; unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; struct _fpstate * fpstate; unsigned long oldmask; unsigned long cr2; }; # 29 "/usr/include/bits/sigcontext.h" 2 3 # 301 "/usr/include/signal.h" 2 3 extern int sigreturn (struct sigcontext *__scp) ; # 313 "/usr/include/signal.h" 3 extern int siginterrupt (int __sig, int __interrupt) ; # 1 "/usr/include/bits/sigstack.h" 1 3 # 26 "/usr/include/bits/sigstack.h" 3 struct sigstack { void * ss_sp; int ss_onstack; }; enum { SS_ONSTACK =3D 1, SS_DISABLE }; # 50 "/usr/include/bits/sigstack.h" 3 typedef struct sigaltstack { void * ss_sp; int ss_flags; size_t ss_size; } stack_t; # 316 "/usr/include/signal.h" 2 3 extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ; extern int sigaltstack (__const struct sigaltstack *__ss, struct sigaltstac= k *__oss) ; # 356 "/usr/include/signal.h" 3 extern int __libc_current_sigrtmin (void) ; extern int __libc_current_sigrtmax (void) ; # 235 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/linux.h" 2 # 1 "/usr/include/sys/ucontext.h" 1 3 # 22 "/usr/include/sys/ucontext.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/sys/ucontext.h" 2 3 # 1 "/usr/include/signal.h" 1 3 # 24 "/usr/include/sys/ucontext.h" 2 3 # 1 "/usr/include/bits/sigcontext.h" 1 3 # 28 "/usr/include/sys/ucontext.h" 2 3 # 1 "/usr/include/sys/user.h" 1 3 # 26 "/usr/include/sys/user.h" 3 struct user_fpregs_struct { long cwd; long swd; long twd; long fip; long fcs; long foo; long fos; long st_space [20]; }; struct user_regs_struct { long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; long xds; long xes; long xfs; long xgs; long orig_eax; long eip; long xcs; long eflags; long esp; long xss; }; struct user { struct user_regs_struct regs; int u_fpvalid; struct user_fpregs_struct i387; unsigned long int u_tsize; unsigned long int u_dsize; unsigned long int u_ssize; unsigned long start_code; unsigned long start_stack; long int signal; int reserved; struct user_regs_struct* u_ar0; struct user_fpregs_struct* u_fpstate; unsigned long magic; char u_comm [32]; int u_debugreg [8]; }; # 32 "/usr/include/sys/ucontext.h" 2 3 typedef int greg_t; typedef greg_t gregset_t[19]; # 89 "/usr/include/sys/ucontext.h" 3 struct _libc_fpreg { unsigned short int significand[4]; unsigned short int exponent; }; struct _libc_fpstate { unsigned long int cw; unsigned long int sw; unsigned long int tag; unsigned long int ipoff; unsigned long int cssel; unsigned long int dataoff; unsigned long int datasel; struct _libc_fpreg _st[8]; unsigned long int status; }; typedef struct _libc_fpstate *fpregset_t; typedef struct { gregset_t gregs; fpregset_t fpregs; unsigned long int oldmask; unsigned long int cr2; } mcontext_t; typedef struct ucontext { unsigned long int uc_flags; struct ucontext *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; __sigset_t uc_sigmask; struct _libc_fpstate __fpregs_mem; } ucontext_t; # 236 "/nfs/oz/home/oldham/gcc/gcc5/gcc/config/i386/linux.h" 2 # 7 "tconfig.h" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/defaults.h" 1 # 8 "tconfig.h" 2 # 1 "insn-codes.h" 1 enum insn_code { CODE_FOR_cmpdi_ccno_1_rex64 =3D 0, CODE_FOR_cmpdi_1_insn_rex64 =3D 2, CODE_FOR_cmpqi_ext_3_insn =3D 15, CODE_FOR_cmpqi_ext_3_insn_rex64 =3D 16, CODE_FOR_x86_fnstsw_1 =3D 30, CODE_FOR_x86_sahf_1 =3D 31, CODE_FOR_popsi1 =3D 42, CODE_FOR_movsi_insv_1 =3D 73, CODE_FOR_pushdi2_rex64 =3D 77, CODE_FOR_popdi1 =3D 80, CODE_FOR_swapxf =3D 105, CODE_FOR_swaptf =3D 106, CODE_FOR_zero_extendhisi2_and =3D 107, CODE_FOR_zero_extendsidi2_32 =3D 115, CODE_FOR_zero_extendsidi2_rex64 =3D 116, CODE_FOR_zero_extendhidi2 =3D 117, CODE_FOR_zero_extendqidi2 =3D 118, CODE_FOR_extendsidi2_rex64 =3D 120, CODE_FOR_extendhidi2 =3D 121, CODE_FOR_extendqidi2 =3D 122, CODE_FOR_extendhisi2 =3D 123, CODE_FOR_extendqihi2 =3D 125, CODE_FOR_extendqisi2 =3D 126, CODE_FOR_truncdfsf2_3 =3D 142, CODE_FOR_truncdfsf2_sse_only =3D 143, CODE_FOR_fix_truncsfdi_sse =3D 153, CODE_FOR_fix_truncdfdi_sse =3D 154, CODE_FOR_fix_truncsfsi_sse =3D 156, CODE_FOR_fix_truncdfsi_sse =3D 157, CODE_FOR_x86_fnstcw_1 =3D 159, CODE_FOR_x86_fldcw_1 =3D 160, CODE_FOR_floathisf2 =3D 161, CODE_FOR_floathidf2 =3D 167, CODE_FOR_floathixf2 =3D 173, CODE_FOR_floathitf2 =3D 174, CODE_FOR_floatsixf2 =3D 175, CODE_FOR_floatsitf2 =3D 176, CODE_FOR_floatdixf2 =3D 177, CODE_FOR_floatditf2 =3D 178, CODE_FOR_addqi3_cc =3D 185, CODE_FOR_addsi_1_zext =3D 202, CODE_FOR_addqi_ext_1 =3D 221, CODE_FOR_subdi3_carry_rex64 =3D 225, CODE_FOR_subsi3_carry =3D 229, CODE_FOR_subsi3_carry_zext =3D 230, CODE_FOR_mulqi3 =3D 247, CODE_FOR_umulqihi3 =3D 248, CODE_FOR_mulqihi3 =3D 249, CODE_FOR_umulditi3 =3D 250, CODE_FOR_umulsidi3 =3D 251, CODE_FOR_mulditi3 =3D 252, CODE_FOR_mulsidi3 =3D 253, CODE_FOR_umulsi3_highpart =3D 255, CODE_FOR_smulsi3_highpart =3D 258, CODE_FOR_divqi3 =3D 260, CODE_FOR_udivqi3 =3D 261, CODE_FOR_divmodhi4 =3D 268, CODE_FOR_udivmoddi4 =3D 269, CODE_FOR_udivmodsi4 =3D 271, CODE_FOR_testsi_1 =3D 275, CODE_FOR_andqi_ext_0 =3D 296, CODE_FOR_negsf2_memory =3D 349, CODE_FOR_negsf2_ifs =3D 350, CODE_FOR_negdf2_memory =3D 352, CODE_FOR_negdf2_ifs =3D 353, CODE_FOR_abssf2_memory =3D 368, CODE_FOR_abssf2_ifs =3D 369, CODE_FOR_absdf2_memory =3D 371, CODE_FOR_absdf2_ifs =3D 372, CODE_FOR_ashldi3_1 =3D 399, CODE_FOR_x86_shld_1 =3D 401, CODE_FOR_ashrdi3_63_rex64 =3D 412, CODE_FOR_ashrdi3_1 =3D 417, CODE_FOR_x86_shrd_1 =3D 419, CODE_FOR_ashrsi3_31 =3D 420, CODE_FOR_lshrdi3_1 =3D 442, CODE_FOR_setcc_2 =3D 481, CODE_FOR_jump =3D 496, CODE_FOR_indirect_jump =3D 497, CODE_FOR_tablejump =3D 498, CODE_FOR_doloop_end_internal =3D 500, CODE_FOR_blockage =3D 506, CODE_FOR_return_internal =3D 507, CODE_FOR_return_pop_internal =3D 508, CODE_FOR_return_indirect_internal =3D 509, CODE_FOR_nop =3D 510, CODE_FOR_prologue_set_got =3D 511, CODE_FOR_prologue_get_pc =3D 512, CODE_FOR_eh_return_1 =3D 513, CODE_FOR_leave =3D 514, CODE_FOR_leave_rex64 =3D 515, CODE_FOR_ffssi_1 =3D 516, CODE_FOR_sqrtsf2_1 =3D 547, CODE_FOR_sqrtsf2_1_sse_only =3D 548, CODE_FOR_sqrtsf2_i387 =3D 549, CODE_FOR_sqrtdf2_1 =3D 550, CODE_FOR_sqrtdf2_1_sse_only =3D 551, CODE_FOR_sqrtdf2_i387 =3D 552, CODE_FOR_sqrtxf2 =3D 554, CODE_FOR_sqrttf2 =3D 555, CODE_FOR_sindf2 =3D 560, CODE_FOR_sinsf2 =3D 561, CODE_FOR_sinxf2 =3D 563, CODE_FOR_sintf2 =3D 564, CODE_FOR_cosdf2 =3D 565, CODE_FOR_cossf2 =3D 566, CODE_FOR_cosxf2 =3D 568, CODE_FOR_costf2 =3D 569, CODE_FOR_cld =3D 570, CODE_FOR_strmovdi_rex_1 =3D 571, CODE_FOR_strmovsi_1 =3D 572, CODE_FOR_strmovsi_rex_1 =3D 573, CODE_FOR_strmovhi_1 =3D 574, CODE_FOR_strmovhi_rex_1 =3D 575, CODE_FOR_strmovqi_1 =3D 576, CODE_FOR_strmovqi_rex_1 =3D 577, CODE_FOR_rep_movdi_rex64 =3D 578, CODE_FOR_rep_movsi =3D 579, CODE_FOR_rep_movsi_rex64 =3D 580, CODE_FOR_rep_movqi =3D 581, CODE_FOR_rep_movqi_rex64 =3D 582, CODE_FOR_strsetdi_rex_1 =3D 583, CODE_FOR_strsetsi_1 =3D 584, CODE_FOR_strsetsi_rex_1 =3D 585, CODE_FOR_strsethi_1 =3D 586, CODE_FOR_strsethi_rex_1 =3D 587, CODE_FOR_strsetqi_1 =3D 588, CODE_FOR_strsetqi_rex_1 =3D 589, CODE_FOR_rep_stosdi_rex64 =3D 590, CODE_FOR_rep_stossi =3D 591, CODE_FOR_rep_stossi_rex64 =3D 592, CODE_FOR_rep_stosqi =3D 593, CODE_FOR_rep_stosqi_rex64 =3D 594, CODE_FOR_cmpstrqi_nz_1 =3D 595, CODE_FOR_cmpstrqi_nz_rex_1 =3D 596, CODE_FOR_cmpstrqi_1 =3D 597, CODE_FOR_cmpstrqi_rex_1 =3D 598, CODE_FOR_strlenqi_1 =3D 599, CODE_FOR_strlenqi_rex_1 =3D 600, CODE_FOR_x86_movdicc_0_m1_rex64 =3D 601, CODE_FOR_x86_movsicc_0_m1 =3D 603, CODE_FOR_pro_epilogue_adjust_stack_rex64 =3D 624, CODE_FOR_sse_movsfcc =3D 625, CODE_FOR_sse_movsfcc_eq =3D 626, CODE_FOR_sse_movdfcc =3D 627, CODE_FOR_sse_movdfcc_eq =3D 628, CODE_FOR_allocate_stack_worker_1 =3D 637, CODE_FOR_allocate_stack_worker_rex64 =3D 638, CODE_FOR_trap =3D 645, CODE_FOR_movv4sf_internal =3D 647, CODE_FOR_movv4si_internal =3D 648, CODE_FOR_movv8qi_internal =3D 649, CODE_FOR_movv4hi_internal =3D 650, CODE_FOR_movv2si_internal =3D 651, CODE_FOR_movti_internal =3D 658, CODE_FOR_sse_movaps =3D 659, CODE_FOR_sse_movups =3D 660, CODE_FOR_sse_movmskps =3D 661, CODE_FOR_mmx_pmovmskb =3D 662, CODE_FOR_mmx_maskmovq =3D 663, CODE_FOR_sse_movntv4sf =3D 664, CODE_FOR_sse_movntdi =3D 665, CODE_FOR_sse_movhlps =3D 666, CODE_FOR_sse_movlhps =3D 667, CODE_FOR_sse_movhps =3D 668, CODE_FOR_sse_movlps =3D 669, CODE_FOR_sse_loadss =3D 670, CODE_FOR_sse_movss =3D 671, CODE_FOR_sse_storess =3D 672, CODE_FOR_sse_shufps =3D 673, CODE_FOR_addv4sf3 =3D 674, CODE_FOR_vmaddv4sf3 =3D 675, CODE_FOR_subv4sf3 =3D 676, CODE_FOR_vmsubv4sf3 =3D 677, CODE_FOR_mulv4sf3 =3D 678, CODE_FOR_vmmulv4sf3 =3D 679, CODE_FOR_divv4sf3 =3D 680, CODE_FOR_vmdivv4sf3 =3D 681, CODE_FOR_rcpv4sf2 =3D 682, CODE_FOR_vmrcpv4sf2 =3D 683, CODE_FOR_rsqrtv4sf2 =3D 684, CODE_FOR_vmrsqrtv4sf2 =3D 685, CODE_FOR_sqrtv4sf2 =3D 686, CODE_FOR_vmsqrtv4sf2 =3D 687, CODE_FOR_sse_andti3 =3D 692, CODE_FOR_sse_nandti3 =3D 696, CODE_FOR_sse_iorti3 =3D 702, CODE_FOR_sse_xorti3 =3D 708, CODE_FOR_sse_clrti =3D 710, CODE_FOR_maskcmpv4sf3 =3D 711, CODE_FOR_maskncmpv4sf3 =3D 712, CODE_FOR_vmmaskcmpv4sf3 =3D 713, CODE_FOR_vmmaskncmpv4sf3 =3D 714, CODE_FOR_sse_comi =3D 715, CODE_FOR_sse_ucomi =3D 716, CODE_FOR_sse_unpckhps =3D 717, CODE_FOR_sse_unpcklps =3D 718, CODE_FOR_smaxv4sf3 =3D 719, CODE_FOR_vmsmaxv4sf3 =3D 720, CODE_FOR_sminv4sf3 =3D 721, CODE_FOR_vmsminv4sf3 =3D 722, CODE_FOR_cvtpi2ps =3D 723, CODE_FOR_cvtps2pi =3D 724, CODE_FOR_cvttps2pi =3D 725, CODE_FOR_cvtsi2ss =3D 726, CODE_FOR_cvtss2si =3D 727, CODE_FOR_cvttss2si =3D 728, CODE_FOR_addv8qi3 =3D 729, CODE_FOR_addv4hi3 =3D 730, CODE_FOR_addv2si3 =3D 731, CODE_FOR_ssaddv8qi3 =3D 732, CODE_FOR_ssaddv4hi3 =3D 733, CODE_FOR_usaddv8qi3 =3D 734, CODE_FOR_usaddv4hi3 =3D 735, CODE_FOR_subv8qi3 =3D 736, CODE_FOR_subv4hi3 =3D 737, CODE_FOR_subv2si3 =3D 738, CODE_FOR_sssubv8qi3 =3D 739, CODE_FOR_sssubv4hi3 =3D 740, CODE_FOR_ussubv8qi3 =3D 741, CODE_FOR_ussubv4hi3 =3D 742, CODE_FOR_mulv4hi3 =3D 743, CODE_FOR_smulv4hi3_highpart =3D 744, CODE_FOR_umulv4hi3_highpart =3D 745, CODE_FOR_mmx_pmaddwd =3D 746, CODE_FOR_mmx_iordi3 =3D 747, CODE_FOR_mmx_xordi3 =3D 748, CODE_FOR_mmx_clrdi =3D 749, CODE_FOR_mmx_anddi3 =3D 750, CODE_FOR_mmx_nanddi3 =3D 751, CODE_FOR_mmx_uavgv8qi3 =3D 752, CODE_FOR_mmx_uavgv4hi3 =3D 753, CODE_FOR_mmx_psadbw =3D 754, CODE_FOR_mmx_pinsrw =3D 755, CODE_FOR_mmx_pextrw =3D 756, CODE_FOR_mmx_pshufw =3D 757, CODE_FOR_eqv8qi3 =3D 758, CODE_FOR_eqv4hi3 =3D 759, CODE_FOR_eqv2si3 =3D 760, CODE_FOR_gtv8qi3 =3D 761, CODE_FOR_gtv4hi3 =3D 762, CODE_FOR_gtv2si3 =3D 763, CODE_FOR_umaxv8qi3 =3D 764, CODE_FOR_smaxv4hi3 =3D 765, CODE_FOR_uminv8qi3 =3D 766, CODE_FOR_sminv4hi3 =3D 767, CODE_FOR_ashrv4hi3 =3D 768, CODE_FOR_ashrv2si3 =3D 769, CODE_FOR_lshrv4hi3 =3D 770, CODE_FOR_lshrv2si3 =3D 771, CODE_FOR_mmx_lshrdi3 =3D 772, CODE_FOR_ashlv4hi3 =3D 773, CODE_FOR_ashlv2si3 =3D 774, CODE_FOR_mmx_ashldi3 =3D 775, CODE_FOR_mmx_packsswb =3D 776, CODE_FOR_mmx_packssdw =3D 777, CODE_FOR_mmx_packuswb =3D 778, CODE_FOR_mmx_punpckhbw =3D 779, CODE_FOR_mmx_punpckhwd =3D 780, CODE_FOR_mmx_punpckhdq =3D 781, CODE_FOR_mmx_punpcklbw =3D 782, CODE_FOR_mmx_punpcklwd =3D 783, CODE_FOR_mmx_punpckldq =3D 784, CODE_FOR_emms =3D 785, CODE_FOR_ldmxcsr =3D 786, CODE_FOR_stmxcsr =3D 787, CODE_FOR_prefetch =3D 789, CODE_FOR_cmpdi =3D 790, CODE_FOR_cmpsi =3D 791, CODE_FOR_cmphi =3D 792, CODE_FOR_cmpqi =3D 793, CODE_FOR_cmpdi_1_rex64 =3D 794, CODE_FOR_cmpsi_1 =3D 795, CODE_FOR_cmpqi_ext_3 =3D 796, CODE_FOR_cmpxf =3D 797, CODE_FOR_cmptf =3D 798, CODE_FOR_cmpdf =3D 799, CODE_FOR_cmpsf =3D 800, CODE_FOR_movsi =3D 802, CODE_FOR_movhi =3D 803, CODE_FOR_movstricthi =3D 804, CODE_FOR_movqi =3D 805, CODE_FOR_reload_outqi =3D 806, CODE_FOR_movstrictqi =3D 807, CODE_FOR_movdi =3D 808, CODE_FOR_movsf =3D 817, CODE_FOR_movdf =3D 821, CODE_FOR_movxf =3D 826, CODE_FOR_movtf =3D 827, CODE_FOR_zero_extendhisi2 =3D 834, CODE_FOR_zero_extendqihi2 =3D 836, CODE_FOR_zero_extendqisi2 =3D 840, CODE_FOR_zero_extendsidi2 =3D 844, CODE_FOR_extendsidi2 =3D 848, CODE_FOR_extendsfdf2 =3D 860, CODE_FOR_extendsfxf2 =3D 861, CODE_FOR_extendsftf2 =3D 862, CODE_FOR_extenddfxf2 =3D 863, CODE_FOR_extenddftf2 =3D 864, CODE_FOR_truncdfsf2 =3D 865, CODE_FOR_truncxfsf2 =3D 869, CODE_FOR_trunctfsf2 =3D 872, CODE_FOR_truncxfdf2 =3D 875, CODE_FOR_trunctfdf2 =3D 878, CODE_FOR_fix_truncxfdi2 =3D 881, CODE_FOR_fix_trunctfdi2 =3D 882, CODE_FOR_fix_truncdfdi2 =3D 883, CODE_FOR_fix_truncsfdi2 =3D 884, CODE_FOR_fix_truncxfsi2 =3D 886, CODE_FOR_fix_trunctfsi2 =3D 887, CODE_FOR_fix_truncdfsi2 =3D 888, CODE_FOR_fix_truncsfsi2 =3D 889, CODE_FOR_fix_truncxfhi2 =3D 891, CODE_FOR_fix_trunctfhi2 =3D 892, CODE_FOR_fix_truncdfhi2 =3D 893, CODE_FOR_fix_truncsfhi2 =3D 894, CODE_FOR_floatsisf2 =3D 896, CODE_FOR_floatdisf2 =3D 897, CODE_FOR_floatsidf2 =3D 898, CODE_FOR_floatdidf2 =3D 899, CODE_FOR_adddi3 =3D 901, CODE_FOR_addsi3 =3D 903, CODE_FOR_addhi3 =3D 913, CODE_FOR_addqi3 =3D 914, CODE_FOR_addxf3 =3D 915, CODE_FOR_addtf3 =3D 916, CODE_FOR_adddf3 =3D 917, CODE_FOR_addsf3 =3D 918, CODE_FOR_subdi3 =3D 919, CODE_FOR_subsi3 =3D 921, CODE_FOR_subhi3 =3D 922, CODE_FOR_subqi3 =3D 923, CODE_FOR_subxf3 =3D 924, CODE_FOR_subtf3 =3D 925, CODE_FOR_subdf3 =3D 926, CODE_FOR_subsf3 =3D 927, CODE_FOR_muldi3 =3D 928, CODE_FOR_mulsi3 =3D 929, CODE_FOR_mulhi3 =3D 930, CODE_FOR_mulxf3 =3D 931, CODE_FOR_multf3 =3D 932, CODE_FOR_muldf3 =3D 933, CODE_FOR_mulsf3 =3D 934, CODE_FOR_divxf3 =3D 935, CODE_FOR_divtf3 =3D 936, CODE_FOR_divdf3 =3D 937, CODE_FOR_divsf3 =3D 938, CODE_FOR_divmoddi4 =3D 939, CODE_FOR_divmodsi4 =3D 941, CODE_FOR_udivmodhi4 =3D 945, CODE_FOR_testsi_ccno_1 =3D 946, CODE_FOR_testqi_ccz_1 =3D 947, CODE_FOR_testqi_ext_ccno_0 =3D 948, CODE_FOR_anddi3 =3D 950, CODE_FOR_andsi3 =3D 951, CODE_FOR_andhi3 =3D 955, CODE_FOR_andqi3 =3D 956, CODE_FOR_iordi3 =3D 957, CODE_FOR_iorsi3 =3D 958, CODE_FOR_iorhi3 =3D 959, CODE_FOR_iorqi3 =3D 960, CODE_FOR_xordi3 =3D 961, CODE_FOR_xorsi3 =3D 962, CODE_FOR_xorhi3 =3D 963, CODE_FOR_xorqi3 =3D 964, CODE_FOR_xorqi_cc_ext_1 =3D 965, CODE_FOR_negdi2 =3D 966, CODE_FOR_negsi2 =3D 968, CODE_FOR_neghi2 =3D 969, CODE_FOR_negqi2 =3D 970, CODE_FOR_negsf2 =3D 971, CODE_FOR_negdf2 =3D 978, CODE_FOR_negxf2 =3D 985, CODE_FOR_negtf2 =3D 986, CODE_FOR_abssf2 =3D 991, CODE_FOR_absdf2 =3D 998, CODE_FOR_absxf2 =3D 1004, CODE_FOR_abstf2 =3D 1005, CODE_FOR_one_cmpldi2 =3D 1010, CODE_FOR_one_cmplsi2 =3D 1012, CODE_FOR_one_cmplhi2 =3D 1015, CODE_FOR_one_cmplqi2 =3D 1017, CODE_FOR_ashldi3 =3D 1019, CODE_FOR_x86_shift_adj_1 =3D 1023, CODE_FOR_x86_shift_adj_2 =3D 1024, CODE_FOR_ashlsi3 =3D 1025, CODE_FOR_ashlhi3 =3D 1028, CODE_FOR_ashlqi3 =3D 1029, CODE_FOR_ashrdi3 =3D 1030, CODE_FOR_x86_shift_adj_3 =3D 1033, CODE_FOR_ashrsi3 =3D 1034, CODE_FOR_ashrhi3 =3D 1035, CODE_FOR_ashrqi3 =3D 1036, CODE_FOR_lshrdi3 =3D 1037, CODE_FOR_lshrsi3 =3D 1040, CODE_FOR_lshrhi3 =3D 1041, CODE_FOR_lshrqi3 =3D 1042, CODE_FOR_rotldi3 =3D 1043, CODE_FOR_rotlsi3 =3D 1044, CODE_FOR_rotlhi3 =3D 1045, CODE_FOR_rotlqi3 =3D 1046, CODE_FOR_rotrdi3 =3D 1047, CODE_FOR_rotrsi3 =3D 1048, CODE_FOR_rotrhi3 =3D 1049, CODE_FOR_rotrqi3 =3D 1050, CODE_FOR_extv =3D 1051, CODE_FOR_extzv =3D 1052, CODE_FOR_insv =3D 1053, CODE_FOR_seq =3D 1054, CODE_FOR_sne =3D 1055, CODE_FOR_sgt =3D 1056, CODE_FOR_sgtu =3D 1057, CODE_FOR_slt =3D 1058, CODE_FOR_sltu =3D 1059, CODE_FOR_sge =3D 1060, CODE_FOR_sgeu =3D 1061, CODE_FOR_sle =3D 1062, CODE_FOR_sleu =3D 1063, CODE_FOR_sunordered =3D 1064, CODE_FOR_sordered =3D 1065, CODE_FOR_suneq =3D 1066, CODE_FOR_sunge =3D 1067, CODE_FOR_sungt =3D 1068, CODE_FOR_sunle =3D 1069, CODE_FOR_sunlt =3D 1070, CODE_FOR_sltgt =3D 1071, CODE_FOR_beq =3D 1072, CODE_FOR_bne =3D 1073, CODE_FOR_bgt =3D 1074, CODE_FOR_bgtu =3D 1075, CODE_FOR_blt =3D 1076, CODE_FOR_bltu =3D 1077, CODE_FOR_bge =3D 1078, CODE_FOR_bgeu =3D 1079, CODE_FOR_ble =3D 1080, CODE_FOR_bleu =3D 1081, CODE_FOR_bunordered =3D 1082, CODE_FOR_bordered =3D 1083, CODE_FOR_buneq =3D 1084, CODE_FOR_bunge =3D 1085, CODE_FOR_bungt =3D 1086, CODE_FOR_bunle =3D 1087, CODE_FOR_bunlt =3D 1088, CODE_FOR_bltgt =3D 1089, CODE_FOR_casesi =3D 1092, CODE_FOR_doloop_end =3D 1093, CODE_FOR_call_pop =3D 1096, CODE_FOR_call =3D 1097, CODE_FOR_call_exp =3D 1098, CODE_FOR_call_value_pop =3D 1099, CODE_FOR_call_value =3D 1100, CODE_FOR_call_value_exp =3D 1101, CODE_FOR_untyped_call =3D 1102, CODE_FOR_return =3D 1103, CODE_FOR_prologue =3D 1104, CODE_FOR_epilogue =3D 1105, CODE_FOR_sibcall_epilogue =3D 1106, CODE_FOR_eh_return =3D 1107, CODE_FOR_ffssi2 =3D 1109, CODE_FOR_sqrtsf2 =3D 1112, CODE_FOR_sqrtdf2 =3D 1113, CODE_FOR_movstrsi =3D 1114, CODE_FOR_movstrdi =3D 1115, CODE_FOR_strmovdi_rex64 =3D 1116, CODE_FOR_strmovsi =3D 1117, CODE_FOR_strmovsi_rex64 =3D 1118, CODE_FOR_strmovhi =3D 1119, CODE_FOR_strmovhi_rex64 =3D 1120, CODE_FOR_strmovqi =3D 1121, CODE_FOR_strmovqi_rex64 =3D 1122, CODE_FOR_clrstrsi =3D 1123, CODE_FOR_clrstrdi =3D 1124, CODE_FOR_strsetdi_rex64 =3D 1125, CODE_FOR_strsetsi =3D 1126, CODE_FOR_strsetsi_rex64 =3D 1127, CODE_FOR_strsethi =3D 1128, CODE_FOR_strsethi_rex64 =3D 1129, CODE_FOR_strsetqi =3D 1130, CODE_FOR_strsetqi_rex64 =3D 1131, CODE_FOR_cmpstrsi =3D 1132, CODE_FOR_cmpintqi =3D 1133, CODE_FOR_strlensi =3D 1134, CODE_FOR_strlendi =3D 1135, CODE_FOR_movdicc_rex64 =3D 1138, CODE_FOR_movsicc =3D 1139, CODE_FOR_movhicc =3D 1140, CODE_FOR_movsfcc =3D 1141, CODE_FOR_movdfcc =3D 1142, CODE_FOR_movxfcc =3D 1144, CODE_FOR_movtfcc =3D 1145, CODE_FOR_minsf3 =3D 1146, CODE_FOR_mindf3 =3D 1149, CODE_FOR_maxsf3 =3D 1152, CODE_FOR_maxdf3 =3D 1155, CODE_FOR_pro_epilogue_adjust_stack =3D 1158, CODE_FOR_allocate_stack_worker =3D 1162, CODE_FOR_allocate_stack =3D 1163, CODE_FOR_builtin_setjmp_receiver =3D 1164, CODE_FOR_conditional_trap =3D 1227, CODE_FOR_movti =3D 1228, CODE_FOR_movv4sf =3D 1229, CODE_FOR_movv4si =3D 1230, CODE_FOR_movv2si =3D 1231, CODE_FOR_movv4hi =3D 1232, CODE_FOR_movv8qi =3D 1233, CODE_FOR_sfence =3D 1240, CODE_FOR_nothing =3D 1241 }; struct rtx_def; # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" 1 # 29 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" enum machine_mode { # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.def" 1 # 67 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.def" VOIDmode, BImode, QImode, HImode, SImode, DImode, TImode, OImode, PQImode, PHImode, PSImode, PDImode, QFmode, HFmode, TQFmode, SFmode, DFmode, XFmode, TFmode, QCmode, HCmode, SCmode, DCmode, XCmode, TCmode, CQImode, CHImode, CSImode, CDImode, CTImode, COImode, V2QImode, V2HImode, V2SImode, V2DImode, V4QImode, V4HImode, V4SImode, V4DImode, V8QImode, V8HImode, V8SImode, V8DImode, V16QImode, V2SFmode, V2DFmode, V4SFmode, V4DFmode, V8SFmode, V8DFmode, BLKmode, # 148 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.def" CCmode, CCGCmode, CCGOCmode, CCNOmode, CCZmode, CCFPmode, CCFPUmode, # 31 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" 2 MAX_MACHINE_MODE }; # 41 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" extern const char * const mode_name[]; enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE= _CC, MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MODE_VECTOR_INT, MODE_VECTOR_FLOAT, MAX_MODE_CLASS}; extern const enum mode_class mode_class[]; # 80 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" extern const unsigned int mode_size[]; extern const unsigned int mode_unit_size[]; # 96 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" extern const unsigned int mode_bitsize[]; # 117 "/nfs/oz/home/oldham/gcc/gcc5/gcc/machmode.h" extern const unsigned char mode_wider_mode[]; extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int); extern enum machine_mode smallest_mode_for_size (unsigned int, enum mode_class); extern enum machine_mode int_mode_for_mode (enum machine_mode); extern enum machine_mode get_best_mode (int, int, unsigned int, enum machin= e_mode, int); extern unsigned get_mode_alignment (enum machine_mode); extern const enum machine_mode class_narrowest_mode[]; extern enum machine_mode byte_mode; extern enum machine_mode word_mode; extern enum machine_mode ptr_mode; # 521 "insn-codes.h" 2 extern int x86_64_immediate_operand (struct rtx_def *, enum machine_mode); extern int x86_64_nonmemory_operand (struct rtx_def *, enum machine_mode); extern int x86_64_movabs_operand (struct rtx_def *, enum machine_mode); extern int x86_64_szext_nonmemory_operand (struct rtx_def *, enum machine_m= ode); extern int x86_64_general_operand (struct rtx_def *, enum machine_mode); extern int x86_64_szext_general_operand (struct rtx_def *, enum machine_mod= e); extern int x86_64_zext_immediate_operand (struct rtx_def *, enum machine_mo= de); extern int shiftdi_operand (struct rtx_def *, enum machine_mode); extern int const_int_1_operand (struct rtx_def *, enum machine_mode); extern int symbolic_operand (struct rtx_def *, enum machine_mode); extern int aligned_operand (struct rtx_def *, enum machine_mode); extern int pic_symbolic_operand (struct rtx_def *, enum machine_mode); extern int call_insn_operand (struct rtx_def *, enum machine_mode); extern int constant_call_address_operand (struct rtx_def *, enum machine_mo= de); extern int const0_operand (struct rtx_def *, enum machine_mode); extern int const1_operand (struct rtx_def *, enum machine_mode); extern int const248_operand (struct rtx_def *, enum machine_mode); extern int incdec_operand (struct rtx_def *, enum machine_mode); extern int mmx_reg_operand (struct rtx_def *, enum machine_mode); extern int reg_no_sp_operand (struct rtx_def *, enum machine_mode); extern int general_no_elim_operand (struct rtx_def *, enum machine_mode); extern int nonmemory_no_elim_operand (struct rtx_def *, enum machine_mode); extern int q_regs_operand (struct rtx_def *, enum machine_mode); extern int non_q_regs_operand (struct rtx_def *, enum machine_mode); extern int fcmov_comparison_operator (struct rtx_def *, enum machine_mode); extern int sse_comparison_operator (struct rtx_def *, enum machine_mode); extern int ix86_comparison_operator (struct rtx_def *, enum machine_mode); extern int cmp_fp_expander_operand (struct rtx_def *, enum machine_mode); extern int ext_register_operand (struct rtx_def *, enum machine_mode); extern int binary_fp_operator (struct rtx_def *, enum machine_mode); extern int mult_operator (struct rtx_def *, enum machine_mode); extern int div_operator (struct rtx_def *, enum machine_mode); extern int arith_or_logical_operator (struct rtx_def *, enum machine_mode); extern int promotable_binary_operator (struct rtx_def *, enum machine_mode); extern int memory_displacement_operand (struct rtx_def *, enum machine_mode= ); extern int cmpsi_operand (struct rtx_def *, enum machine_mode); extern int long_memory_operand (struct rtx_def *, enum machine_mode); # 14 "tconfig.h" 2 # 1 "insn-flags.h" 1 # 549 "insn-flags.h" struct rtx_def; extern struct rtx_def *gen_cmpdi_ccno_1_rex64 (struct rtx_def *, struct rtx= _def *); extern struct rtx_def *gen_cmpdi_1_insn_rex64 (struct rtx_def *, struct rtx= _def *); extern struct rtx_def *gen_cmpqi_ext_3_insn (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_cmpqi_ext_3_insn_rex64 (struct rtx_def *, struct= rtx_def *); extern struct rtx_def *gen_x86_fnstsw_1 (struct rtx_def *); extern struct rtx_def *gen_x86_sahf_1 (struct rtx_def *); extern struct rtx_def *gen_popsi1 (struct rtx_def *); extern struct rtx_def *gen_movsi_insv_1 (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_pushdi2_rex64 (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_popdi1 (struct rtx_def *); extern struct rtx_def *gen_swapxf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_swaptf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_zero_extendhisi2_and (struct rtx_def *, struct r= tx_def *); extern struct rtx_def *gen_zero_extendsidi2_32 (struct rtx_def *, struct rt= x_def *); extern struct rtx_def *gen_zero_extendsidi2_rex64 (struct rtx_def *, struct= rtx_def *); extern struct rtx_def *gen_zero_extendhidi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_zero_extendqidi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_extendsidi2_rex64 (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_extendhidi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendqidi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendhisi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendqihi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendqisi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_truncdfsf2_3 (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_truncdfsf2_sse_only (struct rtx_def *, struct rt= x_def *); extern struct rtx_def *gen_fix_truncsfdi_sse (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_fix_truncdfdi_sse (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_fix_truncsfsi_sse (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_fix_truncdfsi_sse (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_x86_fnstcw_1 (struct rtx_def *); extern struct rtx_def *gen_x86_fldcw_1 (struct rtx_def *); extern struct rtx_def *gen_floathisf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floathidf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floathixf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floathitf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatsixf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatsitf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatdixf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatditf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_addqi3_cc (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_addsi_1_zext (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_addqi_ext_1 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_subdi3_carry_rex64 (struct rtx_def *, struct rtx= _def *, struct rtx_def *); extern struct rtx_def *gen_subsi3_carry (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_subsi3_carry_zext (struct rtx_def *, struct rtx_= def *, struct rtx_def *); extern struct rtx_def *gen_mulqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_umulqihi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_mulqihi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_umulditi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_umulsidi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_mulditi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_mulsidi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_umulsi3_highpart (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *); extern struct rtx_def *gen_smulsi3_highpart (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *); extern struct rtx_def *gen_divqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_udivqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_divmodhi4 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_udivmoddi4 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_udivmodsi4 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_testsi_1 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_andqi_ext_0 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_negsf2_memory (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_negsf2_ifs (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_negdf2_memory (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_negdf2_ifs (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_abssf2_memory (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_abssf2_ifs (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_absdf2_memory (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_absdf2_ifs (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ashldi3_1 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_x86_shld_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ashrdi3_63_rex64 (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *); extern struct rtx_def *gen_ashrdi3_1 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_x86_shrd_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ashrsi3_31 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_lshrdi3_1 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_setcc_2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_jump (struct rtx_def *); extern struct rtx_def *gen_indirect_jump (struct rtx_def *); extern struct rtx_def *gen_tablejump (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_doloop_end_internal (struct rtx_def *, struct rt= x_def *, struct rtx_def *); extern struct rtx_def *gen_blockage (void); extern struct rtx_def *gen_return_internal (void); extern struct rtx_def *gen_return_pop_internal (struct rtx_def *); extern struct rtx_def *gen_return_indirect_internal (struct rtx_def *); extern struct rtx_def *gen_nop (void); extern struct rtx_def *gen_prologue_set_got (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *); extern struct rtx_def *gen_prologue_get_pc (struct rtx_def *, struct rtx_de= f *); extern struct rtx_def *gen_eh_return_1 (struct rtx_def *); extern struct rtx_def *gen_leave (void); extern struct rtx_def *gen_leave_rex64 (void); extern struct rtx_def *gen_ffssi_1 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrtsf2_1 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrtsf2_1_sse_only (struct rtx_def *, struct rtx= _def *); extern struct rtx_def *gen_sqrtsf2_i387 (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_sqrtdf2_1 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrtdf2_1_sse_only (struct rtx_def *, struct rtx= _def *); extern struct rtx_def *gen_sqrtdf2_i387 (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_sqrtxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrttf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sindf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sinsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sinxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sintf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cosdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cossf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cosxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_costf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cld (void); extern struct rtx_def *gen_strmovdi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovsi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovsi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovhi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovhi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovqi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovqi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_movdi_rex64 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_rep_movsi (struct rtx_def *, struct rtx_def *, s= truct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_movsi_rex64 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_rep_movqi (struct rtx_def *, struct rtx_def *, s= truct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_movqi_rex64 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_strsetdi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_strsetsi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_strsetsi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_strsethi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_strsethi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_strsetqi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_strsetqi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_rep_stosdi_rex64 (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_stossi (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_stossi_rex64 (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_stosqi (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_rep_stosqi_rex64 (struct rtx_def *, struct rtx_d= ef *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpstrqi_nz_1 (struct rtx_def *, struct rtx_def = *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_cmpstrqi_nz_rex_1 (struct rtx_def *, struct rtx_= def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_cmpstrqi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_cmpstrqi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_strlenqi_1 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strlenqi_rex_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_x86_movdicc_0_m1_rex64 (struct rtx_def *); extern struct rtx_def *gen_x86_movsicc_0_m1 (struct rtx_def *); extern struct rtx_def *gen_pro_epilogue_adjust_stack_rex64 (struct rtx_def = *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movsfcc (struct rtx_def *, struct rtx_def *,= struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movsfcc_eq (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movdfcc (struct rtx_def *, struct rtx_def *,= struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movdfcc_eq (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_allocate_stack_worker_1 (struct rtx_def *); extern struct rtx_def *gen_allocate_stack_worker_rex64 (struct rtx_def *); extern struct rtx_def *gen_trap (void); extern struct rtx_def *gen_movv4sf_internal (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movv4si_internal (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movv8qi_internal (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movv4hi_internal (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movv2si_internal (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movti_internal (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_sse_movaps (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movups (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movmskps (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_mmx_pmovmskb (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_mmx_maskmovq (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_sse_movntv4sf (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_sse_movntdi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movhlps (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_sse_movlhps (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_sse_movhps (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sse_movlps (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sse_loadss (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_movss (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_sse_storess (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_shufps (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_addv4sf3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_vmaddv4sf3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_subv4sf3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_vmsubv4sf3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mulv4sf3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_vmmulv4sf3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_divv4sf3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_vmdivv4sf3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_rcpv4sf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_vmrcpv4sf2 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_rsqrtv4sf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_vmrsqrtv4sf2 (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_sqrtv4sf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_vmsqrtv4sf2 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_sse_andti3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sse_nandti3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_sse_iorti3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sse_xorti3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sse_clrti (struct rtx_def *); extern struct rtx_def *gen_maskcmpv4sf3 (struct rtx_def *, struct rtx_def *= , struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_maskncmpv4sf3 (struct rtx_def *, struct rtx_def = *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_vmmaskcmpv4sf3 (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_vmmaskncmpv4sf3 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sse_comi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_sse_ucomi (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_sse_unpckhps (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_sse_unpcklps (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_smaxv4sf3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_vmsmaxv4sf3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_sminv4sf3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_vmsminv4sf3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_cvtpi2ps (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_cvtps2pi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cvttps2pi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cvtsi2ss (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_cvtss2si (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cvttss2si (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_addv8qi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_addv4hi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_addv2si3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_ssaddv8qi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ssaddv4hi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_usaddv8qi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_usaddv4hi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_subv8qi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_subv4hi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_subv2si3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_sssubv8qi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_sssubv4hi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ussubv8qi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_ussubv4hi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mulv4hi3 (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_smulv4hi3_highpart (struct rtx_def *, struct rtx= _def *, struct rtx_def *); extern struct rtx_def *gen_umulv4hi3_highpart (struct rtx_def *, struct rtx= _def *, struct rtx_def *); extern struct rtx_def *gen_mmx_pmaddwd (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_mmx_iordi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mmx_xordi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mmx_clrdi (struct rtx_def *); extern struct rtx_def *gen_mmx_anddi3 (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mmx_nanddi3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_mmx_uavgv8qi3 (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_uavgv4hi3 (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_psadbw (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mmx_pinsrw (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_mmx_pextrw (struct rtx_def *, struct rtx_def *, = struct rtx_def *); extern struct rtx_def *gen_mmx_pshufw (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_eqv8qi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_eqv4hi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_eqv2si3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_gtv8qi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_gtv4hi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_gtv2si3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_umaxv8qi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_smaxv4hi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_uminv8qi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_sminv4hi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_ashrv4hi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_ashrv2si3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_lshrv4hi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_lshrv2si3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_mmx_lshrdi3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_ashlv4hi3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_ashlv2si3 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *); extern struct rtx_def *gen_mmx_ashldi3 (struct rtx_def *, struct rtx_def *,= struct rtx_def *); extern struct rtx_def *gen_mmx_packsswb (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_mmx_packssdw (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_mmx_packuswb (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_mmx_punpckhbw (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_punpckhwd (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_punpckhdq (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_punpcklbw (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_punpcklwd (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_mmx_punpckldq (struct rtx_def *, struct rtx_def = *, struct rtx_def *); extern struct rtx_def *gen_emms (void); extern struct rtx_def *gen_ldmxcsr (struct rtx_def *); extern struct rtx_def *gen_stmxcsr (struct rtx_def *); extern struct rtx_def *gen_prefetch (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpdi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpsi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmphi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpqi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpdi_1_rex64 (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_cmpsi_1 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpqi_ext_3 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpxf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmptf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpdf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpsf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movsi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movhi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movstricthi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movqi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_reload_outqi (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_movstrictqi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movdi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movsf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movdf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movxf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movtf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_zero_extendhisi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_zero_extendqihi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_zero_extendqisi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_zero_extendsidi2 (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_extendsidi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendsfdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendsfxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extendsftf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extenddfxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extenddftf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_truncdfsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_truncxfsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_trunctfsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_truncxfdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_trunctfdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_fix_truncxfdi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_trunctfdi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncdfdi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncsfdi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncxfsi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_trunctfsi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncdfsi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncsfsi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncxfhi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_trunctfhi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncdfhi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_fix_truncsfhi2 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_floatsisf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatdisf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatsidf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_floatdidf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_adddi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addxf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addtf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_adddf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_addsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subdi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subxf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subtf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subdf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_subsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_muldi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_mulsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_mulhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_mulxf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_multf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_muldf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_mulsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_divxf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_divtf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_divdf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_divsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_divmoddi4 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_divmodsi4 (struct rtx_def *, struct rtx_def *, s= truct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_udivmodhi4 (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_testsi_ccno_1 (struct rtx_def *, struct rtx_def = *); extern struct rtx_def *gen_testqi_ccz_1 (struct rtx_def *, struct rtx_def *= ); extern struct rtx_def *gen_testqi_ext_ccno_0 (struct rtx_def *, struct rtx_= def *); extern struct rtx_def *gen_anddi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_andsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_andhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_andqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_iordi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_iorsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_iorhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_iorqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_xordi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_xorsi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_xorhi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_xorqi3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_xorqi_cc_ext_1 (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_negdi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negsi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_neghi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negqi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_negtf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_abssf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_absdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_absxf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_abstf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_one_cmpldi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_one_cmplsi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_one_cmplhi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_one_cmplqi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_ashldi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_x86_shift_adj_1 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_x86_shift_adj_2 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *); extern struct rtx_def *gen_ashlsi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_ashlhi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_ashlqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_ashrdi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_x86_shift_adj_3 (struct rtx_def *, struct rtx_de= f *, struct rtx_def *); extern struct rtx_def *gen_ashrsi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_ashrhi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_ashrqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_lshrdi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_lshrsi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_lshrhi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_lshrqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotldi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotlsi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotlhi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotlqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotrdi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotrsi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotrhi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_rotrqi3 (struct rtx_def *, struct rtx_def *, str= uct rtx_def *); extern struct rtx_def *gen_extv (struct rtx_def *, struct rtx_def *, struct= rtx_def *, struct rtx_def *); extern struct rtx_def *gen_extzv (struct rtx_def *, struct rtx_def *, struc= t rtx_def *, struct rtx_def *); extern struct rtx_def *gen_insv (struct rtx_def *, struct rtx_def *, struct= rtx_def *, struct rtx_def *); extern struct rtx_def *gen_seq (struct rtx_def *); extern struct rtx_def *gen_sne (struct rtx_def *); extern struct rtx_def *gen_sgt (struct rtx_def *); extern struct rtx_def *gen_sgtu (struct rtx_def *); extern struct rtx_def *gen_slt (struct rtx_def *); extern struct rtx_def *gen_sltu (struct rtx_def *); extern struct rtx_def *gen_sge (struct rtx_def *); extern struct rtx_def *gen_sgeu (struct rtx_def *); extern struct rtx_def *gen_sle (struct rtx_def *); extern struct rtx_def *gen_sleu (struct rtx_def *); extern struct rtx_def *gen_sunordered (struct rtx_def *); extern struct rtx_def *gen_sordered (struct rtx_def *); extern struct rtx_def *gen_suneq (struct rtx_def *); extern struct rtx_def *gen_sunge (struct rtx_def *); extern struct rtx_def *gen_sungt (struct rtx_def *); extern struct rtx_def *gen_sunle (struct rtx_def *); extern struct rtx_def *gen_sunlt (struct rtx_def *); extern struct rtx_def *gen_sltgt (struct rtx_def *); extern struct rtx_def *gen_beq (struct rtx_def *); extern struct rtx_def *gen_bne (struct rtx_def *); extern struct rtx_def *gen_bgt (struct rtx_def *); extern struct rtx_def *gen_bgtu (struct rtx_def *); extern struct rtx_def *gen_blt (struct rtx_def *); extern struct rtx_def *gen_bltu (struct rtx_def *); extern struct rtx_def *gen_bge (struct rtx_def *); extern struct rtx_def *gen_bgeu (struct rtx_def *); extern struct rtx_def *gen_ble (struct rtx_def *); extern struct rtx_def *gen_bleu (struct rtx_def *); extern struct rtx_def *gen_bunordered (struct rtx_def *); extern struct rtx_def *gen_bordered (struct rtx_def *); extern struct rtx_def *gen_buneq (struct rtx_def *); extern struct rtx_def *gen_bunge (struct rtx_def *); extern struct rtx_def *gen_bungt (struct rtx_def *); extern struct rtx_def *gen_bunle (struct rtx_def *); extern struct rtx_def *gen_bunlt (struct rtx_def *); extern struct rtx_def *gen_bltgt (struct rtx_def *); extern struct rtx_def *gen_casesi (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_doloop_end (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_call_pop (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_call (struct rtx_def *, struct rtx_def *, struct= rtx_def *); extern struct rtx_def *gen_call_exp (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_call_value_pop (struct rtx_def *, struct rtx_def= *, struct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_call_value (struct rtx_def *, struct rtx_def *, = struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_call_value_exp (struct rtx_def *, struct rtx_def= *, struct rtx_def *); extern struct rtx_def *gen_untyped_call (struct rtx_def *, struct rtx_def *= , struct rtx_def *); extern struct rtx_def *gen_return (void); extern struct rtx_def *gen_prologue (void); extern struct rtx_def *gen_epilogue (void); extern struct rtx_def *gen_sibcall_epilogue (void); extern struct rtx_def *gen_eh_return (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_ffssi2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrtsf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sqrtdf2 (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movstrsi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movstrdi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovdi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strmovsi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovsi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strmovhi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovhi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strmovqi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strmovqi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_clrstrsi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_clrstrdi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *); extern struct rtx_def *gen_strsetdi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strsetsi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strsetsi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strsethi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strsethi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_strsetqi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strsetqi_rex64 (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_cmpstrsi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_cmpintqi (struct rtx_def *); extern struct rtx_def *gen_strlensi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_strlendi (struct rtx_def *, struct rtx_def *, st= ruct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movdicc_rex64 (struct rtx_def *, struct rtx_def = *, struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movsicc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movhicc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movsfcc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movdfcc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movxfcc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movtfcc (struct rtx_def *, struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_minsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_mindf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_maxsf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_maxdf3 (struct rtx_def *, struct rtx_def *, stru= ct rtx_def *); extern struct rtx_def *gen_pro_epilogue_adjust_stack (struct rtx_def *, str= uct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_allocate_stack_worker (struct rtx_def *); extern struct rtx_def *gen_allocate_stack (struct rtx_def *, struct rtx_def= *); extern struct rtx_def *gen_builtin_setjmp_receiver (struct rtx_def *); extern struct rtx_def *gen_conditional_trap (struct rtx_def *, struct rtx_d= ef *); extern struct rtx_def *gen_movti (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movv4sf (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movv4si (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movv2si (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movv4hi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_movv8qi (struct rtx_def *, struct rtx_def *); extern struct rtx_def *gen_sfence (void); # 15 "tconfig.h" 2 # 22 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 1 # 37 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" # 1 "include/stddef.h" 1 3 # 147 "include/stddef.h" 3 typedef int ptrdiff_t; # 288 "include/stddef.h" 3 typedef long int wchar_t; # 38 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 60 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" # 1 "include/stdarg.h" 1 3 # 43 "include/stdarg.h" 3 typedef __builtin_va_list __gnuc_va_list; # 110 "include/stdarg.h" 3 typedef __gnuc_va_list va_list; # 61 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/stdio.h" 1 3 # 27 "/usr/include/stdio.h" 3 # 1 "/usr/include/features.h" 1 3 # 28 "/usr/include/stdio.h" 2 3 # 1 "include/stddef.h" 1 3 # 34 "/usr/include/stdio.h" 2 3 # 1 "include/stdarg.h" 1 3 # 39 "/usr/include/stdio.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 41 "/usr/include/stdio.h" 2 3 typedef struct _IO_FILE FILE; # 57 "/usr/include/stdio.h" 3 # 1 "/usr/include/libio.h" 1 3 # 30 "/usr/include/libio.h" 3 # 1 "/usr/include/_G_config.h" 1 3 # 9 "/usr/include/_G_config.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 10 "/usr/include/_G_config.h" 2 3 # 1 "include/stddef.h" 1 3 # 314 "include/stddef.h" 3 typedef unsigned int wint_t; # 15 "/usr/include/_G_config.h" 2 3 # 35 "/usr/include/_G_config.h" 3 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); # 31 "/usr/include/libio.h" 2 3 # 48 "/usr/include/libio.h" 3 # 1 "include/stdarg.h" 1 3 # 49 "/usr/include/libio.h" 2 3 # 154 "/usr/include/libio.h" 3 struct _IO_jump_t; struct _IO_FILE; # 164 "/usr/include/libio.h" 3 typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; # 187 "/usr/include/libio.h" 3 }; struct _IO_FILE { int _flags; char* _IO_read_ptr; char* _IO_read_end; char* _IO_read_base; char* _IO_write_base; char* _IO_write_ptr; char* _IO_write_end; char* _IO_buf_base; char* _IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _blksize; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; # 233 "/usr/include/libio.h" 3 __off64_t _offset; int _unused2[16]; }; typedef struct _IO_FILE _IO_FILE; struct _IO_FILE_plus; extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; # 262 "/usr/include/libio.h" 3 typedef __ssize_t __io_read_fn (void * __cookie, char *__buf, size_t __nbyt= es); # 271 "/usr/include/libio.h" 3 typedef __ssize_t __io_write_fn (void * __cookie, __const char *__buf, size= _t __n); # 280 "/usr/include/libio.h" 3 typedef int __io_seek_fn (void * __cookie, __off_t __pos, int __w); typedef int __io_close_fn (void * __cookie); # 318 "/usr/include/libio.h" 3 extern int __underflow (_IO_FILE *) ; extern int __uflow (_IO_FILE *) ; extern int __overflow (_IO_FILE *, int) ; # 337 "/usr/include/libio.h" 3 extern int _IO_getc (_IO_FILE *__fp) ; extern int _IO_putc (int __c, _IO_FILE *__fp) ; extern int _IO_feof (_IO_FILE *__fp) ; extern int _IO_ferror (_IO_FILE *__fp) ; extern int _IO_peekc_locked (_IO_FILE *__fp) ; extern void _IO_flockfile (_IO_FILE *) ; extern void _IO_funlockfile (_IO_FILE *) ; extern int _IO_ftrylockfile (_IO_FILE *) ; # 363 "/usr/include/libio.h" 3 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __g= nuc_va_list, int *__restrict) ; extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gn= uc_va_list) ; extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ; extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ; extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ; extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ; extern void _IO_free_backup_area (_IO_FILE *) ; # 58 "/usr/include/stdio.h" 2 3 typedef __off_t fpos_t; # 110 "/usr/include/stdio.h" 3 # 1 "/usr/include/bits/stdio_lim.h" 1 3 # 111 "/usr/include/stdio.h" 2 3 extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (__const char *__filename) ; extern int rename (__const char *__old, __const char *__new) ; extern FILE *tmpfile (void) ; # 143 "/usr/include/stdio.h" 3 extern char *tmpnam (char *__s) ; extern char *tmpnam_r (char *__s) ; # 160 "/usr/include/stdio.h" 3 extern char *tempnam (__const char *__dir, __const char *__pfx) ; extern int fclose (FILE *__stream) ; extern int fflush (FILE *__stream) ; extern int fflush_unlocked (FILE *__stream) ; # 182 "/usr/include/stdio.h" 3 extern FILE *fopen (__const char *__restrict __filename, __const char *__re= strict __modes) ; extern FILE *freopen (__const char *__restrict __filename, __const char *__= restrict __modes, FILE *__restrict __stream) ; # 212 "/usr/include/stdio.h" 3 extern FILE *fdopen (int __fd, __const char *__modes) ; # 232 "/usr/include/stdio.h" 3 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int = __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, s= ize_t __size) ; extern void setlinebuf (FILE *__stream) ; extern int fprintf (FILE *__restrict __stream, __const char *__restrict __f= ormat, ...) ; extern int printf (__const char *__restrict __format, ...) ; extern int sprintf (char *__restrict __s, __const char *__restrict __format= , ...) ; extern int vfprintf (FILE *__restrict __s, __const char *__restrict __forma= t, __gnuc_va_list __arg) ; extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg= ) ; extern int vsprintf (char *__restrict __s, __const char *__restrict __forma= t, __gnuc_va_list __arg) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *_= _restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char= *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *= __restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); # 310 "/usr/include/stdio.h" 3 extern int fscanf (FILE *__restrict __stream, __const char *__restrict __fo= rmat, ...) ; extern int scanf (__const char *__restrict __format, ...) ; extern int sscanf (__const char *__restrict __s, __const char *__restrict _= _format, ...) ; # 338 "/usr/include/stdio.h" 3 extern int fgetc (FILE *__stream) ; extern int getc (FILE *__stream) ; extern int getchar (void) ; extern int getc_unlocked (FILE *__stream) ; extern int getchar_unlocked (void) ; extern int fgetc_unlocked (FILE *__stream) ; extern int fputc (int __c, FILE *__stream) ; extern int putc (int __c, FILE *__stream) ; extern int putchar (int __c) ; extern int fputc_unlocked (int __c, FILE *__stream) ; extern int putc_unlocked (int __c, FILE *__stream) ; extern int putchar_unlocked (int __c) ; extern int getw (FILE *__stream) ; extern int putw (int __w, FILE *__stream) ; extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __strea= m) ; # 404 "/usr/include/stdio.h" 3 extern char *gets (char *__s) ; # 428 "/usr/include/stdio.h" 3 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ; # 438 "/usr/include/stdio.h" 3 extern int puts (__const char *__s) ; extern int ungetc (int __c, FILE *__stream) ; extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FIL= E *__restrict __stream) ; extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t= __n, FILE *__restrict __s) ; extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t= __n, FILE *__restrict __stream) ; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __siz= e, size_t __n, FILE *__restrict __stream) ; extern int fseek (FILE *__stream, long int __off, int __whence) ; extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream) ; # 477 "/usr/include/stdio.h" 3 typedef __off_t off_t; # 499 "/usr/include/stdio.h" 3 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ; extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ; # 536 "/usr/include/stdio.h" 3 extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; extern void perror (__const char *__s) ; extern int sys_nerr; extern __const char *__const sys_errlist[]; # 567 "/usr/include/stdio.h" 3 extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; extern FILE *popen (__const char *__command, __const char *__modes) ; extern int pclose (FILE *__stream) ; extern char *ctermid (char *__s) ; # 614 "/usr/include/stdio.h" 3 extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; # 635 "/usr/include/stdio.h" 3 # 1 "/usr/include/bits/stdio.h" 1 3 # 32 "/usr/include/bits/stdio.h" 3 extern __inline int vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline int getchar (void) { return _IO_getc (stdin); } extern __inline int getc_unlocked (FILE *__fp) { return ((__fp)->_IO_read_ptr >=3D (__fp)->_IO_read_end ? __uflow (__fp) := *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline int getchar_unlocked (void) { return ((stdin)->_IO_read_ptr >=3D (stdin)->_IO_read_end ? __uflow (stdin= ) : *(unsigned char *) (stdin)->_IO_read_ptr++); } extern __inline int putchar (int __c) { return _IO_putc (__c, stdout); } extern __inline int fputc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >=3D (__stream)->_IO_write_end) ? __ov= erflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_I= O_write_ptr++ =3D (__c))); } extern __inline int putc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >=3D (__stream)->_IO_write_end) ? __ov= erflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_I= O_write_ptr++ =3D (__c))); } extern __inline int putchar_unlocked (int __c) { return (((stdout)->_IO_write_ptr >=3D (stdout)->_IO_write_end) ? __overfl= ow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_= ptr++ =3D (__c))); } # 110 "/usr/include/bits/stdio.h" 3 extern __inline int feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x10) !=3D 0); } extern __inline int ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x20) !=3D 0); } # 636 "/usr/include/stdio.h" 2 3 # 64 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/sys/types.h" 1 3 # 26 "/usr/include/sys/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 31 "/usr/include/sys/types.h" 2 3 typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; # 58 "/usr/include/sys/types.h" 3 typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; # 96 "/usr/include/sys/types.h" 3 typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; # 1 "/usr/include/time.h" 1 3 # 68 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 69 "/usr/include/time.h" 2 3 typedef __time_t time_t; # 123 "/usr/include/sys/types.h" 2 3 # 1 "include/stddef.h" 1 3 # 126 "/usr/include/sys/types.h" 2 3 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 169 "/usr/include/sys/types.h" 3 typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__))); typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); typedef int register_t __attribute__ ((__mode__ (__word__))); # 191 "/usr/include/sys/types.h" 3 # 1 "/usr/include/endian.h" 1 3 # 22 "/usr/include/endian.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/endian.h" 2 3 # 35 "/usr/include/endian.h" 3 # 1 "/usr/include/bits/endian.h" 1 3 # 36 "/usr/include/endian.h" 2 3 # 192 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/select.h" 1 3 # 25 "/usr/include/sys/select.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 29 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/select.h" 1 3 # 32 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/sigset.h" 1 3 # 35 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/time.h" 1 3 # 39 "/usr/include/sys/select.h" 2 3 struct timeval; typedef __fd_mask fd_mask; typedef __fd_set fd_set; # 74 "/usr/include/sys/select.h" 3 extern int __select (int __nfds, __fd_set *__readfds, __fd_set *__writefds,= __fd_set *__exceptfds, struct timeval *__timeout) ; extern int select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, _= _fd_set *__exceptfds, struct timeval *__timeout) ; # 195 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/sysmacros.h" 1 3 # 198 "/usr/include/sys/types.h" 2 3 typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; # 67 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/errno.h" 1 3 # 29 "/usr/include/errno.h" 3 # 1 "/usr/include/features.h" 1 3 # 30 "/usr/include/errno.h" 2 3 # 1 "/usr/include/bits/errno.h" 1 3 # 25 "/usr/include/bits/errno.h" 3 # 1 "/usr/include/linux/errno.h" 1 3 # 1 "/usr/include/asm/errno.h" 1 3 # 5 "/usr/include/linux/errno.h" 2 3 # 26 "/usr/include/bits/errno.h" 2 3 # 36 "/usr/include/bits/errno.h" 3 extern int errno; extern int *__errno_location (void) __attribute__ ((__const__)); # 37 "/usr/include/errno.h" 2 3 # 70 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/string.h" 1 3 # 26 "/usr/include/string.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/string.h" 2 3 # 1 "include/stddef.h" 1 3 # 34 "/usr/include/string.h" 2 3 extern void * memcpy (void * __restrict __dest, __const void * __restrict _= _src, size_t __n) ; extern void * memmove (void * __dest, __const void * __src, size_t __n) ; extern void * memccpy (void * __dest, __const void * __src, int __c, size_t= __n) ; extern void * memset (void * __s, int __c, size_t __n) ; extern int memcmp (__const void * __s1, __const void * __s2, size_t __n) ; extern void * memchr (__const void * __s, int __c, size_t __n) ; # 71 "/usr/include/string.h" 3 extern char *strcpy (char *__restrict __dest, __const char *__restrict __sr= c) ; extern char *strncpy (char *__restrict __dest, __const char *__restrict __s= rc, size_t __n) ; extern char *strcat (char *__restrict __dest, __const char *__restrict __sr= c) ; extern char *strncat (char *__restrict __dest, __const char *__restrict __s= rc, size_t __n) ; extern int strcmp (__const char *__s1, __const char *__s2) ; extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) ; extern int strcoll (__const char *__s1, __const char *__s2) ; extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __= src, size_t __n) ; # 111 "/usr/include/string.h" 3 extern char *__strdup (__const char *__s) ; extern char *strdup (__const char *__s) ; # 146 "/usr/include/string.h" 3 extern char *strchr (__const char *__s, int __c) ; extern char *strrchr (__const char *__s, int __c) ; # 158 "/usr/include/string.h" 3 extern size_t strcspn (__const char *__s, __const char *__reject) ; extern size_t strspn (__const char *__s, __const char *__accept) ; extern char *strpbrk (__const char *__s, __const char *__accept) ; extern char *strstr (__const char *__haystack, __const char *__needle) ; # 176 "/usr/include/string.h" 3 extern char *strtok (char *__restrict __s, __const char *__restrict __delim= ) ; extern char *__strtok_r (char *__restrict __s, __const char *__restrict __d= elim, char **__restrict __save_ptr) ; extern char *strtok_r (char *__restrict __s, __const char *__restrict __del= im, char **__restrict __save_ptr) ; # 207 "/usr/include/string.h" 3 extern size_t strlen (__const char *__s) ; # 217 "/usr/include/string.h" 3 extern char *strerror (int __errnum) ; extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern void __bzero (void * __s, size_t __n) ; extern void bcopy (__const void * __src, void * __dest, size_t __n) ; extern void bzero (void * __s, size_t __n) ; extern int bcmp (__const void * __s1, __const void * __s2, size_t __n) ; extern char *index (__const char *__s, int __c) ; extern char *rindex (__const char *__s, int __c) ; extern int __ffs (int __i) __attribute__ ((const)); extern int ffs (int __i) __attribute__ ((const)); # 261 "/usr/include/string.h" 3 extern int __strcasecmp (__const char *__s1, __const char *__s2) ; extern int strcasecmp (__const char *__s1, __const char *__s2) ; extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)= ; # 282 "/usr/include/string.h" 3 extern char *strsep (char **__restrict __stringp, __const char *__restrict = __delim) ; # 343 "/usr/include/string.h" 3 # 1 "/usr/include/bits/string.h" 1 3 # 344 "/usr/include/string.h" 2 3 # 1 "/usr/include/bits/string2.h" 1 3 # 52 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/endian.h" 1 3 # 53 "/usr/include/bits/string2.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 54 "/usr/include/bits/string2.h" 2 3 # 372 "/usr/include/bits/string2.h" 3 extern void * __rawmemchr (const void * __s, int __c); # 396 "/usr/include/bits/string2.h" 3 extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t, __uint32_t, __uint32_t, size_t); extern __inline char * __strcpy_small (char *__dest, __uint16_t __src0_2, __uint16_t __src4_2, __uint32_t __src0_4, __uint32_t __src4_4, size_t __srclen) { union { __uint32_t __ui; __uint16_t __usi; unsigned char __uc; } *__u =3D (void *) __dest; switch ((unsigned int) __srclen) { case 1: __u->__uc =3D '\0'; break; case 2: __u->__usi =3D __src0_2; break; case 3: __u->__usi =3D __src0_2; __u =3D __extension__ ((void *) __u + 2); __u->__uc =3D '\0'; break; case 4: __u->__ui =3D __src0_4; break; case 5: __u->__ui =3D __src0_4; __u =3D __extension__ ((void *) __u + 4); __u->__uc =3D '\0'; break; case 6: __u->__ui =3D __src0_4; __u =3D __extension__ ((void *) __u + 4); __u->__usi =3D __src4_2; break; case 7: __u->__ui =3D __src0_4; __u =3D __extension__ ((void *) __u + 4); __u->__usi =3D __src4_2; __u =3D __extension__ ((void *) __u + 2); __u->__uc =3D '\0'; break; case 8: __u->__ui =3D __src0_4; __u =3D __extension__ ((void *) __u + 4); __u->__ui =3D __src4_4; break; } return __dest; } # 873 "/usr/include/bits/string2.h" 3 extern __inline size_t __strcspn_c1 (__const char *__s, char __reject); extern __inline size_t __strcspn_c1 (__const char *__s, char __reject) { register size_t __result =3D 0; while (__s[__result] !=3D '\0' && __s[__result] !=3D __reject) ++__result; return __result; } extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2); extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2) { register size_t __result =3D 0; while (__s[__result] !=3D '\0' && __s[__result] !=3D __reject1 && __s[__result] !=3D __reject2) ++__result; return __result; } extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3); extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3) { register size_t __result =3D 0; while (__s[__result] !=3D '\0' && __s[__result] !=3D __reject1 && __s[__result] !=3D __reject2 && __s[__result] !=3D __reject3) ++__result; return __result; } # 928 "/usr/include/bits/string2.h" 3 extern __inline size_t __strspn_c1 (__const char *__s, char __accept); extern __inline size_t __strspn_c1 (__const char *__s, char __accept) { register size_t __result =3D 0; while (__s[__result] =3D=3D __accept) ++__result; return __result; } extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2); extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2) { register size_t __result =3D 0; while (__s[__result] =3D=3D __accept1 || __s[__result] =3D=3D __accept2) ++__result; return __result; } extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3); extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __acce= pt3) { register size_t __result =3D 0; while (__s[__result] =3D=3D __accept1 || __s[__result] =3D=3D __accept2 || __s[__result] =3D=3D __accept3) ++__result; return __result; } # 983 "/usr/include/bits/string2.h" 3 extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1, char __accept2); extern __inline char * __strpbrk_c2 (__const char *__s, char __accept1, char __accept2) { while (*__s !=3D '\0' && *__s !=3D __accept1 && *__s !=3D __accept2) ++__s; return *__s =3D=3D '\0' ? ((void *)0) : (char *) (size_t) __s; } extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1, char __accept2, char __accept3); extern __inline char * __strpbrk_c3 (__const char *__s, char __accept1, char __accept2, char __accept3) { while (*__s !=3D '\0' && *__s !=3D __accept1 && *__s !=3D __accept2 && *__s !=3D __accept3) ++__s; return *__s =3D=3D '\0' ? ((void *)0) : (char *) (size_t) __s; } # 1044 "/usr/include/bits/string2.h" 3 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp); extern __inline char * __strtok_r_1c (char *__s, char __sep, char **__nextp) { char *__result; if (__s =3D=3D ((void *)0)) __s =3D *__nextp; while (*__s =3D=3D __sep) ++__s; if (*__s =3D=3D '\0') __result =3D ((void *)0); else { __result =3D __s; while (*__s !=3D '\0' && *__s !=3D __sep) ++__s; if (*__s =3D=3D '\0') *__nextp =3D __s; else { *__s =3D '\0'; *__nextp =3D __s + 1; } } return __result; } # 1094 "/usr/include/bits/string2.h" 3 extern __inline char *__strsep_1c (char **__s, char __reject); extern __inline char * __strsep_1c (char **__s, char __reject) { register char *__retval =3D *__s; if (__retval =3D=3D ((void *)0)) return *__s =3D ((void *)0); if (*__retval =3D=3D __reject) *(*__s)++ =3D '\0'; else if ((*__s =3D (__extension__ (__builtin_constant_p (__reject) && (__rej= ect) =3D=3D '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__re= tval, __reject)))) !=3D ((void *)0)) *(*__s)++ =3D '\0'; else *__s =3D ((void *)0); return __retval; } extern __inline char *__strsep_2c (char **__s, char __reject1, char __rejec= t2); extern __inline char * __strsep_2c (char **__s, char __reject1, char __reject2) { register char *__retval =3D *__s; if (__retval =3D=3D ((void *)0)) return *__s =3D ((void *)0); if (*__retval =3D=3D __reject1 || *__retval =3D=3D __reject2) *(*__s)++ =3D '\0'; else { register char *__cp =3D __retval; while (*__cp !=3D '\0' && *__cp !=3D __reject1 && *__cp !=3D __reject= 2) ++__cp; if (*__cp !=3D '\0') { *__s =3D __cp; *(*__s)++ =3D '\0'; } else *__s =3D ((void *)0); } return __retval; } extern __inline char *__strsep_3c (char **__s, char __reject1, char __rejec= t2, char __reject3); extern __inline char * __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3) { register char *__retval =3D *__s; if (__retval =3D=3D ((void *)0)) return *__s =3D ((void *)0); if (*__retval =3D=3D __reject1 || *__retval =3D=3D __reject2 || *__retval =3D=3D __reject3) *(*__s)++ =3D '\0'; else { register char *__cp =3D __retval; while (*__cp !=3D '\0' && *__cp !=3D __reject1 && *__cp !=3D __reject2 && *__cp !=3D __reject3) ++__cp; if (*__cp !=3D '\0') { *__s =3D __cp; *(*__s)++ =3D '\0'; } else *__s =3D ((void *)0); } return __retval; } extern __inline char *__strsep_g (char **__s, __const char *__reject); extern __inline char * __strsep_g (char **__s, __const char *__reject) { register char *__retval =3D *__s; if (__retval =3D=3D ((void *)0)) return ((void *)0); if ((*__s =3D __extension__ ({ char __a0, __a1, __a2; (__builtin_constant= _p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const v= oid *)(__reject) =3D=3D 1) ? ((__a0 =3D ((__const char *) (__reject))[0], _= _a0 =3D=3D '\0') ? ((void *)0) : ((__a1 =3D ((__const char *) (__reject))[1= ], __a1 =3D=3D '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0= ) =3D=3D '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, _= _a0))) : ((__a2 =3D ((__const char *) (__reject))[2], __a2 =3D=3D '\0') ? _= _strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] =3D= =3D '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, _= _reject))))) : strpbrk (__retval, __reject)); })) !=3D ((void *)0)) *(*__s)++ =3D '\0'; return __retval; } # 1187 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/stdlib.h" 1 3 # 25 "/usr/include/stdlib.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/stdlib.h" 2 3 # 1 "include/stddef.h" 1 3 # 34 "/usr/include/stdlib.h" 2 3 # 474 "/usr/include/stdlib.h" 3 extern void * malloc (size_t __size) ; extern void * calloc (size_t __nmemb, size_t __size) ; # 1188 "/usr/include/bits/string2.h" 2 3 # 347 "/usr/include/string.h" 2 3 # 77 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/stdlib.h" 1 3 # 25 "/usr/include/stdlib.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/stdlib.h" 2 3 # 1 "include/stddef.h" 1 3 # 34 "/usr/include/stdlib.h" 2 3 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; # 80 "/usr/include/stdlib.h" 3 extern size_t __ctype_get_mb_cur_max (void) ; extern double atof (__const char *__nptr) ; extern int atoi (__const char *__nptr) ; extern long int atol (__const char *__nptr) ; __extension__ extern long long int atoll (__const char *__nptr) ; extern double strtod (__const char *__restrict __nptr, char **__restrict __= endptr) ; # 109 "/usr/include/stdlib.h" 3 extern long int strtol (__const char *__restrict __nptr, char **__restrict = __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **_= _restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__rest= rict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, cha= r **__restrict __endptr, int __base) ; # 132 "/usr/include/stdlib.h" 3 __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__res= trict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, ch= ar **__restrict __endptr, int __base) ; # 196 "/usr/include/stdlib.h" 3 extern double __strtod_internal (__const char *__restrict __nptr, char **__= restrict __endptr, int __group) ; extern float __strtof_internal (__const char *__restrict __nptr, char **__r= estrict __endptr, int __group) ; extern long double __strtold_internal (__const char * __restrict __nptr, ch= ar **__restrict __endptr, int __group) ; extern long int __strtol_internal (__const char *__restrict __nptr, char **= __restrict __endptr, int __base, int __group) ; extern unsigned long int __strtoul_internal (__const char * __restrict __np= tr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, c= har **__restrict __endptr, int __base, int __group) ; __extension__ extern unsigned long long int __strtoull_internal (__const char * __restric= t __nptr, char ** __restrict __endptr, int __base, int __group) ; # 242 "/usr/include/stdlib.h" 3 extern __inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoul_internal (__nptr, __endptr, __base, 0); } # 274 "/usr/include/stdlib.h" 3 __extension__ extern __inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } extern __inline double atof (__const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern __inline int atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline long long int atoll (__const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } # 333 "/usr/include/stdlib.h" 3 extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) ; # 1 "/usr/include/sys/types.h" 1 3 # 340 "/usr/include/stdlib.h" 2 3 extern int32_t random (void) ; extern void srandom (unsigned int __seed) ; extern void * initstate (unsigned int __seed, void * __statebuf, size_t __s= tatelen) ; extern void * setstate (void * __statebuf) ; struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restr= ict __result) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, void * __restrict __statebuf, = size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (void * __restrict __statebuf, struct random_data *__= restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int x[3]; unsigned short int a[3]; unsigned short int c; unsigned short int old_x[3]; int init; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__r= estrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *_= _restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *_= _restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *_= _restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *_= _restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *_= _restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *= __buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *_= _buffer) ; # 482 "/usr/include/stdlib.h" 3 extern void * realloc (void * __ptr, size_t __size) ; extern void free (void * __ptr) ; extern void cfree (void * __ptr) ; # 1 "/usr/include/alloca.h" 1 3 # 22 "/usr/include/alloca.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/alloca.h" 2 3 # 1 "include/stddef.h" 1 3 # 26 "/usr/include/alloca.h" 2 3 extern void * alloca (size_t __size) ; # 493 "/usr/include/stdlib.h" 2 3 extern void * valloc (size_t __size) ; extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int __on_exit (void (*__func) (int __status, void * __arg), void * _= _arg) ; extern int on_exit (void (*__func) (int __status, void * __arg), void * __a= rg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); # 530 "/usr/include/stdlib.h" 3 extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __repla= ce) ; extern void unsetenv (__const char *__name) ; extern int clearenv (void) ; # 566 "/usr/include/stdlib.h" 3 extern char *mktemp (char *__template) ; extern int mkstemp (char *__template) ; extern int system (__const char *__command) ; # 595 "/usr/include/stdlib.h" 3 extern char *realpath (__const char *__restrict __name, char *__restrict __= resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); # 612 "/usr/include/stdlib.h" 3 extern void * bsearch (__const void * __key, __const void * __base, size_t = __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void * __base, size_t __nmemb, size_t __size, __compar_f= n_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); # 634 "/usr/include/stdlib.h" 3 extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); # 651 "/usr/include/stdlib.h" 3 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, i= nt *__restrict __sign) ; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, i= nt *__restrict __sign) ; extern char *gcvt (double __value, int __ndigit, char *__buf) ; extern char *qecvt (long double __value, int __ndigit, int *__restrict __de= cpt, int *__restrict __sign) ; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __de= cpt, int *__restrict __sign) ; extern char *qgcvt (long double __value, int __ndigit, char *__buf) ; extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, i= nt *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, i= nt *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qecvt_r (long double __value, int __ndigit, int *__restrict __de= cpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __de= cpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; # 695 "/usr/include/stdlib.h" 3 extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s,= size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restric= t __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict _= _pwcs, size_t __n) ; # 718 "/usr/include/stdlib.h" 3 extern int rpmatch (__const char *__response) ; # 81 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/unistd.h" 1 3 # 26 "/usr/include/unistd.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/unistd.h" 2 3 # 175 "/usr/include/unistd.h" 3 # 1 "/usr/include/bits/posix_opt.h" 1 3 # 176 "/usr/include/unistd.h" 2 3 # 190 "/usr/include/unistd.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 191 "/usr/include/unistd.h" 2 3 # 199 "/usr/include/unistd.h" 3 # 1 "include/stddef.h" 1 3 # 200 "/usr/include/unistd.h" 2 3 # 248 "/usr/include/unistd.h" 3 extern int access (__const char *__name, int __type) ; # 277 "/usr/include/unistd.h" 3 extern __off_t __lseek (int __fd, __off_t __offset, int __whence) ; extern __off_t lseek (int __fd, __off_t __offset, int __whence) ; # 295 "/usr/include/unistd.h" 3 extern int __close (int __fd) ; extern int close (int __fd) ; extern ssize_t __read (int __fd, void * __buf, size_t __nbytes) ; extern ssize_t read (int __fd, void * __buf, size_t __nbytes) ; extern ssize_t __write (int __fd, __const void * __buf, size_t __n) ; extern ssize_t write (int __fd, __const void * __buf, size_t __n) ; # 349 "/usr/include/unistd.h" 3 extern int pipe (int __pipedes[2]) ; # 358 "/usr/include/unistd.h" 3 extern unsigned int alarm (unsigned int __seconds) ; # 367 "/usr/include/unistd.h" 3 extern unsigned int sleep (unsigned int __seconds) ; extern unsigned int ualarm (unsigned int __value, unsigned int __interval) ; extern void usleep (unsigned int __useconds) ; extern int pause (void) ; extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ; extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int chdir (__const char *__path) ; extern int fchdir (int __fd) ; # 419 "/usr/include/unistd.h" 3 extern char *getcwd (char *__buf, size_t __size) ; # 432 "/usr/include/unistd.h" 3 extern char *getwd (char *__buf) ; extern int dup (int __fd) ; extern int dup2 (int __fd, int __fd2) ; extern char **__environ; extern int execve (__const char *__path, char *__const __argv[], char *__co= nst __envp[]) ; # 464 "/usr/include/unistd.h" 3 extern int execv (__const char *__path, char *__const __argv[]) ; extern int execle (__const char *__path, __const char *__arg, ...) ; extern int execl (__const char *__path, __const char *__arg, ...) ; extern int execvp (__const char *__file, char *__const __argv[]) ; extern int execlp (__const char *__file, __const char *__arg, ...) ; extern int nice (int __inc) ; extern void _exit (int __status) __attribute__ ((__noreturn__)); # 1 "/usr/include/bits/confname.h" 1 3 # 25 "/usr/include/bits/confname.h" 3 enum { _PC_LINK_MAX, _PC_MAX_CANON, _PC_MAX_INPUT, _PC_NAME_MAX, _PC_PATH_MAX, _PC_PIPE_BUF, _PC_CHOWN_RESTRICTED, _PC_NO_TRUNC, _PC_VDISABLE, _PC_SYNC_IO, _PC_ASYNC_IO, _PC_PRIO_IO, _PC_SOCK_MAXBUF, _PC_FILESIZEBITS }; enum { _SC_ARG_MAX, _SC_CHILD_MAX, _SC_CLK_TCK, _SC_NGROUPS_MAX, _SC_OPEN_MAX, _SC_STREAM_MAX, _SC_TZNAME_MAX, _SC_JOB_CONTROL, _SC_SAVED_IDS, _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_VERSION, _SC_PAGESIZE, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, _SC_TIMER_MAX, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_RE_DUP_MAX, _SC_CHARCLASS_NAME_MAX, _SC_2_VERSION, _SC_2_C_BIND, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_SW_DEV, _SC_2_LOCALEDEF, _SC_PII, _SC_PII_XTI, _SC_PII_SOCKET, _SC_PII_INTERNET, _SC_PII_OSI, _SC_POLL, _SC_SELECT, _SC_UIO_MAXIOV, _SC_PII_INTERNET_STREAM, _SC_PII_INTERNET_DGRAM, _SC_PII_OSI_COTS, _SC_PII_OSI_CLTS, _SC_PII_OSI_M, _SC_T_IOV_MAX, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_GETGR_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX, _SC_LOGIN_NAME_MAX, _SC_TTY_NAME_MAX, _SC_THREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_KEYS_MAX, _SC_THREAD_STACK_MIN, _SC_THREAD_THREADS_MAX, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED, _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, _SC_PASS_MAX, _SC_XOPEN_VERSION, _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, _SC_2_UPE, _SC_XOPEN_XPG2, _SC_XOPEN_XPG3, _SC_XOPEN_XPG4, _SC_CHAR_BIT, _SC_CHAR_MAX, _SC_CHAR_MIN, _SC_INT_MAX, _SC_INT_MIN, _SC_LONG_BIT, _SC_WORD_BIT, _SC_MB_LEN_MAX, _SC_NZERO, _SC_SSIZE_MAX, _SC_SCHAR_MAX, _SC_SCHAR_MIN, _SC_SHRT_MAX, _SC_SHRT_MIN, _SC_UCHAR_MAX, _SC_UINT_MAX, _SC_ULONG_MAX, _SC_USHRT_MAX, _SC_NL_ARGMAX, _SC_NL_LANGMAX, _SC_NL_MSGMAX, _SC_NL_NMAX, _SC_NL_SETMAX, _SC_NL_TEXTMAX, _SC_XBS5_ILP32_OFF32, _SC_XBS5_ILP32_OFFBIG, _SC_XBS5_LP64_OFF64, _SC_XBS5_LPBIG_OFFBIG, _SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME, _SC_XOPEN_REALTIME_THREADS }; enum { _CS_PATH # 407 "/usr/include/bits/confname.h" 3 }; # 498 "/usr/include/unistd.h" 2 3 extern long int pathconf (__const char *__path, int __name) ; extern long int fpathconf (int __fd, int __name) ; extern long int sysconf (int __name) ; extern size_t confstr (int __name, char *__buf, size_t __len) ; extern __pid_t __getpid (void) ; extern __pid_t getpid (void) ; extern __pid_t getppid (void) ; extern __pid_t getpgrp (void) ; # 534 "/usr/include/unistd.h" 3 extern __pid_t __getpgid (__pid_t __pid) ; # 543 "/usr/include/unistd.h" 3 extern int __setpgid (__pid_t __pid, __pid_t __pgid) ; extern int setpgid (__pid_t __pid, __pid_t __pgid) ; # 561 "/usr/include/unistd.h" 3 extern int setpgrp (void) ; # 579 "/usr/include/unistd.h" 3 extern __pid_t setsid (void) ; extern __uid_t getuid (void) ; extern __uid_t geteuid (void) ; extern __gid_t getgid (void) ; extern __gid_t getegid (void) ; extern int getgroups (int __size, __gid_t __list[]) ; # 612 "/usr/include/unistd.h" 3 extern int setuid (__uid_t __uid) ; extern int setreuid (__uid_t __ruid, __uid_t __euid) ; extern int seteuid (__uid_t __uid) ; extern int setgid (__gid_t __gid) ; extern int setregid (__gid_t __rgid, __gid_t __egid) ; extern int setegid (__gid_t __gid) ; extern __pid_t __fork (void) ; extern __pid_t fork (void) ; extern __pid_t vfork (void) ; extern char *ttyname (int __fd) ; extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ; extern int isatty (int __fd) ; extern int ttyslot (void) ; extern int link (__const char *__from, __const char *__to) ; extern int symlink (__const char *__from, __const char *__to) ; extern int readlink (__const char *__path, char *__buf, size_t __len) ; extern int unlink (__const char *__name) ; extern int rmdir (__const char *__path) ; extern __pid_t tcgetpgrp (int __fd) ; extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ; extern char *getlogin (void) ; # 715 "/usr/include/unistd.h" 3 extern int setlogin (__const char *__name) ; # 724 "/usr/include/unistd.h" 3 # 1 "/nfs/oz/home/oldham/gcc/gcc5/include/getopt.h" 1 3 # 36 "/nfs/oz/home/oldham/gcc/gcc5/include/getopt.h" 3 extern char *optarg; # 50 "/nfs/oz/home/oldham/gcc/gcc5/include/getopt.h" 3 extern int optind; extern int opterr; extern int optopt; # 82 "/nfs/oz/home/oldham/gcc/gcc5/include/getopt.h" 3 struct option { const char *name; int has_arg; int *flag; int val; }; # 112 "/nfs/oz/home/oldham/gcc/gcc5/include/getopt.h" 3 extern int getopt (int argc, char *const *argv, const char *shortopts); extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); # 725 "/usr/include/unistd.h" 2 3 # 733 "/usr/include/unistd.h" 3 extern int gethostname (char *__name, size_t __len) ; extern int sethostname (__const char *__name, size_t __len) ; extern int sethostid (long int __id) ; extern int getdomainname (char *__name, size_t __len) ; extern int setdomainname (__const char *__name, size_t __len) ; extern int fsync (int __fd) ; extern int vhangup (void) ; extern int revoke (__const char *__file) ; extern int profil (unsigned short int *__sample_buffer, size_t __size, size= _t __offset, unsigned int __scale) ; extern int acct (__const char *__name) ; extern int chroot (__const char *__path) ; extern char *getusershell (void) ; extern void endusershell (void) ; extern void setusershell (void) ; extern char *getpass (__const char *__prompt) ; extern int daemon (int __nochdir, int __noclose) ; extern long int gethostid (void) ; extern int sync (void) ; extern int __getpagesize (void) __attribute__ ((__const__)); extern int getpagesize (void) __attribute__ ((__const__)); extern int truncate (__const char *__file, __off_t __length) ; # 833 "/usr/include/unistd.h" 3 extern int __ftruncate (int __fd, __off_t __length) ; extern int ftruncate (int __fd, __off_t __length) ; # 851 "/usr/include/unistd.h" 3 extern int getdtablesize (void) ; # 860 "/usr/include/unistd.h" 3 extern int brk (void * __addr) ; # 1 "include/stddef.h" 1 3 # 864 "/usr/include/unistd.h" 2 3 extern void * __sbrk (ptrdiff_t __delta) ; extern void * sbrk (ptrdiff_t __delta) ; # 885 "/usr/include/unistd.h" 3 extern long int syscall (long int __sysno, ...) ; # 905 "/usr/include/unistd.h" 3 extern int lockf (int __fd, int __cmd, __off_t __len) ; # 945 "/usr/include/unistd.h" 3 extern int fdatasync (int __fildes) ; # 999 "/usr/include/unistd.h" 3 extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void= ), void (*__child) (void)) ; # 82 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "include/limits.h" 1 3 # 11 "include/limits.h" 3 # 1 "include/syslimits.h" 1 3 # 1 "include/limits.h" 1 3 # 134 "include/limits.h" 3 # 1 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3.1= /include/limits.h" 1 3 # 130 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3= .1/include/limits.h" 3 # 1 "/usr/include/limits.h" 1 3 # 26 "/usr/include/limits.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/limits.h" 2 3 # 1 "/usr/include/bits/posix1_lim.h" 1 3 # 126 "/usr/include/bits/posix1_lim.h" 3 # 1 "/usr/include/bits/local_lim.h" 1 3 # 27 "/usr/include/bits/local_lim.h" 3 # 1 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3.1= /include/linux/limits.h" 1 3 # 130 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3= .1/include/linux/limits.h" 3 # 1 "/usr/include/limits.h" 1 3 # 131 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3= .1/include/linux/limits.h" 2 3 # 28 "/usr/include/bits/local_lim.h" 2 3 # 127 "/usr/include/bits/posix1_lim.h" 2 3 # 31 "/usr/include/limits.h" 2 3 # 1 "/usr/include/bits/posix2_lim.h" 1 3 # 35 "/usr/include/limits.h" 2 3 # 131 "/nfs/oz/home/oldham/gcc-install/gcc5/lib/gcc-lib/i686-pc-linux-gnu/3= .1/include/limits.h" 2 3 # 135 "include/limits.h" 2 3 # 8 "include/syslimits.h" 2 3 # 12 "include/limits.h" 2 3 # 85 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 1 "/usr/include/time.h" 1 3 # 28 "/usr/include/time.h" 3 # 1 "/usr/include/features.h" 1 3 # 29 "/usr/include/time.h" 2 3 # 38 "/usr/include/time.h" 3 # 1 "include/stddef.h" 1 3 # 39 "/usr/include/time.h" 2 3 # 1 "/usr/include/bits/time.h" 1 3 # 43 "/usr/include/time.h" 2 3 # 57 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 58 "/usr/include/time.h" 2 3 typedef __clock_t clock_t; # 95 "/usr/include/time.h" 3 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; __const char *tm_zone; }; extern clock_t clock (void) ; extern time_t time (time_t *__timer) ; extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__restrict __s, size_t __maxsize, __const cha= r *__restrict __format, __const struct tm *__restrict __tp) ; # 149 "/usr/include/time.h" 3 extern struct tm *gmtime (__const time_t *__timer) ; extern struct tm *localtime (__const time_t *__timer) ; extern struct tm *__gmtime_r (__const time_t *__restrict __timer, struct tm= *__restrict __tp) ; extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *= __restrict __tp) ; extern struct tm *localtime_r (__const time_t *__restrict __timer, struct t= m *__restrict __tp) ; extern char *asctime (__const struct tm *__tp) ; extern char *ctime (__const time_t *__timer) ; extern char *asctime_r (__const struct tm *__restrict __tp, char *__restric= t __buf) ; extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict = __buf) ; extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern char *tzname[2]; extern void tzset (void) ; extern int daylight; extern long int timezone; extern int stime (__const time_t *__when) ; # 228 "/usr/include/time.h" 3 extern time_t timegm (struct tm *__tp) ; extern time_t timelocal (struct tm *__tp) ; extern int dysize (int __year) ; extern int nanosleep (__const struct timespec *__requested_time, struct tim= espec *__remaining) ; # 88 "/nfs/oz/home/oldham/gcc/gcc5/gcc/tsystem.h" 2 # 23 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/dwarf2.h" 1 # 36 "/nfs/oz/home/oldham/gcc/gcc5/gcc/dwarf2.h" enum dwarf_tag { DW_TAG_padding =3D 0x00, DW_TAG_array_type =3D 0x01, DW_TAG_class_type =3D 0x02, DW_TAG_entry_point =3D 0x03, DW_TAG_enumeration_type =3D 0x04, DW_TAG_formal_parameter =3D 0x05, DW_TAG_imported_declaration =3D 0x08, DW_TAG_label =3D 0x0a, DW_TAG_lexical_block =3D 0x0b, DW_TAG_member =3D 0x0d, DW_TAG_pointer_type =3D 0x0f, DW_TAG_reference_type =3D 0x10, DW_TAG_compile_unit =3D 0x11, DW_TAG_string_type =3D 0x12, DW_TAG_structure_type =3D 0x13, DW_TAG_subroutine_type =3D 0x15, DW_TAG_typedef =3D 0x16, DW_TAG_union_type =3D 0x17, DW_TAG_unspecified_parameters =3D 0x18, DW_TAG_variant =3D 0x19, DW_TAG_common_block =3D 0x1a, DW_TAG_common_inclusion =3D 0x1b, DW_TAG_inheritance =3D 0x1c, DW_TAG_inlined_subroutine =3D 0x1d, DW_TAG_module =3D 0x1e, DW_TAG_ptr_to_member_type =3D 0x1f, DW_TAG_set_type =3D 0x20, DW_TAG_subrange_type =3D 0x21, DW_TAG_with_stmt =3D 0x22, DW_TAG_access_declaration =3D 0x23, DW_TAG_base_type =3D 0x24, DW_TAG_catch_block =3D 0x25, DW_TAG_const_type =3D 0x26, DW_TAG_constant =3D 0x27, DW_TAG_enumerator =3D 0x28, DW_TAG_file_type =3D 0x29, DW_TAG_friend =3D 0x2a, DW_TAG_namelist =3D 0x2b, DW_TAG_namelist_item =3D 0x2c, DW_TAG_packed_type =3D 0x2d, DW_TAG_subprogram =3D 0x2e, DW_TAG_template_type_param =3D 0x2f, DW_TAG_template_value_param =3D 0x30, DW_TAG_thrown_type =3D 0x31, DW_TAG_try_block =3D 0x32, DW_TAG_variant_part =3D 0x33, DW_TAG_variable =3D 0x34, DW_TAG_volatile_type =3D 0x35, DW_TAG_dwarf_procedure =3D 0x36, DW_TAG_restrict_type =3D 0x37, DW_TAG_interface_type =3D 0x38, DW_TAG_namespace =3D 0x39, DW_TAG_imported_module =3D 0x3a, DW_TAG_unspecified_type =3D 0x3b, DW_TAG_partial_unit =3D 0x3c, DW_TAG_imported_unit =3D 0x3d, DW_TAG_MIPS_loop =3D 0x4081, DW_TAG_format_label =3D 0x4101, DW_TAG_function_template =3D 0x4102, DW_TAG_class_template =3D 0x4103, DW_TAG_GNU_BINCL =3D 0x4104, DW_TAG_GNU_EINCL =3D 0x4105 }; # 113 "/nfs/oz/home/oldham/gcc/gcc5/gcc/dwarf2.h" enum dwarf_form { DW_FORM_addr =3D 0x01, DW_FORM_block2 =3D 0x03, DW_FORM_block4 =3D 0x04, DW_FORM_data2 =3D 0x05, DW_FORM_data4 =3D 0x06, DW_FORM_data8 =3D 0x07, DW_FORM_string =3D 0x08, DW_FORM_block =3D 0x09, DW_FORM_block1 =3D 0x0a, DW_FORM_data1 =3D 0x0b, DW_FORM_flag =3D 0x0c, DW_FORM_sdata =3D 0x0d, DW_FORM_strp =3D 0x0e, DW_FORM_udata =3D 0x0f, DW_FORM_ref_addr =3D 0x10, DW_FORM_ref1 =3D 0x11, DW_FORM_ref2 =3D 0x12, DW_FORM_ref4 =3D 0x13, DW_FORM_ref8 =3D 0x14, DW_FORM_ref_udata =3D 0x15, DW_FORM_indirect =3D 0x16 }; enum dwarf_attribute { DW_AT_sibling =3D 0x01, DW_AT_location =3D 0x02, DW_AT_name =3D 0x03, DW_AT_ordering =3D 0x09, DW_AT_subscr_data =3D 0x0a, DW_AT_byte_size =3D 0x0b, DW_AT_bit_offset =3D 0x0c, DW_AT_bit_size =3D 0x0d, DW_AT_element_list =3D 0x0f, DW_AT_stmt_list =3D 0x10, DW_AT_low_pc =3D 0x11, DW_AT_high_pc =3D 0x12, DW_AT_language =3D 0x13, DW_AT_member =3D 0x14, DW_AT_discr =3D 0x15, DW_AT_discr_value =3D 0x16, DW_AT_visibility =3D 0x17, DW_AT_import =3D 0x18, DW_AT_string_length =3D 0x19, DW_AT_common_reference =3D 0x1a, DW_AT_comp_dir =3D 0x1b, DW_AT_const_value =3D 0x1c, DW_AT_containing_type =3D 0x1d, DW_AT_default_value =3D 0x1e, DW_AT_inline =3D 0x20, DW_AT_is_optional =3D 0x21, DW_AT_lower_bound =3D 0x22, DW_AT_producer =3D 0x25, DW_AT_prototyped =3D 0x27, DW_AT_return_addr =3D 0x2a, DW_AT_start_scope =3D 0x2c, DW_AT_stride_size =3D 0x2e, DW_AT_upper_bound =3D 0x2f, DW_AT_abstract_origin =3D 0x31, DW_AT_accessibility =3D 0x32, DW_AT_address_class =3D 0x33, DW_AT_artificial =3D 0x34, DW_AT_base_types =3D 0x35, DW_AT_calling_convention =3D 0x36, DW_AT_count =3D 0x37, DW_AT_data_member_location =3D 0x38, DW_AT_decl_column =3D 0x39, DW_AT_decl_file =3D 0x3a, DW_AT_decl_line =3D 0x3b, DW_AT_declaration =3D 0x3c, DW_AT_discr_list =3D 0x3d, DW_AT_encoding =3D 0x3e, DW_AT_external =3D 0x3f, DW_AT_frame_base =3D 0x40, DW_AT_friend =3D 0x41, DW_AT_identifier_case =3D 0x42, DW_AT_macro_info =3D 0x43, DW_AT_namelist_items =3D 0x44, DW_AT_priority =3D 0x45, DW_AT_segment =3D 0x46, DW_AT_specification =3D 0x47, DW_AT_static_link =3D 0x48, DW_AT_type =3D 0x49, DW_AT_use_location =3D 0x4a, DW_AT_variable_parameter =3D 0x4b, DW_AT_virtuality =3D 0x4c, DW_AT_vtable_elem_location =3D 0x4d, DW_AT_allocated =3D 0x4e, DW_AT_associated =3D 0x4f, DW_AT_data_location =3D 0x50, DW_AT_stride =3D 0x51, DW_AT_entry_pc =3D 0x52, DW_AT_use_UTF8 =3D 0x53, DW_AT_extension =3D 0x54, DW_AT_ranges =3D 0x55, DW_AT_trampoline =3D 0x56, DW_AT_call_column =3D 0x57, DW_AT_call_file =3D 0x58, DW_AT_call_line =3D 0x59, DW_AT_MIPS_fde =3D 0x2001, DW_AT_MIPS_loop_begin =3D 0x2002, DW_AT_MIPS_tail_loop_begin =3D 0x2003, DW_AT_MIPS_epilog_begin =3D 0x2004, DW_AT_MIPS_loop_unroll_factor =3D 0x2005, DW_AT_MIPS_software_pipeline_depth =3D 0x2006, DW_AT_MIPS_linkage_name =3D 0x2007, DW_AT_MIPS_stride =3D 0x2008, DW_AT_MIPS_abstract_name =3D 0x2009, DW_AT_MIPS_clone_origin =3D 0x200a, DW_AT_MIPS_has_inlines =3D 0x200b, DW_AT_sf_names =3D 0x2101, DW_AT_src_info =3D 0x2102, DW_AT_mac_info =3D 0x2103, DW_AT_src_coords =3D 0x2104, DW_AT_body_begin =3D 0x2105, DW_AT_body_end =3D 0x2106 }; enum dwarf_location_atom { DW_OP_addr =3D 0x03, DW_OP_deref =3D 0x06, DW_OP_const1u =3D 0x08, DW_OP_const1s =3D 0x09, DW_OP_const2u =3D 0x0a, DW_OP_const2s =3D 0x0b, DW_OP_const4u =3D 0x0c, DW_OP_const4s =3D 0x0d, DW_OP_const8u =3D 0x0e, DW_OP_const8s =3D 0x0f, DW_OP_constu =3D 0x10, DW_OP_consts =3D 0x11, DW_OP_dup =3D 0x12, DW_OP_drop =3D 0x13, DW_OP_over =3D 0x14, DW_OP_pick =3D 0x15, DW_OP_swap =3D 0x16, DW_OP_rot =3D 0x17, DW_OP_xderef =3D 0x18, DW_OP_abs =3D 0x19, DW_OP_and =3D 0x1a, DW_OP_div =3D 0x1b, DW_OP_minus =3D 0x1c, DW_OP_mod =3D 0x1d, DW_OP_mul =3D 0x1e, DW_OP_neg =3D 0x1f, DW_OP_not =3D 0x20, DW_OP_or =3D 0x21, DW_OP_plus =3D 0x22, DW_OP_plus_uconst =3D 0x23, DW_OP_shl =3D 0x24, DW_OP_shr =3D 0x25, DW_OP_shra =3D 0x26, DW_OP_xor =3D 0x27, DW_OP_bra =3D 0x28, DW_OP_eq =3D 0x29, DW_OP_ge =3D 0x2a, DW_OP_gt =3D 0x2b, DW_OP_le =3D 0x2c, DW_OP_lt =3D 0x2d, DW_OP_ne =3D 0x2e, DW_OP_skip =3D 0x2f, DW_OP_lit0 =3D 0x30, DW_OP_lit1 =3D 0x31, DW_OP_lit2 =3D 0x32, DW_OP_lit3 =3D 0x33, DW_OP_lit4 =3D 0x34, DW_OP_lit5 =3D 0x35, DW_OP_lit6 =3D 0x36, DW_OP_lit7 =3D 0x37, DW_OP_lit8 =3D 0x38, DW_OP_lit9 =3D 0x39, DW_OP_lit10 =3D 0x3a, DW_OP_lit11 =3D 0x3b, DW_OP_lit12 =3D 0x3c, DW_OP_lit13 =3D 0x3d, DW_OP_lit14 =3D 0x3e, DW_OP_lit15 =3D 0x3f, DW_OP_lit16 =3D 0x40, DW_OP_lit17 =3D 0x41, DW_OP_lit18 =3D 0x42, DW_OP_lit19 =3D 0x43, DW_OP_lit20 =3D 0x44, DW_OP_lit21 =3D 0x45, DW_OP_lit22 =3D 0x46, DW_OP_lit23 =3D 0x47, DW_OP_lit24 =3D 0x48, DW_OP_lit25 =3D 0x49, DW_OP_lit26 =3D 0x4a, DW_OP_lit27 =3D 0x4b, DW_OP_lit28 =3D 0x4c, DW_OP_lit29 =3D 0x4d, DW_OP_lit30 =3D 0x4e, DW_OP_lit31 =3D 0x4f, DW_OP_reg0 =3D 0x50, DW_OP_reg1 =3D 0x51, DW_OP_reg2 =3D 0x52, DW_OP_reg3 =3D 0x53, DW_OP_reg4 =3D 0x54, DW_OP_reg5 =3D 0x55, DW_OP_reg6 =3D 0x56, DW_OP_reg7 =3D 0x57, DW_OP_reg8 =3D 0x58, DW_OP_reg9 =3D 0x59, DW_OP_reg10 =3D 0x5a, DW_OP_reg11 =3D 0x5b, DW_OP_reg12 =3D 0x5c, DW_OP_reg13 =3D 0x5d, DW_OP_reg14 =3D 0x5e, DW_OP_reg15 =3D 0x5f, DW_OP_reg16 =3D 0x60, DW_OP_reg17 =3D 0x61, DW_OP_reg18 =3D 0x62, DW_OP_reg19 =3D 0x63, DW_OP_reg20 =3D 0x64, DW_OP_reg21 =3D 0x65, DW_OP_reg22 =3D 0x66, DW_OP_reg23 =3D 0x67, DW_OP_reg24 =3D 0x68, DW_OP_reg25 =3D 0x69, DW_OP_reg26 =3D 0x6a, DW_OP_reg27 =3D 0x6b, DW_OP_reg28 =3D 0x6c, DW_OP_reg29 =3D 0x6d, DW_OP_reg30 =3D 0x6e, DW_OP_reg31 =3D 0x6f, DW_OP_breg0 =3D 0x70, DW_OP_breg1 =3D 0x71, DW_OP_breg2 =3D 0x72, DW_OP_breg3 =3D 0x73, DW_OP_breg4 =3D 0x74, DW_OP_breg5 =3D 0x75, DW_OP_breg6 =3D 0x76, DW_OP_breg7 =3D 0x77, DW_OP_breg8 =3D 0x78, DW_OP_breg9 =3D 0x79, DW_OP_breg10 =3D 0x7a, DW_OP_breg11 =3D 0x7b, DW_OP_breg12 =3D 0x7c, DW_OP_breg13 =3D 0x7d, DW_OP_breg14 =3D 0x7e, DW_OP_breg15 =3D 0x7f, DW_OP_breg16 =3D 0x80, DW_OP_breg17 =3D 0x81, DW_OP_breg18 =3D 0x82, DW_OP_breg19 =3D 0x83, DW_OP_breg20 =3D 0x84, DW_OP_breg21 =3D 0x85, DW_OP_breg22 =3D 0x86, DW_OP_breg23 =3D 0x87, DW_OP_breg24 =3D 0x88, DW_OP_breg25 =3D 0x89, DW_OP_breg26 =3D 0x8a, DW_OP_breg27 =3D 0x8b, DW_OP_breg28 =3D 0x8c, DW_OP_breg29 =3D 0x8d, DW_OP_breg30 =3D 0x8e, DW_OP_breg31 =3D 0x8f, DW_OP_regx =3D 0x90, DW_OP_fbreg =3D 0x91, DW_OP_bregx =3D 0x92, DW_OP_piece =3D 0x93, DW_OP_deref_size =3D 0x94, DW_OP_xderef_size =3D 0x95, DW_OP_nop =3D 0x96, DW_OP_push_object_address =3D 0x97, DW_OP_call2 =3D 0x98, DW_OP_call4 =3D 0x99, DW_OP_calli =3D 0x9a }; enum dwarf_type { DW_ATE_void =3D 0x0, DW_ATE_address =3D 0x1, DW_ATE_boolean =3D 0x2, DW_ATE_complex_float =3D 0x3, DW_ATE_float =3D 0x4, DW_ATE_signed =3D 0x5, DW_ATE_signed_char =3D 0x6, DW_ATE_unsigned =3D 0x7, DW_ATE_unsigned_char =3D 0x8, DW_ATE_imaginary_float =3D 0x9 }; enum dwarf_array_dim_ordering { DW_ORD_row_major =3D 0, DW_ORD_col_major =3D 1 }; enum dwarf_access_attribute { DW_ACCESS_public =3D 1, DW_ACCESS_protected =3D 2, DW_ACCESS_private =3D 3 }; enum dwarf_visibility_attribute { DW_VIS_local =3D 1, DW_VIS_exported =3D 2, DW_VIS_qualified =3D 3 }; enum dwarf_virtuality_attribute { DW_VIRTUALITY_none =3D 0, DW_VIRTUALITY_virtual =3D 1, DW_VIRTUALITY_pure_virtual =3D 2 }; enum dwarf_id_case { DW_ID_case_sensitive =3D 0, DW_ID_up_case =3D 1, DW_ID_down_case =3D 2, DW_ID_case_insensitive =3D 3 }; enum dwarf_calling_convention { DW_CC_normal =3D 0x1, DW_CC_program =3D 0x2, DW_CC_nocall =3D 0x3 }; enum dwarf_inline_attribute { DW_INL_not_inlined =3D 0, DW_INL_inlined =3D 1, DW_INL_declared_not_inlined =3D 2, DW_INL_declared_inlined =3D 3 }; enum dwarf_discrim_list { DW_DSC_label =3D 0, DW_DSC_range =3D 1 }; enum dwarf_line_number_ops { DW_LNS_extended_op =3D 0, DW_LNS_copy =3D 1, DW_LNS_advance_pc =3D 2, DW_LNS_advance_line =3D 3, DW_LNS_set_file =3D 4, DW_LNS_set_column =3D 5, DW_LNS_negate_stmt =3D 6, DW_LNS_set_basic_block =3D 7, DW_LNS_const_add_pc =3D 8, DW_LNS_fixed_advance_pc =3D 9 }; enum dwarf_line_number_x_ops { DW_LNE_end_sequence =3D 1, DW_LNE_set_address =3D 2, DW_LNE_define_file =3D 3 }; enum dwarf_call_frame_info { DW_CFA_advance_loc =3D 0x40, DW_CFA_offset =3D 0x80, DW_CFA_restore =3D 0xc0, DW_CFA_nop =3D 0x00, DW_CFA_set_loc =3D 0x01, DW_CFA_advance_loc1 =3D 0x02, DW_CFA_advance_loc2 =3D 0x03, DW_CFA_advance_loc4 =3D 0x04, DW_CFA_offset_extended =3D 0x05, DW_CFA_restore_extended =3D 0x06, DW_CFA_undefined =3D 0x07, DW_CFA_same_value =3D 0x08, DW_CFA_register =3D 0x09, DW_CFA_remember_state =3D 0x0a, DW_CFA_restore_state =3D 0x0b, DW_CFA_def_cfa =3D 0x0c, DW_CFA_def_cfa_register =3D 0x0d, DW_CFA_def_cfa_offset =3D 0x0e, DW_CFA_def_cfa_expression =3D 0x0f, DW_CFA_expression =3D 0x10, DW_CFA_offset_extended_sf =3D 0x11, DW_CFA_def_cfa_sf =3D 0x12, DW_CFA_def_cfa_offset_sf =3D 0x13, DW_CFA_MIPS_advance_loc8 =3D 0x1d, DW_CFA_GNU_window_save =3D 0x2d, DW_CFA_GNU_args_size =3D 0x2e, DW_CFA_GNU_negative_offset_extended =3D 0x2f }; # 561 "/nfs/oz/home/oldham/gcc/gcc5/gcc/dwarf2.h" enum dwarf_source_language { DW_LANG_C89 =3D 0x0001, DW_LANG_C =3D 0x0002, DW_LANG_Ada83 =3D 0x0003, DW_LANG_C_plus_plus =3D 0x0004, DW_LANG_Cobol74 =3D 0x0005, DW_LANG_Cobol85 =3D 0x0006, DW_LANG_Fortran77 =3D 0x0007, DW_LANG_Fortran90 =3D 0x0008, DW_LANG_Pascal83 =3D 0x0009, DW_LANG_Modula2 =3D 0x000a, DW_LANG_Java =3D 0x000b, DW_LANG_C99 =3D 0x000c, DW_LANG_Ada95 =3D 0x000d, DW_LANG_Fortran95 =3D 0x000e, DW_LANG_Mips_Assembler =3D 0x8001 }; enum dwarf_macinfo_record_type { DW_MACINFO_define =3D 1, DW_MACINFO_undef =3D 2, DW_MACINFO_start_file =3D 3, DW_MACINFO_end_file =3D 4, DW_MACINFO_vendor_ext =3D 255 }; # 24 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" 1 # 32 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" typedef unsigned _Unwind_Word __attribute__((__mode__(__word__))); typedef signed _Unwind_Sword __attribute__((__mode__(__word__))); typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); typedef enum { _URC_NO_REASON =3D 0, _URC_FOREIGN_EXCEPTION_CAUGHT =3D 1, _URC_FATAL_PHASE2_ERROR =3D 2, _URC_FATAL_PHASE1_ERROR =3D 3, _URC_NORMAL_STOP =3D 4, _URC_END_OF_STACK =3D 5, _URC_HANDLER_FOUND =3D 6, _URC_INSTALL_CONTEXT =3D 7, _URC_CONTINUE_UNWIND =3D 8 } _Unwind_Reason_Code; # 64 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" struct _Unwind_Exception; typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, struct _Unwind_Exception *); struct _Unwind_Exception { _Unwind_Exception_Class exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup; _Unwind_Word private_1; _Unwind_Word private_2; } __attribute__((__aligned__)); typedef int _Unwind_Action; # 95 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" struct _Unwind_Context; extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception= *); typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *, void *); extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); extern void _Unwind_DeleteException (struct _Unwind_Exception *); extern void _Unwind_Resume (struct _Unwind_Exception *); extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); # 147 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *); struct SjLj_Function_Context; extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException (struct _Unwind_Exception *); extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *); # 185 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.h" extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); # 25 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-pe.h" 1 # 59 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-pe.h" static unsigned int size_of_encoded_value (unsigned char encoding) { if (encoding =3D=3D 0xff) return 0; switch (encoding & 0x07) { case 0x00: return sizeof (void *); case 0x02: return 2; case 0x03: return 4; case 0x04: return 8; } abort (); } static _Unwind_Ptr base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *cont= ext) { if (encoding =3D=3D 0xff) return 0; switch (encoding & 0x70) { case 0x00: case 0x10: case 0x50: return 0; case 0x20: return _Unwind_GetTextRelBase (context); case 0x30: return _Unwind_GetDataRelBase (context); case 0x40: return _Unwind_GetRegionStart (context); } abort (); } static const unsigned char * read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, const unsigned char *p, _Unwind_Ptr *val) { union unaligned { void *ptr; unsigned u2 __attribute__ ((mode (HI))); unsigned u4 __attribute__ ((mode (SI))); unsigned u8 __attribute__ ((mode (DI))); signed s2 __attribute__ ((mode (HI))); signed s4 __attribute__ ((mode (SI))); signed s8 __attribute__ ((mode (DI))); } __attribute__((__packed__)); union unaligned *u =3D (union unaligned *) p; _Unwind_Ptr result; if (encoding =3D=3D 0x50) { _Unwind_Ptr a =3D (_Unwind_Ptr)p; a =3D (a + sizeof (void *) - 1) & - sizeof(void *); result =3D *(_Unwind_Ptr *) a; p =3D (const unsigned char *)(a + sizeof (void *)); } else { switch (encoding & 0x0f) { case 0x00: result =3D (_Unwind_Ptr) u->ptr; p +=3D sizeof (void *); break; case 0x01: { unsigned int shift =3D 0; unsigned char byte; result =3D 0; do { byte =3D *p++; result |=3D (_Unwind_Ptr)(byte & 0x7f) << shift; shift +=3D 7; } while (byte & 0x80); } break; case 0x09: { unsigned int shift =3D 0; unsigned char byte; result =3D 0; do { byte =3D *p++; result |=3D (_Unwind_Ptr)(byte & 0x7f) << shift; shift +=3D 7; } while (byte & 0x80); if (shift < 8 * sizeof(result) && (byte & 0x40) !=3D 0) result |=3D -(1L << shift); } break; case 0x02: result =3D u->u2; p +=3D 2; break; case 0x03: result =3D u->u4; p +=3D 4; break; case 0x04: result =3D u->u8; p +=3D 8; break; case 0x0A: result =3D u->s2; p +=3D 2; break; case 0x0B: result =3D u->s4; p +=3D 4; break; case 0x0C: result =3D u->s8; p +=3D 8; break; default: abort (); } if (result !=3D 0) { result +=3D ((encoding & 0x70) =3D=3D 0x10 ? (_Unwind_Ptr)u : base); if (encoding & 0x80) result =3D *(_Unwind_Ptr *)result; } } *val =3D result; return p; } static __inline__ const unsigned char * read_encoded_value (struct _Unwind_Context *context, unsigned char encoding, const unsigned char *p, _Unwind_Ptr *val) { return read_encoded_value_with_base (encoding, base_of_encoded_value (encoding, context), p, val); } static __inline__ const unsigned char * read_uleb128 (const unsigned char *p, _Unwind_Ptr *val) { return read_encoded_value_with_base (0x01, 0, p, val); } static __inline__ const unsigned char * read_sleb128 (const unsigned char *p, _Unwind_Ptr *val) { return read_encoded_value_with_base (0x09, 0, p, val); } # 26 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2-fde.h" 1 # 32 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2-fde.h" struct fde_vector { void *orig_data; size_t count; struct dwarf_fde *array[]; }; struct object { void *pc_begin; void *tbase; void *dbase; union { struct dwarf_fde *single; struct dwarf_fde **array; struct fde_vector *sort; } u; union { struct { unsigned long sorted : 1; unsigned long from_array : 1; unsigned long mixed_encoding : 1; unsigned long encoding : 8; unsigned long count : 21; } b; size_t i; } s; struct object *next; }; struct old_object { void *pc_begin; void *pc_end; struct dwarf_fde *fde_begin; struct dwarf_fde **fde_array; size_t count; struct old_object *next; }; struct dwarf_eh_bases { void *tbase; void *dbase; void *func; }; extern void __register_frame_info_bases (void *, struct object *, void *, void *); extern void __register_frame_info (void *, struct object *); extern void __register_frame (void *); extern void __register_frame_info_table_bases (void *, struct object *, void *, void *); extern void __register_frame_info_table (void *, struct object *); extern void __register_frame_table (void *); extern void *__deregister_frame_info (void *); extern void *__deregister_frame_info_bases (void *); extern void __deregister_frame (void *); typedef int sword __attribute__ ((mode (SI))); typedef unsigned int uword __attribute__ ((mode (SI))); typedef unsigned int uaddr __attribute__ ((mode (pointer))); typedef int saddr __attribute__ ((mode (pointer))); typedef unsigned char ubyte; # 129 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2-fde.h" struct dwarf_cie { uword length; sword CIE_id; ubyte version; unsigned char augmentation[]; } __attribute__ ((packed, aligned (__alignof__ (void *)))); struct dwarf_fde { uword length; sword CIE_delta; unsigned char pc_begin[]; } __attribute__ ((packed, aligned (__alignof__ (void *)))); typedef struct dwarf_fde fde; static __inline__ struct dwarf_cie * get_cie (struct dwarf_fde *f) { return (void *)&f->CIE_delta - f->CIE_delta; } static __inline__ fde * next_fde (fde *f) { return (fde *)((char *)f + f->length + sizeof (f->length)); } extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *); # 27 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr.h" 1 # 102 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr.h" # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr-single.h" 1 # 34 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr-single.h" typedef int __gthread_mutex_t; # 211 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr-single.h" static __inline__ int __gthread_active_p (void) { return 0; } static __inline__ int __gthread_mutex_lock (__gthread_mutex_t * mutex __attribute__((unused))) { return 0; } static __inline__ int __gthread_mutex_trylock (__gthread_mutex_t * mutex __attribute__((unused))) { return 0; } static __inline__ int __gthread_mutex_unlock (__gthread_mutex_t * mutex __attribute__((unused))) { return 0; } # 103 "/nfs/oz/home/oldham/gcc/gcc5/gcc/gthr.h" 2 # 28 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 # 46 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" struct _Unwind_Context { void *reg[17 +1]; void *cfa; void *ra; void *lsda; struct dwarf_eh_bases bases; _Unwind_Word args_size; }; static unsigned char dwarf_reg_size_table[17]; typedef struct { struct frame_state_reg_info { struct { union { unsigned int reg; _Unwind_Sword offset; const unsigned char *exp; } loc; enum { REG_UNSAVED, REG_SAVED_OFFSET, REG_SAVED_REG, REG_SAVED_EXP, } how; } reg[17 +1]; struct frame_state_reg_info *prev; } regs; _Unwind_Sword cfa_offset; _Unwind_Word cfa_reg; const unsigned char *cfa_exp; enum { CFA_UNSET, CFA_REG_OFFSET, CFA_EXP, } cfa_how; void *pc; _Unwind_Personality_Fn personality; signed int data_align; unsigned int code_align; unsigned char retaddr_column; unsigned char fde_encoding; unsigned char lsda_encoding; unsigned char saw_z; } _Unwind_FrameState; union unaligned { void *p; unsigned u2 __attribute__ ((mode (HI))); unsigned u4 __attribute__ ((mode (SI))); unsigned u8 __attribute__ ((mode (DI))); signed s2 __attribute__ ((mode (HI))); signed s4 __attribute__ ((mode (SI))); signed s8 __attribute__ ((mode (DI))); } __attribute__ ((packed)); static __inline__ void * read_pointer (const void *p) { const union unaligned *up =3D p; return up->= p; } static __inline__ int read_1u (const void *p) { return *(const unsigned char *)p; } static __inline__ int read_1s (const void *p) { return *(const signed char *)p; } static __inline__ int read_2u (const void *p) { const union unaligned *up =3D p; return up->u2; } static __inline__ int read_2s (const void *p) { const union unaligned *up =3D p; return up->s2; } static __inline__ unsigned int read_4u (const void *p) { const union unaligned *up =3D p; return up->u4; } static __inline__ int read_4s (const void *p) { const union unaligned *up =3D p; return up->s4; } static __inline__ unsigned long read_8u (const void *p) { const union unaligned *up =3D p; return up->u8; } static __inline__ unsigned long read_8s (const void *p) { const union unaligned *up =3D p; return up->s8; } __inline__ _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *context, int index) { return * (_Unwind_Word *) context->reg[index]; } __inline__ void _Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val) { * (_Unwind_Word *) context->reg[index] =3D val; } __inline__ _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *context) { return (_Unwind_Ptr) context->ra; } __inline__ void _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val) { context->ra =3D (void *) val; } void * _Unwind_GetLanguageSpecificData (struct _Unwind_Context *context) { return context->lsda; } _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *context) { return (_Unwind_Ptr) context->bases.func; } _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *context) { return (_Unwind_Ptr) context->bases.dbase; } _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *context) { return (_Unwind_Ptr) context->bases.tbase; } static const unsigned char * extract_cie_info (struct dwarf_cie *cie, struct _Unwind_Context *context, _Unwind_FrameState *fs) { const unsigned char *aug =3D cie->augmentation; const unsigned char *p =3D aug + strlen (aug) + 1; const unsigned char *ret =3D ((void *)0); _Unwind_Ptr tmp; p =3D read_uleb128 (p, &tmp); fs->code_align =3D tmp; p =3D read_sleb128 (p, &tmp); fs->data_align =3D (saddr) tmp; fs->retaddr_column =3D *p++; fs->lsda_encoding =3D 0xff; if (*aug =3D=3D 'z') { p =3D read_uleb128 (p, &tmp); ret =3D p + tmp; fs->saw_z =3D 1; ++aug; } while (*aug !=3D '\0') { if (aug[0] =3D=3D 'e' && aug[1] =3D=3D 'h') { p +=3D sizeof (void *); aug +=3D 2; } else if (aug[0] =3D=3D 'L') { fs->lsda_encoding =3D *p++; aug +=3D 1; } else if (aug[0] =3D=3D 'R') { fs->fde_encoding =3D *p++; aug +=3D 1; } else if (aug[0] =3D=3D 'P') { p =3D read_encoded_value (context, *p, p + 1, (_Unwind_Ptr *) &fs->personality); aug +=3D 1; } else return ret; } return ret ? ret : p; } static _Unwind_Word execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end, struct _Unwind_Context *context, _Unwind_Word initial) { _Unwind_Word stack[64]; int stack_elt; stack[0] =3D initial; stack_elt =3D 1; while (op_ptr < op_end) { enum dwarf_location_atom op =3D *op_ptr++; _Unwind_Word result, reg; _Unwind_Sword offset; _Unwind_Ptr ptrtmp; switch (op) { case DW_OP_lit0: case DW_OP_lit1: case DW_OP_lit2: case DW_OP_lit3: case DW_OP_lit4: case DW_OP_lit5: case DW_OP_lit6: case DW_OP_lit7: case DW_OP_lit8: case DW_OP_lit9: case DW_OP_lit10: case DW_OP_lit11: case DW_OP_lit12: case DW_OP_lit13: case DW_OP_lit14: case DW_OP_lit15: case DW_OP_lit16: case DW_OP_lit17: case DW_OP_lit18: case DW_OP_lit19: case DW_OP_lit20: case DW_OP_lit21: case DW_OP_lit22: case DW_OP_lit23: case DW_OP_lit24: case DW_OP_lit25: case DW_OP_lit26: case DW_OP_lit27: case DW_OP_lit28: case DW_OP_lit29: case DW_OP_lit30: case DW_OP_lit31: result =3D op - DW_OP_lit0; break; case DW_OP_addr: result =3D (_Unwind_Word) (_Unwind_Ptr) read_pointer (op_ptr); op_ptr +=3D sizeof (void *); break; case DW_OP_const1u: result =3D read_1u (op_ptr); op_ptr +=3D 1; break; case DW_OP_const1s: result =3D read_1s (op_ptr); op_ptr +=3D 1; break; case DW_OP_const2u: result =3D read_2u (op_ptr); op_ptr +=3D 2; break; case DW_OP_const2s: result =3D read_2s (op_ptr); op_ptr +=3D 2; break; case DW_OP_const4u: result =3D read_4u (op_ptr); op_ptr +=3D 4; break; case DW_OP_const4s: result =3D read_4s (op_ptr); op_ptr +=3D 4; break; case DW_OP_const8u: result =3D read_8u (op_ptr); op_ptr +=3D 8; break; case DW_OP_const8s: result =3D read_8s (op_ptr); op_ptr +=3D 8; break; case DW_OP_constu: op_ptr =3D read_uleb128 (op_ptr, &ptrtmp); result =3D ptrtmp; break; case DW_OP_consts: op_ptr =3D read_sleb128 (op_ptr, &ptrtmp); result =3D (saddr)ptrtmp; break; case DW_OP_reg0: case DW_OP_reg1: case DW_OP_reg2: case DW_OP_reg3: case DW_OP_reg4: case DW_OP_reg5: case DW_OP_reg6: case DW_OP_reg7: case DW_OP_reg8: case DW_OP_reg9: case DW_OP_reg10: case DW_OP_reg11: case DW_OP_reg12: case DW_OP_reg13: case DW_OP_reg14: case DW_OP_reg15: case DW_OP_reg16: case DW_OP_reg17: case DW_OP_reg18: case DW_OP_reg19: case DW_OP_reg20: case DW_OP_reg21: case DW_OP_reg22: case DW_OP_reg23: case DW_OP_reg24: case DW_OP_reg25: case DW_OP_reg26: case DW_OP_reg27: case DW_OP_reg28: case DW_OP_reg29: case DW_OP_reg30: case DW_OP_reg31: result =3D _Unwind_GetGR (context, op - DW_OP_reg0); break; case DW_OP_regx: op_ptr =3D read_uleb128 (op_ptr, &ptrtmp); reg =3D ptrtmp; result =3D _Unwind_GetGR (context, reg); break; case DW_OP_breg0: case DW_OP_breg1: case DW_OP_breg2: case DW_OP_breg3: case DW_OP_breg4: case DW_OP_breg5: case DW_OP_breg6: case DW_OP_breg7: case DW_OP_breg8: case DW_OP_breg9: case DW_OP_breg10: case DW_OP_breg11: case DW_OP_breg12: case DW_OP_breg13: case DW_OP_breg14: case DW_OP_breg15: case DW_OP_breg16: case DW_OP_breg17: case DW_OP_breg18: case DW_OP_breg19: case DW_OP_breg20: case DW_OP_breg21: case DW_OP_breg22: case DW_OP_breg23: case DW_OP_breg24: case DW_OP_breg25: case DW_OP_breg26: case DW_OP_breg27: case DW_OP_breg28: case DW_OP_breg29: case DW_OP_breg30: case DW_OP_breg31: op_ptr =3D read_sleb128 (op_ptr, &ptrtmp); offset =3D (saddr)ptrt= mp; result =3D _Unwind_GetGR (context, op - DW_OP_breg0) + offset; break; case DW_OP_bregx: op_ptr =3D read_uleb128 (op_ptr, &ptrtmp); reg =3D ptrtmp; op_ptr =3D read_sleb128 (op_ptr, &ptrtmp); offset =3D (saddr)ptrt= mp; result =3D _Unwind_GetGR (context, reg) + offset; break; case DW_OP_dup: if (stack_elt < 1) abort (); result =3D stack[stack_elt - 1]; break; case DW_OP_drop: if (--stack_elt < 0) abort (); goto no_push; case DW_OP_pick: offset =3D *op_ptr++; if (offset >=3D stack_elt - 1) abort (); result =3D stack[stack_elt - 1 - offset]; break; case DW_OP_over: if (stack_elt < 2) abort (); result =3D stack[stack_elt - 2]; break; case DW_OP_rot: { _Unwind_Word t1, t2, t3; if (stack_elt < 3) abort (); t1 =3D stack[stack_elt - 1]; t2 =3D stack[stack_elt - 2]; t3 =3D stack[stack_elt - 3]; stack[stack_elt - 1] =3D t2; stack[stack_elt - 2] =3D t3; stack[stack_elt - 3] =3D t1; goto no_push; } case DW_OP_deref: case DW_OP_deref_size: case DW_OP_abs: case DW_OP_neg: case DW_OP_not: case DW_OP_plus_uconst: if (--stack_elt < 0) abort (); result =3D stack[stack_elt]; switch (op) { case DW_OP_deref: { void *ptr =3D (void *)(_Unwind_Ptr) result; result =3D (_Unwind_Ptr) read_pointer (ptr); } break; case DW_OP_deref_size: { void *ptr =3D (void *)(_Unwind_Ptr) result; switch (*op_ptr++) { case 1: result =3D read_1u (ptr); break; case 2: result =3D read_2u (ptr); break; case 4: result =3D read_4u (ptr); break; case 8: result =3D read_8u (ptr); break; default: abort (); } } break; case DW_OP_abs: if ((_Unwind_Sword) result < 0) result =3D -result; break; case DW_OP_neg: result =3D -result; break; case DW_OP_not: result =3D ~result; break; case DW_OP_plus_uconst: op_ptr =3D read_uleb128 (op_ptr, &ptrtmp); reg =3D ptrtmp; result +=3D reg; break; } break; case DW_OP_and: case DW_OP_div: case DW_OP_minus: case DW_OP_mod: case DW_OP_mul: case DW_OP_or: case DW_OP_plus: case DW_OP_le: case DW_OP_ge: case DW_OP_eq: case DW_OP_lt: case DW_OP_gt: case DW_OP_ne: { _Unwind_Word first, second; if ((stack_elt -=3D 2) < 0) abort (); second =3D stack[stack_elt]; first =3D stack[stack_elt + 1]; switch (op) { case DW_OP_and: result =3D second & first; break; case DW_OP_div: result =3D (_Unwind_Sword)second / (_Unwind_Sword)first; break; case DW_OP_minus: result =3D second - first; break; case DW_OP_mod: result =3D (_Unwind_Sword)second % (_Unwind_Sword)first; break; case DW_OP_mul: result =3D second * first; break; case DW_OP_or: result =3D second | first; break; case DW_OP_plus: result =3D second + first; break; case DW_OP_shl: result =3D second << first; break; case DW_OP_shr: result =3D second >> first; break; case DW_OP_shra: result =3D (_Unwind_Sword)second >> first; break; case DW_OP_xor: result =3D second ^ first; break; case DW_OP_le: result =3D (_Unwind_Sword)first <=3D (_Unwind_Sword)second; break; case DW_OP_ge: result =3D (_Unwind_Sword)first >=3D (_Unwind_Sword)second; break; case DW_OP_eq: result =3D (_Unwind_Sword)first =3D=3D (_Unwind_Sword)second; break; case DW_OP_lt: result =3D (_Unwind_Sword)first < (_Unwind_Sword)second; break; case DW_OP_gt: result =3D (_Unwind_Sword)first > (_Unwind_Sword)second; break; case DW_OP_ne: result =3D (_Unwind_Sword)first !=3D (_Unwind_Sword)second; break; } } break; case DW_OP_skip: offset =3D read_2s (op_ptr); op_ptr +=3D 2; op_ptr +=3D offset; goto no_push; case DW_OP_bra: if (--stack_elt < 0) abort (); offset =3D read_2s (op_ptr); op_ptr +=3D 2; if (stack[stack_elt] !=3D 0) op_ptr +=3D offset; goto no_push; case DW_OP_nop: goto no_push; default: abort (); } if ((size_t) stack_elt >=3D sizeof(stack)/sizeof(*stack)) abort (); stack[++stack_elt] =3D result; no_push:; } if (--stack_elt < 0) abort (); return stack[stack_elt]; } static void execute_cfa_program (const unsigned char *insn_ptr, const unsigned char *insn_end, struct _Unwind_Context *context, _Unwind_FrameState *fs) { struct frame_state_reg_info *unused_rs =3D ((void *)0); fs->regs.prev =3D ((void *)0); while (insn_ptr < insn_end && fs->pc < context->ra) { unsigned char insn =3D *insn_ptr++; _Unwind_Word reg; _Unwind_Sword offset; _Unwind_Ptr ptrtmp; if (insn & DW_CFA_advance_loc) fs->pc +=3D (insn & 0x3f) * fs->code_align; else if (insn & DW_CFA_offset) { reg =3D insn & 0x3f; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); offset =3D ptrtmp * fs->data_align; fs->regs.reg[reg].how =3D REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset =3D offset; } else if (insn & DW_CFA_restore) { reg =3D insn & 0x3f; fs->regs.reg[reg].how =3D REG_UNSAVED; } else switch (insn) { case DW_CFA_set_loc: insn_ptr =3D read_encoded_value (context, fs->fde_encoding, insn_ptr, (_Unwind_Ptr *) &fs->pc); break; case DW_CFA_advance_loc1: fs->pc +=3D read_1u (insn_ptr) * fs->code_align; insn_ptr +=3D 1; break; case DW_CFA_advance_loc2: fs->pc +=3D read_2u (insn_ptr) * fs->code_align; insn_ptr +=3D 2; break; case DW_CFA_advance_loc4: fs->pc +=3D read_4u (insn_ptr) * fs->code_align; insn_ptr +=3D 4; break; case DW_CFA_offset_extended: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); offset =3D ptrtmp * fs->data_align; fs->regs.reg[reg].how =3D REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset =3D offset; break; case DW_CFA_restore_extended: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; fs->regs.reg[reg].how =3D REG_UNSAVED; break; case DW_CFA_undefined: case DW_CFA_same_value: case DW_CFA_nop: break; case DW_CFA_register: { _Unwind_Word reg2; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg2 =3D ptrtmp; fs->regs.reg[reg].how =3D REG_SAVED_REG; fs->regs.reg[reg].loc.reg =3D reg2; } break; case DW_CFA_remember_state: { struct frame_state_reg_info *new_rs; if (unused_rs) { new_rs =3D unused_rs; unused_rs =3D unused_rs->prev; } else new_rs =3D __builtin_alloca (sizeof (struct frame_state_reg_i= nfo)); *new_rs =3D fs->regs; fs->regs.prev =3D new_rs; } break; case DW_CFA_restore_state: { struct frame_state_reg_info *old_rs =3D fs->regs.prev; fs->regs =3D *old_rs; old_rs->prev =3D unused_rs; unused_rs =3D old_rs; } break; case DW_CFA_def_cfa: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_reg =3D ptrtmp; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_offset =3D ptrtmp; fs->cfa_how =3D CFA_REG_OFFSET; break; case DW_CFA_def_cfa_register: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_reg =3D ptrtmp; fs->cfa_how =3D CFA_REG_OFFSET; break; case DW_CFA_def_cfa_offset: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_offset =3D ptrtmp; break; case DW_CFA_def_cfa_expression: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_exp =3D insn_ptr; fs->cfa_how =3D CFA_EXP; insn_ptr +=3D ptrtmp; break; case DW_CFA_expression: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->regs.reg[reg].how =3D REG_SAVED_EXP; fs->regs.reg[reg].loc.exp =3D insn_ptr; insn_ptr +=3D ptrtmp; break; case DW_CFA_offset_extended_sf: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; insn_ptr =3D read_sleb128 (insn_ptr, &ptrtmp); offset =3D (saddr)ptrtmp * fs->data_align; fs->regs.reg[reg].how =3D REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset =3D offset; break; case DW_CFA_def_cfa_sf: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_reg =3D ptrtmp; insn_ptr =3D read_sleb128 (insn_ptr, &ptrtmp); fs->cfa_offset =3D (saddr)ptrtmp; fs->cfa_how =3D CFA_REG_OFFSET; break; case DW_CFA_def_cfa_offset_sf: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); fs->cfa_offset =3D ptrtmp; break; case DW_CFA_GNU_window_save: for (reg =3D 16; reg < 32; ++reg) { fs->regs.reg[reg].how =3D REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset =3D (reg - 16) * sizeof (void *); } break; case DW_CFA_GNU_args_size: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); context->args_size =3D ptrtmp; break; case DW_CFA_GNU_negative_offset_extended: insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); reg =3D ptrtmp; insn_ptr =3D read_uleb128 (insn_ptr, &ptrtmp); offset =3D ptrtmp * fs->data_align; fs->regs.reg[reg].how =3D REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset =3D -offset; break; default: abort (); } } } static _Unwind_Reason_Code uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs) { struct dwarf_fde *fde; struct dwarf_cie *cie; const unsigned char *aug, *insn, *end; (__extension__ (__builtin_constant_p (sizeof (*fs)) && (sizeof (*fs)) <= =3D 16 ? ((sizeof (*fs)) =3D=3D 1 ? ({ void *__s =3D (fs); *((__uint8_t *) = __s) =3D (__uint8_t) 0; __s; }) : ({ void *__s =3D (fs); union { unsigned i= nt __ui; unsigned short int __usi; unsigned char __uc; } *__u =3D __s; __ui= nt8_t __c =3D (__uint8_t) (0); switch ((unsigned int) (sizeof (*fs))) { cas= e 15: __u->__ui =3D __c * 0x01010101; __u =3D __extension__ ((void *) __u += 4); case 11: __u->__ui =3D __c * 0x01010101; __u =3D __extension__ ((void = *) __u + 4); case 7: __u->__ui =3D __c * 0x01010101; __u =3D __extension__ = ((void *) __u + 4); case 3: __u->__usi =3D (unsigned short int) __c * 0x010= 1; __u =3D __extension__ ((void *) __u + 2); __u->__uc =3D (unsigned char) = __c; break; case 14: __u->__ui =3D __c * 0x01010101; __u =3D __extension__ = ((void *) __u + 4); case 10: __u->__ui =3D __c * 0x01010101; __u =3D __exte= nsion__ ((void *) __u + 4); case 6: __u->__ui =3D __c * 0x01010101; __u =3D= __extension__ ((void *) __u + 4); case 2: __u->__usi =3D (unsigned short i= nt) __c * 0x0101; break; case 13: __u->__ui =3D __c * 0x01010101; __u =3D _= _extension__ ((void *) __u + 4); case 9: __u->__ui =3D __c * 0x01010101; __= u =3D __extension__ ((void *) __u + 4); case 5: __u->__ui =3D __c * 0x01010= 101; __u =3D __extension__ ((void *) __u + 4); case 1: __u->__uc =3D (unsig= ned char) __c; break; case 16: __u->__ui =3D __c * 0x01010101; __u =3D __ex= tension__ ((void *) __u + 4); case 12: __u->__ui =3D __c * 0x01010101; __u = =3D __extension__ ((void *) __u + 4); case 8: __u->__ui =3D __c * 0x0101010= 1; __u =3D __extension__ ((void *) __u + 4); case 4: __u->__ui =3D __c * 0x= 01010101; case 0: break; } __s; })) : (__builtin_constant_p (0) && (0) =3D= =3D '\0' ? ({ void *__s =3D (fs); __builtin_memset (__s, '\0', sizeof (*fs)= ); __s; }) : memset (fs, 0, sizeof (*fs))))); context->args_size =3D 0; context->lsda =3D 0; fde =3D _Unwind_Find_FDE (context->ra - 1, &context->bases); if (fde =3D=3D ((void *)0)) { do { unsigned char *pc_ =3D (context)->ra; struct sigcontext *sc_; lo= ng new_cfa_; if (*(unsigned short *)(pc_+0) =3D=3D 0xb858 && *(unsigned int= *)(pc_+2) =3D=3D 119 && *(unsigned short *)(pc_+6) =3D=3D 0x80cd) sc_ =3D = (context)->cfa + 4; else if (*(unsigned char *)(pc_+0) =3D=3D 0xb8 && *(uns= igned int *)(pc_+1) =3D=3D 173 && *(unsigned short *)(pc_+5) =3D=3D 0x80cd)= { struct rt_sigframe { int sig; struct siginfo *pinfo; void *puc; struct s= iginfo info; struct ucontext uc; } *rt_ =3D (context)->cfa; sc_ =3D (struct= sigcontext *) &rt_->uc.uc_mcontext; } else break; new_cfa_ =3D sc_->esp; (= fs)->cfa_how =3D CFA_REG_OFFSET; (fs)->cfa_reg =3D 4; (fs)->cfa_offset =3D = new_cfa_ - (long) (context)->cfa; (fs)->regs.reg[0].how =3D REG_SAVED_OFFSE= T; (fs)->regs.reg[0].loc.offset =3D (long)&sc_->eax - new_cfa_; (fs)->regs.= reg[3].how =3D REG_SAVED_OFFSET; (fs)->regs.reg[3].loc.offset =3D (long)&sc= _->ebx - new_cfa_; (fs)->regs.reg[1].how =3D REG_SAVED_OFFSET; (fs)->regs.r= eg[1].loc.offset =3D (long)&sc_->ecx - new_cfa_; (fs)->regs.reg[2].how =3D = REG_SAVED_OFFSET; (fs)->regs.reg[2].loc.offset =3D (long)&sc_->edx - new_cf= a_; (fs)->regs.reg[6].how =3D REG_SAVED_OFFSET; (fs)->regs.reg[6].loc.offse= t =3D (long)&sc_->esi - new_cfa_; (fs)->regs.reg[7].how =3D REG_SAVED_OFFSE= T; (fs)->regs.reg[7].loc.offset =3D (long)&sc_->edi - new_cfa_; (fs)->regs.= reg[5].how =3D REG_SAVED_OFFSET; (fs)->regs.reg[5].loc.offset =3D (long)&sc= _->ebp - new_cfa_; (fs)->regs.reg[8].how =3D REG_SAVED_OFFSET; (fs)->regs.r= eg[8].loc.offset =3D (long)&sc_->eip - new_cfa_; (fs)->retaddr_column =3D 8= ; goto success; } while (0); return _URC_END_OF_STACK; success: return _URC_NO_REASON; } fs->pc =3D context->bases.func; cie =3D get_cie (fde); insn =3D extract_cie_info (cie, context, fs); if (insn =3D=3D ((void *)0)) return _URC_FATAL_PHASE1_ERROR; end =3D (unsigned char *) next_fde ((struct dwarf_fde *) cie); execute_cfa_program (insn, end, context, fs); aug =3D (unsigned char *)fde + sizeof (*fde); aug +=3D 2 * size_of_encoded_value (fs->fde_encoding); insn =3D ((void *)0); if (fs->saw_z) { _Unwind_Ptr i; aug =3D read_uleb128 (aug, &i); insn =3D aug + i; } if (fs->lsda_encoding !=3D 0xff) aug =3D read_encoded_value (context, fs->lsda_encoding, aug, (_Unwind_Ptr *) &context->lsda); if (insn =3D=3D ((void *)0)) insn =3D aug; end =3D (unsigned char *) next_fde (fde); execute_cfa_program (insn, end, context, fs); return _URC_NO_REASON; } static void uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *f= s) { struct _Unwind_Context orig_context =3D *context; void *cfa; long i; switch (fs->cfa_how) { case CFA_REG_OFFSET: if (context->reg[fs->cfa_reg] =3D=3D ((void *)0)) cfa =3D context->cfa; else cfa =3D (void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->cfa_reg); cfa +=3D fs->cfa_offset; break; case CFA_EXP: { const unsigned char *exp =3D fs->cfa_exp; _Unwind_Ptr len; exp =3D read_uleb128 (exp, &len); cfa =3D (void *) (_Unwind_Ptr) execute_stack_op (exp, exp + len, context, 0); break; } default: abort (); } context->cfa =3D cfa; for (i =3D 0; i < 17 + 1; ++i) switch (fs->regs.reg[i].how) { case REG_UNSAVED: break; case REG_SAVED_OFFSET: context->reg[i] =3D cfa + fs->regs.reg[i].loc.offset; break; case REG_SAVED_REG: context->reg[i] =3D orig_context.reg[fs->regs.reg[i].loc.reg]; break; case REG_SAVED_EXP: { const unsigned char *exp =3D fs->regs.reg[i].loc.exp; _Unwind_Ptr len; _Unwind_Ptr val; exp =3D read_uleb128 (exp, &len); val =3D execute_stack_op (exp, exp + len, &orig_context, (_Unwind_Ptr) cfa); context->reg[i] =3D (void *) val; } break; } } static void uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs) { uw_update_context_1 (context, fs); context->ra =3D __builtin_extract_return_addr ((void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->retaddr_column)); } # 1035 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" static void uw_init_context_1 (struct _Unwind_Context *context, void *outer_cfa, void *outer_ra) { void *ra =3D __builtin_extract_return_addr (__builtin_return_address (0)); _Unwind_FrameState fs; (__extension__ (__builtin_constant_p (sizeof (struct _Unwind_Context)) &&= (sizeof (struct _Unwind_Context)) <=3D 16 ? ((sizeof (struct _Unwind_Conte= xt)) =3D=3D 1 ? ({ void *__s =3D (context); *((__uint8_t *) __s) =3D (__uin= t8_t) 0; __s; }) : ({ void *__s =3D (context); union { unsigned int __ui; u= nsigned short int __usi; unsigned char __uc; } *__u =3D __s; __uint8_t __c = =3D (__uint8_t) (0); switch ((unsigned int) (sizeof (struct _Unwind_Context= ))) { case 15: __u->__ui =3D __c * 0x01010101; __u =3D __extension__ ((void= *) __u + 4); case 11: __u->__ui =3D __c * 0x01010101; __u =3D __extension_= _ ((void *) __u + 4); case 7: __u->__ui =3D __c * 0x01010101; __u =3D __ext= ension__ ((void *) __u + 4); case 3: __u->__usi =3D (unsigned short int) __= c * 0x0101; __u =3D __extension__ ((void *) __u + 2); __u->__uc =3D (unsign= ed char) __c; break; case 14: __u->__ui =3D __c * 0x01010101; __u =3D __ext= ension__ ((void *) __u + 4); case 10: __u->__ui =3D __c * 0x01010101; __u = =3D __extension__ ((void *) __u + 4); case 6: __u->__ui =3D __c * 0x0101010= 1; __u =3D __extension__ ((void *) __u + 4); case 2: __u->__usi =3D (unsign= ed short int) __c * 0x0101; break; case 13: __u->__ui =3D __c * 0x01010101;= __u =3D __extension__ ((void *) __u + 4); case 9: __u->__ui =3D __c * 0x01= 010101; __u =3D __extension__ ((void *) __u + 4); case 5: __u->__ui =3D __c= * 0x01010101; __u =3D __extension__ ((void *) __u + 4); case 1: __u->__uc = =3D (unsigned char) __c; break; case 16: __u->__ui =3D __c * 0x01010101; __= u =3D __extension__ ((void *) __u + 4); case 12: __u->__ui =3D __c * 0x0101= 0101; __u =3D __extension__ ((void *) __u + 4); case 8: __u->__ui =3D __c *= 0x01010101; __u =3D __extension__ ((void *) __u + 4); case 4: __u->__ui = =3D __c * 0x01010101; case 0: break; } __s; })) : (__builtin_constant_p (0)= && (0) =3D=3D '\0' ? ({ void *__s =3D (context); __builtin_memset (__s, '\= 0', sizeof (struct _Unwind_Context)); __s; }) : memset (context, 0, sizeof = (struct _Unwind_Context))))); context->ra =3D ra; if (uw_frame_state_for (context, &fs) !=3D _URC_NO_REASON) abort (); context->cfa =3D outer_cfa; fs.cfa_how =3D CFA_REG_OFFSET; fs.cfa_reg =3D 0; fs.cfa_offset =3D 0; uw_update_context_1 (context, &fs); context->ra =3D __builtin_extract_return_addr (outer_ra); } # 1074 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" static __inline__ void init_dwarf_reg_size_table (void) { __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table); } static long uw_install_context_1 (struct _Unwind_Context *current, struct _Unwind_Context *target) { long i; # 1094 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" if (dwarf_reg_size_table[0] =3D=3D 0) init_dwarf_reg_size_table (); for (i =3D 0; i < 17; ++i) { void *c =3D current->reg[i]; void *t =3D target->reg[i]; if (t && c && t !=3D c) memcpy (c, t, dwarf_reg_size_table[i]); } if (1) return target->cfa - current->cfa + target->args_size; else return current->cfa - target->cfa - target->args_size; } static __inline__ _Unwind_Ptr uw_identify_context (struct _Unwind_Context *context) { return _Unwind_GetIP (context); } # 1 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.inc" 1 # 32 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind.inc" static _Unwind_Reason_Code _Unwind_RaiseException_Phase2(struct _Unwind_Exception *exc, struct _Unwind_Context *context) { _Unwind_Reason_Code code; while (1) { _Unwind_FrameState fs; int match_handler; code =3D uw_frame_state_for (context, &fs); match_handler =3D (uw_identify_context (context) =3D=3D exc->private_2 ? 4 : 0); if (code !=3D _URC_NO_REASON) return _URC_FATAL_PHASE2_ERROR; if (fs.personality) { code =3D (*fs.personality) (1, 2 | match_handler, exc->exception_class, exc, context); if (code =3D=3D _URC_INSTALL_CONTEXT) break; if (code !=3D _URC_CONTINUE_UNWIND) return _URC_FATAL_PHASE2_ERROR; } if (match_handler) abort (); uw_update_context (context, &fs); } return code; } _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *exc) { struct _Unwind_Context this_context, cur_context; _Unwind_Reason_Code code; do { __builtin_unwind_init (); uw_init_context_1 (&this_context, __builti= n_dwarf_cfa (), __builtin_return_address (0)); } while (0); cur_context =3D this_context; while (1) { _Unwind_FrameState fs; code =3D uw_frame_state_for (&cur_context, &fs); if (code =3D=3D _URC_END_OF_STACK) return _URC_END_OF_STACK; if (code !=3D _URC_NO_REASON) return _URC_FATAL_PHASE1_ERROR; if (fs.personality) { code =3D (*fs.personality) (1, 1, exc->exception_class, exc, &cur_context); if (code =3D=3D _URC_HANDLER_FOUND) break; else if (code !=3D _URC_CONTINUE_UNWIND) return _URC_FATAL_PHASE1_ERROR; } uw_update_context (&cur_context, &fs); } exc->private_1 =3D 0; exc->private_2 =3D uw_identify_context (&cur_context); cur_context =3D this_context; code =3D _Unwind_RaiseException_Phase2 (exc, &cur_context); if (code !=3D _URC_INSTALL_CONTEXT) return code; do { long offset =3D uw_install_context_1 ((&this_context), (&cur_context= )); void *handler =3D __builtin_frob_return_addr ((&cur_context)->ra); __bu= iltin_eh_return (offset, handler); } while (0); } static _Unwind_Reason_Code _Unwind_ForcedUnwind_Phase2(struct _Unwind_Exception *exc, struct _Unwind_Context *context) { _Unwind_Stop_Fn stop =3D (_Unwind_Stop_Fn) (_Unwind_Ptr) exc->private_1; void *stop_argument =3D (void *) (_Unwind_Ptr) exc->private_2; _Unwind_Reason_Code code, stop_code; while (1) { _Unwind_FrameState fs; code =3D uw_frame_state_for (context, &fs); if (code !=3D _URC_NO_REASON && code !=3D _URC_END_OF_STACK) return _URC_FATAL_PHASE2_ERROR; stop_code =3D (*stop) (1, 8 | 2, exc->exception_class, exc, context, stop_argumen= t); if (stop_code !=3D _URC_NO_REASON) return _URC_FATAL_PHASE2_ERROR; if (code =3D=3D _URC_END_OF_STACK) break; if (fs.personality) { code =3D (*fs.personality) (1, 8 | 2, exc->exception_class, exc, context); if (code =3D=3D _URC_INSTALL_CONTEXT) break; if (code !=3D _URC_CONTINUE_UNWIND) return _URC_FATAL_PHASE2_ERROR; } uw_update_context (context, &fs); } return code; } _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop, void * stop_argument) { struct _Unwind_Context this_context, cur_context; _Unwind_Reason_Code code; do { __builtin_unwind_init (); uw_init_context_1 (&this_context, __builti= n_dwarf_cfa (), __builtin_return_address (0)); } while (0); cur_context =3D this_context; exc->private_1 =3D (_Unwind_Ptr) stop; exc->private_2 =3D (_Unwind_Ptr) stop_argument; code =3D _Unwind_ForcedUnwind_Phase2 (exc, &cur_context); if (code !=3D _URC_INSTALL_CONTEXT) return code; do { long offset =3D uw_install_context_1 ((&this_context), (&cur_context= )); void *handler =3D __builtin_frob_return_addr ((&cur_context)->ra); __bu= iltin_eh_return (offset, handler); } while (0); } void _Unwind_Resume (struct _Unwind_Exception *exc) { struct _Unwind_Context this_context, cur_context; _Unwind_Reason_Code code; do { __builtin_unwind_init (); uw_init_context_1 (&this_context, __builti= n_dwarf_cfa (), __builtin_return_address (0)); } while (0); cur_context =3D this_context; if (exc->private_1 =3D=3D 0) code =3D _Unwind_RaiseException_Phase2 (exc, &cur_context); else code =3D _Unwind_ForcedUnwind_Phase2 (exc, &cur_context); if (code !=3D _URC_INSTALL_CONTEXT) abort (); do { long offset =3D uw_install_context_1 ((&this_context), (&cur_context= )); void *handler =3D __builtin_frob_return_addr ((&cur_context)->ra); __bu= iltin_eh_return (offset, handler); } while (0); } void _Unwind_DeleteException (struct _Unwind_Exception *exc) { (*exc->exception_cleanup) (_URC_FOREIGN_EXCEPTION_CAUGHT, exc); } # 1121 "/nfs/oz/home/oldham/gcc/gcc5/gcc/unwind-dw2.c" 2 --82I3+IH0IqGh5yIs-- From gcc-patches-return-38001-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:45:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10129 invoked by alias); 4 Jul 2001 00:45:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9338 invoked from network); 4 Jul 2001 00:43:39 -0000 Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:43:39 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HalO-0004Fj-00; Wed, 04 Jul 2001 01:43:30 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HalO-0001wX-00; Wed, 04 Jul 2001 01:43:30 +0100 Date: Wed, 4 Jul 2001 01:43:28 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Ziemowit Laski cc: Geoff Keating , Subject: Re: PATCH: Pascal Strings -- TAKE FOUR In-Reply-To: <200107032348.QAA12572@scv1.apple.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Ziemowit Laski wrote: > > Please advise on how I should encode that information -- I'm tempted to > > say > > > > ((unsigned char)-1) > > > > but perhaps there's some macro somewhere in the bowels of gcc that's > > more suitable? What's relevant is the *target* character size - so try TYPE_MAX_VALUE (unsigned_char_type_node). This will return an INTEGER_CST. GCC doesn't properly handle string constants when target and host characters are different sizes, but some day this should be fixed. Make sure, of course, that allowing longer strings on such platforms is correct. What does the ISO Pascal standard say about string lengths and byte sizes? > Oh, yes, this leads to one more thing -- how should I construct the test > cases to test for an excessively long Pascal string? Currently, I just > hard-code a 256-character string, but that would be perfectly fine with > 16-bit chars (and so the test case would fail). Is there some sort The simple solution is to XFAIL that test if the target is 1750a, dsp16xx or c4x (of which c4x is probably the only one of those ports that is live). -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-38002-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:54:50 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16587 invoked by alias); 4 Jul 2001 00:54:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15783 invoked from network); 4 Jul 2001 00:53:32 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:53:32 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id SAA01719; Tue, 3 Jul 2001 18:09:53 -0700 Date: Tue, 3 Jul 2001 18:09:53 -0700 Message-Id: <200107040109.SAA01719@geoffk.org> X-Authentication-Warning: localhost: geoffk set sender to geoffk@geoffk.org using -f From: Geoff Keating To: zlaski@apple.com CC: gcc-patches@gcc.gnu.org In-reply-to: <200107032333.f63NXrw10326@scv2.apple.com> (message from Ziemowit Laski on Tue, 3 Jul 2001 16:33:53 -0700) Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Reply-to: Geoff Keating References: <200107032333.f63NXrw10326@scv2.apple.com> > Date: Tue, 3 Jul 2001 16:33:53 -0700 > From: Ziemowit Laski > On Tuesday, July 3, 2001, at 04:34 , Geoff Keating wrote: > > > The explicit constant 255 is wrong, there are some platforms that GCC > > supports where char is 16 bits. There are a number of places in your > > patch where that needs fixing. > > Please advise on how I should encode that information -- I'm tempted to > say > > ((unsigned char)-1) No, that won't work either, that will give the size of 'unsigned char' on the machine GCC is being hosted on, not on the target. > but perhaps there's some macro somewhere in the bowels of gcc that's > more suitable? You want CHAR_TYPE_SIZE, which is the number of bits in a 'char' for the target. -- - Geoffrey Keating From gcc-patches-return-38003-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 00:55:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17042 invoked by alias); 4 Jul 2001 00:55:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16345 invoked from network); 4 Jul 2001 00:54:22 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 4 Jul 2001 00:54:22 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id SAA01720; Tue, 3 Jul 2001 18:10:43 -0700 Date: Tue, 3 Jul 2001 18:10:43 -0700 Message-Id: <200107040110.SAA01720@geoffk.org> X-Authentication-Warning: localhost: geoffk set sender to geoffk@geoffk.org using -f From: Geoff Keating To: zlaski@apple.com CC: gcc-patches@gcc.gnu.org In-reply-to: <200107032348.QAA12572@scv1.apple.com> (message from Ziemowit Laski on Tue, 3 Jul 2001 16:48:43 -0700) Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Reply-to: Geoff Keating References: <200107032348.QAA12572@scv1.apple.com> > Date: Tue, 3 Jul 2001 16:48:43 -0700 > From: Ziemowit Laski > Cc: gcc-patches@gcc.gnu.org > X-OriginalArrivalTime: 03 Jul 2001 23:48:43.0782 (UTC) FILETIME=[B1911260:01C1041A] > Another approach, I guess, could be to #ifdef that particular > test away on platforms where char is not 8 bits wide. I think that's probably the best choice. -- - Geoffrey Keating From gcc-patches-return-38004-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 02:10:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24341 invoked by alias); 4 Jul 2001 02:10:01 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23685 invoked from network); 4 Jul 2001 02:08:36 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 02:08:36 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA19665; Tue, 3 Jul 01 22:12:47 EDT Date: Tue, 3 Jul 01 22:12:47 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107040212.AA19665@vlsi1.ultra.nyu.edu> To: oldham@codesourcery.com Subject: Re: MEM tracking, round 3 Cc: gcc-patches@gcc.gnu.org I think I see what's wrong. I'll fix momentarily. From gcc-patches-return-38005-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 02:22:45 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30505 invoked by alias); 4 Jul 2001 02:22:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30480 invoked from network); 4 Jul 2001 02:22:44 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 4 Jul 2001 02:22:44 -0000 Received: from apple.com (A17-129-100-225.apple.com [17.129.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id TAA18323 for ; Tue, 3 Jul 2001 19:22:42 -0700 (PDT) Received: from scv2.apple.com (scv2.apple.com) by apple.com (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Tue, 3 Jul 2001 19:22:39 -0700 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv2.apple.com (8.11.3/8.11.3) with ESMTP id f642Mcw09850; Tue, 3 Jul 2001 19:22:38 -0700 (PDT) Message-Id: <200107040222.f642Mcw09850@scv2.apple.com> Date: Tue, 3 Jul 2001 19:22:39 -0700 From: Ziemowit Laski Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Cc: Geoff Keating , gcc-patches@gcc.gnu.org To: "Joseph S. Myers" X-Mailer: Apple Mail (2.388) In-Reply-To: Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit On Tuesday, July 3, 2001, at 05:43 , Joseph S. Myers wrote: > Make sure, of course, that allowing longer strings on such platforms is > correct. What does the ISO Pascal standard say about string lengths and > byte sizes? From what I can tell, the type 'string' (in which the first byte serves as the length) is not in ISO 7185 (standard Pascal). Instead, it is a commonly-found extension (in UCSD, Turbo Pascal, etc.), sometimes referred to as a 'BASIC string' (and no, I don't even want to go there... :) ). This is the functionality that the proposed patch addresses. --Zem -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 From gcc-patches-return-38006-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 02:32:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2989 invoked by alias); 4 Jul 2001 02:32:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2530 invoked from network); 4 Jul 2001 02:30:53 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 02:30:53 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA19906; Tue, 3 Jul 01 22:35:02 EDT Date: Tue, 3 Jul 01 22:35:02 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107040235.AA19906@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Fix to last change This fixes an error in my last change which I was told causes a bootstrap problem on ia32. Tue Jul 3 22:33:15 2001 Richard Kenner * explow.c (plus_constant_wide): Reinitialize Y for restart. *** explow.c 2001/07/03 19:44:05 1.65 --- explow.c 2001/07/04 02:28:20 *************** plus_constant_wide (x, c) *** 79,83 **** { register RTX_CODE code; ! rtx y = x; register enum machine_mode mode; register rtx tem; --- 79,83 ---- { register RTX_CODE code; ! rtx y; register enum machine_mode mode; register rtx tem; *************** plus_constant_wide (x, c) *** 91,94 **** --- 91,96 ---- code = GET_CODE (x); mode = GET_MODE (x); + y = x; + switch (code) { From gcc-patches-return-38007-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 02:39:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10599 invoked by alias); 4 Jul 2001 02:39:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8772 invoked from network); 4 Jul 2001 02:38:32 -0000 Received: from unknown (HELO fillmore.constant.com) (63.198.197.20) by sourceware.cygnus.com with SMTP; 4 Jul 2001 02:38:32 -0000 Received: (from bkoz@localhost) by fillmore.constant.com (8.11.2/8.11.2) id f642cRh04911; Tue, 3 Jul 2001 19:38:27 -0700 Date: Tue, 3 Jul 2001 19:38:27 -0700 Message-Id: <200107040238.f642cRh04911@fillmore.constant.com> To: gcc-patches@gcc.gnu.org Subject: [v3] locale globals From: Benjamin Kosnik X-Organization: Red Hat/LOwer HAight . X-URL: http://gcc.gnu.org/libstdc++ Makes a global _Impl and c_locale object. 2001-07-03 Benjamin Kosnik * include/bits/localefwd.h: Format. * include/bits/locale_facts.tcc (locale::combine): Adjust. * src/locale.cc (locale::locale::(_Impl)): Don't call _M_add_reference. (locale::facet::_M_remove_reference): Simplify. * src/globals.cc (locale_impl_c): New. Format. (locale_c): New. * src/ios.cc (ios_base::Init::Init): Increment _S_ios_base_init last. Index: include/bits/locale_facets.tcc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/locale_facets.tcc,v retrieving revision 1.18 diff -c -p -r1.18 locale_facets.tcc *** locale_facets.tcc 2001/07/02 23:08:28 1.18 --- locale_facets.tcc 2001/07/04 02:36:53 *************** namespace std *** 48,54 **** locale locale::combine(const locale& __other) { ! _Impl* __tmp = new _Impl(*_M_impl, 0); __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); return locale(__tmp); } --- 48,54 ---- locale locale::combine(const locale& __other) { ! _Impl* __tmp = new _Impl(*_M_impl, 1); __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); return locale(__tmp); } Index: include/bits/localefwd.h =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/localefwd.h,v retrieving revision 1.16 diff -c -p -r1.16 localefwd.h *** localefwd.h 2001/06/30 04:35:47 1.16 --- localefwd.h 2001/07/04 02:36:54 *************** namespace std *** 451,459 **** has_facet(const locale& __loc) throw(); } // namespace std ! #endif /* _CPP_BITS_LOCCORE_H */ ! ! // Local Variables: ! // mode:c++ ! // End: ! --- 451,454 ---- has_facet(const locale& __loc) throw(); } // namespace std ! #endif Index: src/globals.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/src/globals.cc,v retrieving revision 1.3 diff -c -p -r1.3 globals.cc *** globals.cc 2001/06/14 06:06:48 1.3 --- globals.cc 2001/07/04 02:36:55 *************** *** 44,49 **** --- 44,60 ---- // allocate the actual file buffers in this file. namespace std { + // Standard "C" locale. + typedef char fake_locale_Impl[sizeof(locale::_Impl)] + __attribute__ ((aligned(__alignof__(locale::_Impl)))); + fake_locale_Impl locale_impl_c; + + typedef char fake_locale[sizeof(locale)] + __attribute__ ((aligned(__alignof__(locale)))); + fake_locale locale_c; + + + // Standard stream objects. typedef char fake_istream[sizeof(istream)] __attribute__ ((aligned(__alignof__(istream)))); typedef char fake_ostream[sizeof(ostream)] *************** namespace std *** 75,105 **** fake_wfilebuf buf_wcin; fake_wfilebuf buf_wcerr; #endif ! // Globals for once-only runtime initialization of mutex objects. This ! // allows static initialization of these objects on systems that need a ! // function call to initialize a mutex. For example, see stl_threads.h. #if __GTHREADS #ifdef __GTHREAD_MUTEX_INIT ! // This path is not needed since static initialization of mutexs works ! // on this platform. #elif defined(__GTHREAD_MUTEX_INIT_FUNCTION) ! __gthread_once_t _GLIBCPP_once = __GTHREAD_ONCE_INIT; ! __gthread_mutex_t _GLIBCPP_mutex; ! __gthread_mutex_t *_GLIBCPP_mutex_address; ! ! // Once-only initializer function for _GLIBCPP_mutex. ! void ! _GLIBCPP_mutex_init () ! { ! __GTHREAD_MUTEX_INIT_FUNCTION (&_GLIBCPP_mutex); ! } ! // Once-only initializer function for _GLIBCPP_mutex_address. ! void ! _GLIBCPP_mutex_address_init () ! { ! __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCPP_mutex_address); ! } ! #endif #endif } --- 86,114 ---- fake_wfilebuf buf_wcin; fake_wfilebuf buf_wcerr; #endif + ! // Globals for once-only runtime initialization of mutex objects. This ! // allows static initialization of these objects on systems that need a ! // function call to initialize a mutex. For example, see stl_threads.h. #if __GTHREADS #ifdef __GTHREAD_MUTEX_INIT ! // This path is not needed since static initialization of mutexs works ! // on this platform. #elif defined(__GTHREAD_MUTEX_INIT_FUNCTION) ! __gthread_once_t _GLIBCPP_once = __GTHREAD_ONCE_INIT; ! __gthread_mutex_t _GLIBCPP_mutex; ! __gthread_mutex_t *_GLIBCPP_mutex_address; ! ! // Once-only initializer function for _GLIBCPP_mutex. ! void ! _GLIBCPP_mutex_init () ! { __GTHREAD_MUTEX_INIT_FUNCTION (&_GLIBCPP_mutex); } ! ! // Once-only initializer function for _GLIBCPP_mutex_address. ! void ! _GLIBCPP_mutex_address_init () ! { __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCPP_mutex_address); } #endif + #endif // __GTHREADS } Index: src/ios.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/src/ios.cc,v retrieving revision 1.20 diff -c -p -r1.20 ios.cc *** ios.cc 2001/07/02 20:50:40 1.20 --- ios.cc 2001/07/04 02:36:56 *************** namespace std *** 205,216 **** ios_base::Init::Init() { ! if (++_S_ios_base_init == 1) { // Standard streams default to synced with "C" operations. ios_base::Init::_S_synced_with_stdio = true; _S_ios_create(ios_base::Init::_S_synced_with_stdio); } } ios_base::Init::~Init() --- 205,217 ---- ios_base::Init::Init() { ! if (_S_ios_base_init == 0) { // Standard streams default to synced with "C" operations. ios_base::Init::_S_synced_with_stdio = true; _S_ios_create(ios_base::Init::_S_synced_with_stdio); } + ++_S_ios_base_init; } ios_base::Init::~Init() Index: src/locale.cc =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/src/locale.cc,v retrieving revision 1.35 diff -c -p -r1.35 locale.cc *** locale.cc 2001/07/02 23:08:28 1.35 --- locale.cc 2001/07/04 02:36:58 *************** *** 43,48 **** --- 43,52 ---- namespace std { + // Defined in globals.cc. + extern locale::_Impl locale_impl_c; + extern locale locale_c; + // Definitions for static const data members of locale. const locale::category locale::none; const locale::category locale::ctype; *************** namespace std *** 362,371 **** locale::locale(const locale& __other) throw() { (_M_impl = __other._M_impl)->_M_add_reference(); } ! // This is used to initialize global and classic locales. ! locale::locale(_Impl* __ip) throw() ! : _M_impl(__ip) ! { __ip->_M_add_reference(); } locale::locale(const char* __s) { --- 366,375 ---- locale::locale(const locale& __other) throw() { (_M_impl = __other._M_impl)->_M_add_reference(); } ! // This is used to initialize global and classic locales, and ! // assumes that the _Impl objects are constructed correctly. ! locale::locale(_Impl* __ip) throw() : _M_impl(__ip) ! { } locale::locale(const char* __s) { *************** namespace std *** 415,427 **** { // XXX MT _S_initialize(); ! locale __old(_S_global); __other._M_impl->_M_add_reference(); - _S_global->_M_remove_reference(); _S_global = __other._M_impl; if (_S_global->_M_check_same_name() && _S_global->_M_names[0] != "*") setlocale(LC_ALL, __other.name().c_str()); ! return __old; } string --- 419,436 ---- { // XXX MT _S_initialize(); ! _Impl* __old = _S_global; __other._M_impl->_M_add_reference(); _S_global = __other._M_impl; if (_S_global->_M_check_same_name() && _S_global->_M_names[0] != "*") setlocale(LC_ALL, __other.name().c_str()); ! ! // Reference count sanity check: one reference removed for the ! // subsition of __other locale, one added by return-by-value. Net ! // difference: zero. When the returned locale object's destrutor ! // is called, then the reference count is decremented and possibly ! // destroyed. ! return locale(__old); } string *************** namespace std *** 446,452 **** locale const& locale::classic() { - static locale* __classic_locale; // XXX MT if (!_S_classic) { --- 455,460 ---- *************** namespace std *** 454,479 **** { // 26 Standard facets, 2 references. // One reference for _M_classic, one for _M_global ! _S_classic = new _Impl("C", 2); _S_global = _S_classic; ! ! // Finesse static init order hassles ! __classic_locale = new locale(_S_classic); } catch(...) { ! delete __classic_locale; if (_S_classic) ! { ! _S_classic->_M_remove_reference(); ! _S_global->_M_remove_reference(); ! } _S_classic = _S_global = 0; - // XXX MT __throw_exception_again; } } ! return *__classic_locale; } locale::category --- 462,482 ---- { // 26 Standard facets, 2 references. // One reference for _M_classic, one for _M_global ! _S_classic = new (&locale_impl_c) _Impl("C", 2); _S_global = _S_classic; ! new (&locale_c) locale(_S_classic); } catch(...) { ! // Just call destructor, so that locale_impl_c's memory is ! // not deallocated via a call to delete. if (_S_classic) ! _S_classic->~_Impl(); _S_classic = _S_global = 0; __throw_exception_again; } } ! return locale_c; } locale::category *************** namespace std *** 518,525 **** } locale::facet:: ! facet(size_t __refs) throw() ! : _M_references(__refs) { } void --- 521,527 ---- } locale::facet:: ! facet(size_t __refs) throw() : _M_references(__refs) { } void *************** namespace std *** 531,542 **** locale::facet:: _M_remove_reference() throw() { ! if (_M_references) ! --_M_references; ! else { try ! { delete this; } // XXX MT catch (...) { } } --- 533,542 ---- locale::facet:: _M_remove_reference() throw() { ! if (_M_references-- == 0) { try ! { delete this; } catch (...) { } } From gcc-patches-return-38008-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 02:47:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12862 invoked by alias); 4 Jul 2001 02:46:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12605 invoked from network); 4 Jul 2001 02:45:37 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 02:45:37 -0000 Received: from greed.delorie.com (cse.cygnus.com [205.180.230.236]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id TAA23837; Tue, 3 Jul 2001 19:45:32 -0700 (PDT) Received: (from dj@localhost) by greed.delorie.com (8.9.3/8.9.3) id WAA27969; Tue, 3 Jul 2001 22:45:31 -0400 Date: Tue, 3 Jul 2001 22:45:31 -0400 Message-Id: <200107040245.WAA27969@greed.delorie.com> From: DJ Delorie To: gcc-patches@gcc.gnu.org CC: dj@redhat.com Subject: Patch: TARGET_OPTION_TRANSLATE_TABLE I'm working on a port with a complex N-to-N (usually, (1 of N)-to-N) mapping of command line options to other options, and as the "other options" include things that affect multilib selection (no, the MULITLIB_* t-foo macros won't cover this) it needs to be handled in gcc.c and not via per-pass specs. Tested on Linux with a dummy table. 2001-07-03 DJ Delorie * gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New. (translate_options): If the above is defined, use it to map given options to new options. * doc/tm.texi: Document it. Index: gcc.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/gcc.c,v retrieving revision 1.234 diff -p -3 -r1.234 gcc.c *** gcc.c 2001/06/30 08:46:31 1.234 --- gcc.c 2001/07/04 01:53:45 *************** struct option_map option_map[] = *** 952,957 **** --- 952,969 ---- {"--", "-f", "*j"} }; + + #ifdef TARGET_OPTION_TRANSLATE_TABLE + static struct { + const char *option_found; + const char *replacements; + } target_option_translations[] = + { + TARGET_OPTION_TRANSLATE_TABLE, + { 0, 0 } + }; + #endif + /* Translate the options described by *ARGCP and *ARGVP. Make a new vector and store it back in *ARGVP, and store its length in *ARGVC. */ *************** translate_options (argcp, argvp) *** 964,971 **** int i; int argc = *argcp; const char *const *argv = *argvp; const char **newv = ! (const char **) xmalloc ((argc + 2) * 2 * sizeof (const char *)); int newindex = 0; i = 0; --- 976,984 ---- int i; int argc = *argcp; const char *const *argv = *argvp; + int newvsize = (argc + 2) * 2 * sizeof (const char *); const char **newv = ! (const char **) xmalloc (newvsize); int newindex = 0; i = 0; *************** translate_options (argcp, argvp) *** 973,978 **** --- 986,1041 ---- while (i < argc) { + #ifdef TARGET_OPTION_TRANSLATE_TABLE + int tott_idx; + + for (tott_idx = 0; + target_option_translations[tott_idx].option_found; + tott_idx++) + { + if (strcmp (target_option_translations[tott_idx].option_found, + argv[i]) == 0) + { + int spaces = 1; + const char *sp; + char *np; + + for (sp = target_option_translations[tott_idx].replacements; + *sp; sp++) + { + if (*sp == ' ') + spaces ++; + } + + newvsize += spaces * sizeof (const char *); + newv = (const char **) xrealloc (newv, newvsize); + + sp = target_option_translations[tott_idx].replacements; + np = (char *) xmalloc (strlen (sp) + 1); + strcpy (np, sp); + + while (1) + { + while (*np == ' ') + np++; + if (*np == 0) + break; + newv[newindex++] = np; + while (*np != ' ' && *np) + np++; + if (*np == 0) + break; + *np++ = 0; + } + + i ++; + break; + } + } + if (target_option_translations[tott_idx].option_found) + continue; + #endif + /* Translate -- options. */ if (argv[i][0] == '-' && argv[i][1] == '-') { Index: doc/tm.texi =================================================================== RCS file: /cvs/gcc/gcc/gcc/doc/tm.texi,v retrieving revision 1.22 diff -p -3 -r1.22 tm.texi *** tm.texi 2001/07/03 00:46:05 1.22 --- tm.texi 2001/07/04 01:53:58 *************** the linker needs a space between the opt *** 140,145 **** --- 140,165 ---- If this macro is not defined, the default value is @code{""}. + @findex TARGET_OPTION_TRANSLATE_TABLE + @item TARGET_OPTION_TRANSLATE_TABLE + If defined, a list of pairs of strings, the first of which is a + potential command line target to the @file{gcc} driver program, and the + second of which is a space-separated (tabs and other whitespace are not + supported) list of options with which to replace the first option. The + target defining this list is responsible for assuring that the results + are valid. Replacement options may not be the @code{--opt} style, they + must be the @code{-opt} style. It is the intention of this macro to + provide a mechanism for substitution that affects the multilibs chosen, + such as one option that enables many options, some of which select + multilibs. Example nonsensical definition, where @code{-malt-abi}, + @code{-EB}, and @code{-mspoo} cause different multilibs to be chosen: + + @example + #define TARGET_OPTION_TRANSLATE_TABLE \ + @{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \ + @{ "-compat", "-EB -malign=4 -mspoo" @} + @end example + @findex CPP_SPEC @item CPP_SPEC A C string constant that tells the GCC driver program options to From gcc-patches-return-38009-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 03:16:15 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13220 invoked by alias); 4 Jul 2001 03:16:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11753 invoked from network); 4 Jul 2001 03:14:56 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 03:14:56 -0000 Received: from fencer.cygnus.com (fencer.cygnus.com [205.180.230.60]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id UAA25026; Tue, 3 Jul 2001 20:14:55 -0700 (PDT) Received: (apbianco@localhost) by fencer.cygnus.com (8.9.3/8.6.4) id UAA24411; Tue, 3 Jul 2001 20:14:55 -0700 From: Alexandre Petit-Bianco MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15170.35375.741096.40132@fencer.cygnus.com> Date: Tue, 3 Jul 2001 20:14:55 -0700 (PDT) To: Rainer Orth Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: Re: 3.0.1 PATCH: NUL-terminate jvgenmain's mangled_classname In-Reply-To: <15170.19141.96232.618572@xayide.TechFak.Uni-Bielefeld.DE> References: <15170.19141.96232.618572@xayide.TechFak.Uni-Bielefeld.DE> X-Mailer: VM 6.62 under Emacs 19.34.1 Reply-To: apbianco@cygnus.com X-Organization: Red Hat, Sunnyvale CA, USA. X-URL: http://gcc.gnu.org/java/ X-Zippy: Please come home with me... I have Tylenol!! Rainer Orth writes: > Ok to install? Yes, this should go in the branch (I might not have approval authority at that stage.) Thank you. ./A From gcc-patches-return-38010-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 03:20:48 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18871 invoked by alias); 4 Jul 2001 03:20:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17715 invoked from network); 4 Jul 2001 03:19:30 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 03:19:30 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA19862; Tue, 3 Jul 01 22:28:30 EDT Date: Tue, 3 Jul 01 22:28:30 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107040228.AA19862@vlsi1.ultra.nyu.edu> To: oldham@codesourcery.com Subject: Re: MEM tracking, round 3 Cc: gcc-patches@gcc.gnu.org I just spent nearly 20 minutes removing all the equal signs from this test case and still didn't finish. Please ensure your mailer doesn't encode .i files in any way when you append them: that will save me a lot of timew. I *may* be able to find a mailer that will decode this, but if not please resend and I'll look at this in the morning. From gcc-patches-return-38011-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 03:22:54 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 20537 invoked by alias); 4 Jul 2001 03:22:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20499 invoked from network); 4 Jul 2001 03:22:53 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by sourceware.cygnus.com with SMTP; 4 Jul 2001 03:22:53 -0000 Received: from apple.con (A17-128-100-225.apple.com [17.128.100.225]) by mail-out1.apple.com (8.9.3/8.9.3) with ESMTP id UAA26028 for ; Tue, 3 Jul 2001 20:22:52 -0700 (PDT) Received: from scv1.apple.com (scv1.apple.com) by apple.con (Content Technologies SMTPRS 4.2.1) with ESMTP id ; Tue, 3 Jul 2001 20:21:05 +0100 Received: from gourd (gourd.apple.com [17.202.44.182]) by scv1.apple.com (8.9.3/8.9.3) with ESMTP id UAA19337; Tue, 3 Jul 2001 20:22:49 -0700 (PDT) Message-Id: <200107040322.UAA19337@scv1.apple.com> Date: Tue, 3 Jul 2001 20:22:49 -0700 From: Ziemowit Laski Content-Type: text/plain; format=flowed; charset=us-ascii Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Cc: gcc-patches@gcc.gnu.org To: Geoff Keating X-Mailer: Apple Mail (2.388) In-Reply-To: <200107040110.SAA01720@geoffk.org> Mime-Version: 1.0 (Apple Message framework v388) Content-Transfer-Encoding: 7bit On Tuesday, July 3, 2001, at 06:10 , Geoff Keating wrote: >> Another approach, I guess, could be to #ifdef that particular >> test away on platforms where char is not 8 bits wide. > > I think that's probably the best choice. I guess I'll need to #include to grab the UCHAR_MAX value -- or is there another way of conjuring up this information without including anything? I'd prefer to keep #includes out of test cases, if at all possible... --Zem -------------------------------------------------------------- Ziemowit Laski Apple Computer, Inc. zlaski@apple.com 2 Infinite Loop, MS 302-4SN +1.408.974.6229 Fax .1344 Cupertino, CA 95014-2085 From gcc-patches-return-38012-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 03:32:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32538 invoked by alias); 4 Jul 2001 03:32:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32492 invoked from network); 4 Jul 2001 03:32:16 -0000 Received: from unknown (HELO localhost.localdomain) (66.60.148.227) by sourceware.cygnus.com with SMTP; 4 Jul 2001 03:32:16 -0000 Received: from warlock.codesourcery.com (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.11.2/8.11.2) with ESMTP id f643BxO01908; Tue, 3 Jul 2001 20:11:59 -0700 Date: Tue, 03 Jul 2001 20:11:57 -0700 From: Mark Mitchell To: "tromey@redhat.com" , Rainer Orth cc: "gcc-patches@gcc.gnu.org" , "java-patches@gcc.gnu.org" Subject: Re: 3.0.1 PATCH: Typo in libjava configure.in Message-ID: <30690000.994216317@warlock.codesourcery.com> In-Reply-To: <87d77jhy5l.fsf@creche.redhat.com> X-Mailer: Mulberry/2.0.8 (Linux/x86 Demo) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I don't think I can approve or reject patches for the branch. Yes, you can! If you can approve patches for the mainline, you can approve patches for the branch. (See my posting about GCC 3.0.1 a couple of weeks back.) -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com From gcc-patches-return-38013-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 05:40:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16823 invoked by alias); 4 Jul 2001 05:40:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16800 invoked from network); 4 Jul 2001 05:40:43 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 4 Jul 2001 05:40:43 -0000 Received: from hg.cs.mu.oz.au (root@hg.cs.mu.OZ.AU [128.250.25.19]) by mumnunah.cs.mu.OZ.AU with ESMTP id PAA17874; Wed, 4 Jul 2001 15:40:39 +1000 (EST) Received: (from fjh@localhost) by hg.cs.mu.oz.au (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id PAA25400; Wed, 4 Jul 2001 15:40:39 +1000 Date: Wed, 4 Jul 2001 15:40:39 +1000 From: Fergus Henderson To: Ziemowit Laski Cc: gcc-patches@gcc.gnu.org Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Message-ID: <20010704154038.A25318@hg.cs.mu.oz.au> References: <200107032249.f63Mnhw28468@scv2.apple.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre3i In-Reply-To: <200107032249.f63Mnhw28468@scv2.apple.com> On 03-Jul-2001, Ziemowit Laski wrote: > Index: gcc/c-lex.c ... > + error (wide? > + "Pascal string-length escape (\\p) not allowed in wide string": > + "Pascal string-length escape (\\p) must be at beginning of string"); The GNU Coding Standards say "When you split an expression into multiple lines, split it before an operator, not after one." So that should be error (wide ? "Pascal string-length escape (\\p) not allowed in wide string" : "Pascal string-length escape (\\p) must be at beginning of string"); BTW, if review comments are just about layout/whitespace, like this one, is it better to send them directly to the poster rather than to the list? > Index: gcc/c-common.c > + static tree > + choose_string_type (wide_flag, ps_flag) > + int wide_flag, ps_flag; > + { > + /* Pascal strings are not supported in wide mode */ > + return (wide_flag ? wchar_type_node : (ps_flag ? unsigned_char_type_node : char_type_node)); Is there a gcc policy on wrapping long lines? -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-38014-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 07:11:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9750 invoked by alias); 4 Jul 2001 07:11:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9712 invoked from network); 4 Jul 2001 07:11:04 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 07:11:04 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f647AMg01595; Wed, 4 Jul 2001 09:10:23 +0200 (MET DST) Date: Wed, 4 Jul 2001 09:10:23 +0200 (CEST) From: Gerald Pfeifer To: Alexandre Petit-Bianco cc: Rainer Orth , , Subject: Re: 3.0.1 PATCH: NUL-terminate jvgenmain's mangled_classname In-Reply-To: <15170.35375.741096.40132@fencer.cygnus.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Alexandre Petit-Bianco wrote: > Yes, this should go in the branch (I might not have approval authority > at that stage.) You have. Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/ From gcc-patches-return-38015-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 07:30:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16446 invoked by alias); 4 Jul 2001 07:30:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15239 invoked from network); 4 Jul 2001 07:29:07 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 07:29:07 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id AAA07202; Wed, 4 Jul 2001 00:29:06 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f647T5M25649; Wed, 4 Jul 2001 00:29:05 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 00:29:05 -0700 From: Richard Henderson To: Ziemowit Laski Cc: Geoff Keating , gcc-patches@gcc.gnu.org Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Message-ID: <20010704002905.A25644@redhat.com> Mail-Followup-To: Richard Henderson , Ziemowit Laski , Geoff Keating , gcc-patches@gcc.gnu.org References: <200107040110.SAA01720@geoffk.org> <200107040322.UAA19337@scv1.apple.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107040322.UAA19337@scv1.apple.com>; from zlaski@apple.com on Tue, Jul 03, 2001 at 08:22:49PM -0700 On Tue, Jul 03, 2001 at 08:22:49PM -0700, Ziemowit Laski wrote: > I guess I'll need to #include to grab the UCHAR_MAX value -- > or is there another way of conjuring up this information without > including anything? No, the include is the best way. r~ From gcc-patches-return-38016-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 07:32:36 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 17921 invoked by alias); 4 Jul 2001 07:32:35 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17051 invoked from network); 4 Jul 2001 07:31:23 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 07:31:23 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id AAA07434; Wed, 4 Jul 2001 00:31:22 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f647VM325657; Wed, 4 Jul 2001 00:31:22 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 00:31:22 -0700 From: Richard Henderson To: Fergus Henderson Cc: Ziemowit Laski , gcc-patches@gcc.gnu.org Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Message-ID: <20010704003122.B25644@redhat.com> Mail-Followup-To: Richard Henderson , Fergus Henderson , Ziemowit Laski , gcc-patches@gcc.gnu.org References: <200107032249.f63Mnhw28468@scv2.apple.com> <20010704154038.A25318@hg.cs.mu.oz.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010704154038.A25318@hg.cs.mu.oz.au>; from fjh@cs.mu.oz.au on Wed, Jul 04, 2001 at 03:40:39PM +1000 On Wed, Jul 04, 2001 at 03:40:39PM +1000, Fergus Henderson wrote: > > + return (wide_flag ? wchar_type_node : (ps_flag ? unsigned_char_type_node : char_type_node)); > > Is there a gcc policy on wrapping long lines? There is certainly a preference for it. I'd write this as if (wide_flag) return wchar_type_node; else if (ps_flag) return unsigned_char_type_node; else return char_type_node; r~ From gcc-patches-return-38017-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 07:33:44 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18717 invoked by alias); 4 Jul 2001 07:33:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17624 invoked from network); 4 Jul 2001 07:32:31 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 07:32:31 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id AAA07484; Wed, 4 Jul 2001 00:32:30 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f647WUC25662; Wed, 4 Jul 2001 00:32:30 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 00:32:30 -0700 From: Richard Henderson To: green@cygnus.com Cc: gcc-patches@gcc.gnu.org Subject: Re: Patch: add missing v850 dependencies Message-ID: <20010704003230.C25644@redhat.com> Mail-Followup-To: Richard Henderson , green@cygnus.com, gcc-patches@gcc.gnu.org References: <200107040000.RAA24314@fencer.cygnus.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107040000.RAA24314@fencer.cygnus.com>; from green@redhat.com on Tue, Jul 03, 2001 at 05:00:00PM -0700 On Tue, Jul 03, 2001 at 05:00:00PM -0700, Anthony Green wrote: > * config/v850/t-v850 (v850-c.o): Add missing dependencies. Ok. r~ From gcc-patches-return-38018-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 07:39:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21809 invoked by alias); 4 Jul 2001 07:39:47 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20495 invoked from network); 4 Jul 2001 07:38:33 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 07:38:33 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id AAA07909; Wed, 4 Jul 2001 00:38:33 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f647cXc25667; Wed, 4 Jul 2001 00:38:33 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 00:38:33 -0700 From: Richard Henderson To: DJ Delorie Cc: gcc-patches@gcc.gnu.org Subject: Re: Patch: TARGET_OPTION_TRANSLATE_TABLE Message-ID: <20010704003833.D25644@redhat.com> Mail-Followup-To: Richard Henderson , DJ Delorie , gcc-patches@gcc.gnu.org References: <200107040245.WAA27969@greed.delorie.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107040245.WAA27969@greed.delorie.com>; from dj@redhat.com on Tue, Jul 03, 2001 at 10:45:31PM -0400 On Tue, Jul 03, 2001 at 10:45:31PM -0400, DJ Delorie wrote: > * gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New. > (translate_options): If the above is defined, use it to map > given options to new options. > * doc/tm.texi: Document it. Ok. r~ From gcc-patches-return-38019-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 08:35:07 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8038 invoked by alias); 4 Jul 2001 08:35:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7848 invoked from network); 4 Jul 2001 08:33:44 -0000 Received: from unknown (HELO geoffk.org) (64.2.60.52) by sourceware.cygnus.com with SMTP; 4 Jul 2001 08:33:44 -0000 Received: (from geoffk@localhost) by geoffk.org (8.9.3/8.9.3) id BAA01856; Wed, 4 Jul 2001 01:50:06 -0700 Date: Wed, 4 Jul 2001 01:50:06 -0700 Message-Id: <200107040850.BAA01856@geoffk.org> X-Authentication-Warning: localhost: geoffk set sender to geoffk@geoffk.org using -f From: Geoff Keating To: zlaski@apple.com CC: gcc-patches@gcc.gnu.org In-reply-to: <200107040322.UAA19337@scv1.apple.com> (message from Ziemowit Laski on Tue, 3 Jul 2001 20:22:49 -0700) Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Reply-to: Geoff Keating References: <200107040322.UAA19337@scv1.apple.com> > Date: Tue, 3 Jul 2001 20:22:49 -0700 > From: Ziemowit Laski > Cc: gcc-patches@gcc.gnu.org > > > On Tuesday, July 3, 2001, at 06:10 , Geoff Keating wrote: > > >> Another approach, I guess, could be to #ifdef that particular > >> test away on platforms where char is not 8 bits wide. > > > > I think that's probably the best choice. > > I guess I'll need to #include to grab the UCHAR_MAX value -- > or is there another way of conjuring up this information without > including > anything? I'd prefer to keep #includes out of test cases, if at all > possible... I think is your best bet. It will be GCC's limits.h, so it shouldn't be much of a problem. -- - Geoffrey Keating From gcc-patches-return-38020-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 09:14:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 23794 invoked by alias); 4 Jul 2001 09:14:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23774 invoked from network); 4 Jul 2001 09:14:22 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 09:14:22 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f649EHg05030 for ; Wed, 4 Jul 2001 11:14:20 +0200 (MET DST) Date: Wed, 4 Jul 2001 11:14:18 +0200 (CEST) From: Gerald Pfeifer To: Subject: PATCH: doc/install.texi and *-*-solaris* Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII I have installed the following on both branches. GNU Make is no longer required and the sh issue is most important. Gerald 2001-07-04 Gerald Pfeifer * doc/install.texi (Specific): Update information for *-*-solaris*. Index: doc/install.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/install.texi,v retrieving revision 1.1.2.38 diff -u -3 -p -r1.1.2.38 install.texi --- install.texi 2001/07/02 18:06:49 1.1.2.38 +++ install.texi 2001/07/04 09:02:57 @@ -2975,9 +2975,11 @@ bootstrap and install GCC you first have compiler, see our @uref{binaries.html,,binaries page} for details. -You must use GNU Make to build GCC on Solaris 2. If you don't have GNU -Make installed, you can use the prebuilt compiler mentioned above to -build it. +Solaris' @file{/bin/sh} will often fail to configure libstdc++-v3, boehm-gc or +libjava. If you encounter this problem, set @var{CONFIG_SHELL} to +@file{/bin/ksh} in your environment and run @samp{make bootstrap} again. +Another possibility that sometimes helps is to remove +@file{*-*-solaris*/config.cache}. Sun as 4.X is broken in that it cannot cope with long symbol names. A typical error message might look similar to the following: @@ -2987,12 +2989,6 @@ error: can't compute value of an express This is Sun bug 4237974. This is fixed with patch 108908-02 and has been fixed in later (5.x) versions of the assembler. - -Solaris' @file{/bin/sh} will often fail to configure libstdc++-v3, boehm-gc or -libjava. If you encounter this problem, set @var{CONFIG_SHELL} to -@file{/bin/ksh} in your environment and run @samp{make bootstrap} again. -Another possibility that sometimes helps is to remove -@file{*-*-solaris*/config.cache}. @html

    From gcc-patches-return-38021-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 10:26:33 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5048 invoked by alias); 4 Jul 2001 10:26:32 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5028 invoked from network); 4 Jul 2001 10:26:31 -0000 Received: from unknown (HELO fw-cam.cambridge.arm.com) (193.131.176.3) by sourceware.cygnus.com with SMTP; 4 Jul 2001 10:26:31 -0000 Received: by fw-cam.cambridge.arm.com; id LAA11830; Wed, 4 Jul 2001 11:26:23 +0100 (BST) Received: from unknown(172.16.1.2) by fw-cam.cambridge.arm.com via smap (V5.5) id xma011058; Wed, 4 Jul 01 11:25:30 +0100 Received: from cam-mail2.cambridge.arm.com (localhost [127.0.0.1]) by cam-admin0.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id LAA26662; Wed, 4 Jul 2001 11:25:35 +0100 (BST) Received: from sun18.cambridge.arm.com (sun18.cambridge.arm.com [172.16.2.18]) by cam-mail2.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id LAA08066; Wed, 4 Jul 2001 11:25:35 +0100 (BST) Message-Id: <200107041025.LAA08066@cam-mail2.cambridge.arm.com> X-Mailer: exmh version 2.0.2 2/24/98 To: Ziemowit Laski cc: gcc-patches@gcc.gnu.org, Richard.Earnshaw@arm.com Reply-To: Richard.Earnshaw@arm.com Organization: ARM Ltd. X-Telephone: +44 1223 400569 (direct+voicemail), +44 1223 400400 (switchbd) X-Fax: +44 1223 400410 X-Address: ARM Ltd., 110 Fulbourn Road, Cherry Hinton, Cambridge CB1 9NJ. X-Url: http://www.arm.com/ Subject: Re: PATCH: Pascal Strings -- TAKE FOUR In-reply-to: Your message of "Tue, 03 Jul 2001 15:49:43 PDT." <200107032249.f63Mnhw28468@scv2.apple.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 04 Jul 2001 11:25:34 +0100 From: Richard Earnshaw + Pascal-style literals are treated by the compiler as being of type + @samp{const unsigned char []} in C++ and @samp{unsigned char []} (or + @samp{const unsigned char []}, if the @w{@option{-Wwrite-strings}} + option is given) in C. Yes, this is what -Wwrite-strings does (in a way), but is this really correct? -Wwrite-strings is really a warning flag. String literals in (GNU) C are really constants unless -fwritable-strings is given. R. From gcc-patches-return-38022-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 10:29:53 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5924 invoked by alias); 4 Jul 2001 10:29:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5857 invoked from network); 4 Jul 2001 10:29:49 -0000 Received: from unknown (HELO executor.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 4 Jul 2001 10:29:49 -0000 Received: from redhat.com (apple.cambridge.redhat.com [172.16.18.78]) by executor.cambridge.redhat.com (Postfix) with ESMTP id F3398ABAF8; Wed, 4 Jul 2001 11:29:48 +0100 (BST) Message-ID: <3B42F01C.347E8191@redhat.com> Date: Wed, 04 Jul 2001 11:29:48 +0100 From: Graham Stott X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.16-22smp i686) X-Accept-Language: en MIME-Version: 1.0 To: Richard Henderson Cc: Jan Hubicka , gcc-patches@gcc.gnu.org, patches@x86-64.org, gcc@gcc.gnu.org Subject: Re: unconditional pre-reload splitter References: <20010625135229.S7932@atrey.karlin.mff.cuni.cz> <20010625090633.B13183@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Jan Richard Henderson wrote: > > On Mon, Jun 25, 2001 at 01:52:29PM +0200, Jan Hubicka wrote: > > * haifa-sched.c (sched_init): Do not split insns. > > * toplev.c (rest_of_compilation): Call split_all_insns before > > sched1 pass; simplify condition of post-reload splitter; > > call split_all_insn before sched2 pass. > > Ok. > > r~ Adding the call to split_all_insns before scheduling may cause problems when not optimizing because the register use information may be out of date after the spliting (i.e., split_all_insns only updates life info using PROP_DEATH_NOTES) this causes local alloc to do the wrong thing. Here's an example (insn 25 28 29 (set (reg:SI 115) (const_int 1234567 [0x12d687])) 212 {movsi_internal2} (nil) (expr_list:REG_EQUAL (const_int 1234567 [0x12d687]) (nil))) This insn gets split into (insn 298 218 299 (set (reg:SI 115) (const_int 1179648 [0x120000])) 212 {movsi_internal2} (nil) (nil))) (insn 299 298 293 (set (reg:SI 115) (ior:SI (reg:SI 115) (const_int 54919 [0xd687]))) 122 {*mips.md:5268} (nil) (nil)) Which after local alloc becomes (insn 298 218 299 (set (reg:SI 115) (const_int 1179648 [0x120000])) 212 {movsi_internal2} (nil) (expr_list:REG_EQUIV (const_int 1179648 [0x120000]) (nil))) (insn 299 298 293 (set (reg:SI 115) (ior:SI (reg:SI 115) (const_int 54919 [0xd687]))) 122 {*mips.md:5268} (nil) (nil)) Which is wrong insn 298 shouldn't have a REG_EQUIV note because it is set more than once. Jan did you intended to do the spliting when not optimizing if so then the register use info needs to get updated. The easiest way is get rid of the register_life_up_to_date flag and always call recompute_reg_usage. Graham From gcc-patches-return-38023-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 10:49:32 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15026 invoked by alias); 4 Jul 2001 10:49:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14961 invoked from network); 4 Jul 2001 10:49:25 -0000 Received: from unknown (HELO mumnunah.cs.mu.OZ.AU) (198.142.254.221) by sourceware.cygnus.com with SMTP; 4 Jul 2001 10:49:25 -0000 Received: from murlibobo.cs.mu.OZ.AU (murlibobo.cs.mu.OZ.AU [128.250.29.17]) by mumnunah.cs.mu.OZ.AU with ESMTP id UAA18266; Wed, 4 Jul 2001 20:49:21 +1000 (EST) Received: (from fjh@localhost) by murlibobo.cs.mu.OZ.AU (8.8.5/8.7.3) id UAA04928; Wed, 4 Jul 2001 20:49:20 +1000 (EST) Date: Wed, 4 Jul 2001 20:49:20 +1000 From: Fergus Henderson To: Richard.Earnshaw@arm.com Cc: Ziemowit Laski , gcc-patches@gcc.gnu.org Subject: Re: PATCH: Pascal Strings -- TAKE FOUR Message-ID: <20010704204920.A4208@murlibobo.cs.mu.OZ.AU> References: <200107032249.f63Mnhw28468@scv2.apple.com> <200107041025.LAA08066@cam-mail2.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.95.1i In-Reply-To: <200107041025.LAA08066@cam-mail2.cambridge.arm.com>; from Richard Earnshaw on Wed, Jul 04, 2001 at 11:25:34AM +0100 On 04-Jul-2001, Richard Earnshaw wrote: > + Pascal-style literals are treated by the compiler as being of type > + @samp{const unsigned char []} in C++ and @samp{unsigned char []} (or > + @samp{const unsigned char []}, if the @w{@option{-Wwrite-strings}} > + option is given) in C. > > Yes, this is what -Wwrite-strings does (in a way), but is this really > correct? Yes, it's correct. But the documentation here could potentially be made clearer. > String literals in > (GNU) C are really constants unless -fwritable-strings is given. Without -Wwrite-strings, string literals have type "char []", "unsigned char []", or "wchar_t[]", depending on what kind of string literal it is. This type is not const. But nevertheless, the values are by default not modifiable. Any attempt to do so will result in undefined behaviour at runtime, unless -fwritable-strings is given. So what the documentation above says about the type is correct. But it might be helpful to say something about the modifiability too. E.g. perhaps we could append the following? In all other respects, Pascal-style string literals behave the same as ordinary string literals. For example, if a program attempts to modify the conents of a Pascal-style string literal at run-time, the behaviour is undefined, unless the -fwritable-strings option is used. -- Fergus Henderson | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: | -- the last words of T. S. Garp. From gcc-patches-return-38024-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 11:13:47 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25000 invoked by alias); 4 Jul 2001 11:13:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24957 invoked from network); 4 Jul 2001 11:13:38 -0000 Received: from unknown (HELO navy.csi.cam.ac.uk) (131.111.8.49) by sourceware.cygnus.com with SMTP; 4 Jul 2001 11:13:38 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by navy.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15Hkb6-000373-00; Wed, 04 Jul 2001 12:13:32 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15Hkb5-0007Wr-00; Wed, 04 Jul 2001 12:13:31 +0100 Date: Wed, 4 Jul 2001 12:13:24 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Toon Moene cc: Subject: Re: Patch to add common doc files gpl.texi, funding.texi, in doc/includedirectory In-Reply-To: <3B421E3C.D3ABCBBD@moene.indiv.nluug.nl> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Toon Moene wrote: > Thanks - for a long time I've wondered what to do with the Look-and-Feel > section. This seems the correct reason to remove it. > > > 2001-07-03 Joseph S. Myers > > > > * g77.texi: Use gpl.texi and funding.texi. Remove Look and Feel > > section. Add Funding Free Software to invariant sections. > > * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Update > > dependencies and use doc/include in search path. > > OK. Thanks a lot ! I'll wait for someone to review the rest of the patch, since the Fortran part depends on the other changes providing gpl.texi and funding.texi, but if the full patch isn't felt appropriate for the branch then I'll still apply the removal of Look and Feel and the addition of Funding Free Software to the invariant sections to the branch. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-38025-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 12:44:09 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32591 invoked by alias); 4 Jul 2001 12:44:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32546 invoked from network); 4 Jul 2001 12:44:04 -0000 Received: from unknown (HELO shaolin.fenk.wau.nl) (137.224.129.21) by sourceware.cygnus.com with SMTP; 4 Jul 2001 12:44:04 -0000 Received: from localhost (localhost [[UNIX: localhost]]) by shaolin.fenk.wau.nl (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id OAA07860; Wed, 4 Jul 2001 14:44:34 +0200 From: Jan van Male Reply-To: jan.vanmale@fenk.wau.nl To: kenner@vlsi1.ultra.nyu.edu Subject: Re: MEM tracking, round 3 Date: Wed, 4 Jul 2001 14:35:51 +0200 X-Mailer: KMail [version 1.0.29.2] Content-Type: text/plain Cc: gcc-patches@gcc.gnu.org MIME-Version: 1.0 Message-Id: <01070414443406.25793@shaolin> Content-Transfer-Encoding: 8bit On i686-pc-linux-gnu the following warning regression is caused by your patch ../../gcc/gcc/config/i386/i386.c: In function `ix86_expand_builtin': ../../gcc/gcc/config/i386/i386.c:9877: warning: `op0' might be used uninitialized in this function I think this part of your patch contains a typo: *************** ix86_expand_builtin (exp, target, subtar *** 10198,10213 **** case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); - op0 = adjust_address (target, SFmode, 0); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (op0, expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adj_offsettable_operand (op0, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); --- 10190,10204 ---- case IX86_BUILTIN_SETPS: target = assign_386_stack_local (V4SFmode, 0); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (adjust_address (op0, SFmode, 0), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); When you apply the following on top of the current sources, things should be ok again. Thanks, jan *** /loc_home/vanmale/cvsorg/gcc/gcc/config/i386/i386.c Tue Jul 3 21:44:09 2001 --- i386.c Wed Jul 4 14:24:36 2001 *************** ix86_expand_builtin (exp, target, subtar *** 10193,10205 **** arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (adjust_address (op0, SFmode, 0), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (op0, SFmode, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); emit_insn (gen_sse_movaps (op0, target)); --- 10193,10205 ---- arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); ! emit_move_insn (adjust_address (target, SFmode, 0), expand_expr (arg0, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (target, SFmode, 4), expand_expr (arg1, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (target, SFmode, 8), expand_expr (arg2, NULL_RTX, VOIDmode, 0)); ! emit_move_insn (adjust_address (target, SFmode, 12), expand_expr (arg3, NULL_RTX, VOIDmode, 0)); op0 = gen_reg_rtx (V4SFmode); emit_insn (gen_sse_movaps (op0, target)); From gcc-patches-return-38026-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 13:03:06 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8983 invoked by alias); 4 Jul 2001 13:03:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8948 invoked from network); 4 Jul 2001 13:03:04 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 13:03:04 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA21456; Wed, 4 Jul 01 09:07:18 EDT Date: Wed, 4 Jul 01 09:07:18 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041307.AA21456@vlsi1.ultra.nyu.edu> To: jan.vanmale@fenk.wau.nl Subject: Re: MEM tracking, round 3 Cc: gcc-patches@gcc.gnu.org Yes, that's indeed what I meant. Will apply. From gcc-patches-return-38027-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 13:08:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 10809 invoked by alias); 4 Jul 2001 13:08:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10713 invoked from network); 4 Jul 2001 13:07:59 -0000 Received: from unknown (HELO newton.math.purdue.edu) (128.210.3.6) by sourceware.cygnus.com with SMTP; 4 Jul 2001 13:07:59 -0000 Received: from banach.math.purdue.edu (lucier@banach.math.purdue.edu [128.210.3.16]) by newton.math.purdue.edu (8.10.1/8.10.1/PURDUE_MATH-4.0) with ESMTP id f64D7vJ28959; Wed, 4 Jul 2001 08:07:57 -0500 (EST) Received: (from lucier@localhost) by banach.math.purdue.edu (8.10.1/8.10.1/PURDUE_MATH-4.0) id f64D7ve16713; Wed, 4 Jul 2001 08:07:57 -0500 (EST) From: Brad Lucier Message-Id: <200107041307.f64D7ve16713@banach.math.purdue.edu> Subject: Re: 3.1 Bootstrap failure on sparc-solaris2.8 To: rl@cs.tu-berlin.de (Roman Lechtchinsky) Date: Wed, 4 Jul 2001 08:07:57 -0500 (EST) Cc: lucier@math.purdue.edu, gcc-bugs@gcc.gnu.org, gcc-patches@gcc.gnu.org In-Reply-To: from "Roman Lechtchinsky" at Jul 04, 2001 02:18:23 PM X-Mailer: ELM [version 2.5 PL0] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit > > The error is > > > > __GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include -DL_floatdisf -c ../../gcc/libgcc2.c -o libgcc/./_floatdisf.o > > ../../gcc/libgcc2.c: In function `__floatdisf': > > ../../gcc/libgcc2.c:1129: Internal compiler error in subreg_highpart_offset, at emit-rtl.c:1180 > > See http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01619.html which fixes > this and still hasn't been reviewed (just a shameless plug :-). This patch no longer applies cleanly to the 3.1 tree; perhaps you can update it and resubmit it. My understanding is that patches that fix bootstrap failures are given higher priority recently. Brad From gcc-patches-return-38028-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 13:15:28 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13548 invoked by alias); 4 Jul 2001 13:15:25 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13505 invoked from network); 4 Jul 2001 13:15:21 -0000 Received: from unknown (HELO shaolin.fenk.wau.nl) (137.224.129.21) by sourceware.cygnus.com with SMTP; 4 Jul 2001 13:15:21 -0000 Received: from localhost (localhost [[UNIX: localhost]]) by shaolin.fenk.wau.nl (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id PAA00310; Wed, 4 Jul 2001 15:15:53 +0200 From: Jan van Male Reply-To: jan.vanmale@fenk.wau.nl To: law@redhat.com Subject: Re: Dataflow Analysis patches Date: Wed, 4 Jul 2001 15:13:23 +0200 X-Mailer: KMail [version 1.0.29.2] Content-Type: text/plain Cc: gcc-patches@gcc.gnu.org MIME-Version: 1.0 Message-Id: <01070415155307.25793@shaolin> Content-Transfer-Encoding: 8bit Hi, On i686-pc-linux-gnu the following warning regression is introduced by your patch. ../../gcc/gcc/df.c:2521: warning: `df_bb_refs_unlink' defined but not used `df_bb_refs_unlink' is only used in `df_refs_unlink' which is surrounded by #if 0. Surrounding `df_bb_refs_unlink' by #if 0 should fix the regression. Thanks, jan From gcc-patches-return-38029-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 13:47:12 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25810 invoked by alias); 4 Jul 2001 13:47:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25730 invoked from network); 4 Jul 2001 13:47:03 -0000 Received: from unknown (HELO schutzenberger.liafa.jussieu.fr) (132.227.81.123) by sourceware.cygnus.com with SMTP; 4 Jul 2001 13:47:03 -0000 Received: (from espie@localhost) by schutzenberger.liafa.jussieu.fr (8.11.3/8.10.1) id f64Dl1C21896; Wed, 4 Jul 2001 15:47:01 +0200 (CEST) Date: Wed, 4 Jul 2001 15:47:01 +0200 From: Marc Espie To: gcc-bugs@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: mark@codesourcery.com Subject: [GCC 3.0] Repair OpenBSD bootstrap Message-ID: <20010704154701.A8147@schutzenberger.liafa.jussieu.fr> Reply-To: Marc.Espie@liafa.jussieu.fr Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i Mea culpa. Sorry about this. After Gaby approved it, I plain didn't have time to commit this patch to the gcc repository because of external circumstances, and now it prevents bootstrap on OpenBSD. Is it okay to commit this to the 3.0 branch (and to HEAD) ? Otherwise, OpenBSD plain fails to bootstrap at all. Right now, I'm finally trying to demangle libtool hell wrt libstdc++... 2001-07-04 Marc Espie * configure.in: Check for sys/types.h. * configure: Rebuild. * libmath/mathconf.h: Include sys/types.h prior to machine/endian.h if available. *** libstdc++-v3/configure.in.orig Thu Jun 14 10:47:35 2001 --- libstdc++-v3/configure.in Wed Jul 4 15:38:08 2001 *************** *** 204,210 **** # Check for available headers. AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ ! machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h]) GLIBCPP_CHECK_COMPILER_FEATURES GLIBCPP_CHECK_LINKER_FEATURES --- 204,210 ---- # Check for available headers. AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \ ! machine/param.h sys/machine.h sys/types.h fp.h locale.h float.h inttypes.h gconv.h]) GLIBCPP_CHECK_COMPILER_FEATURES GLIBCPP_CHECK_LINKER_FEATURES *** libstdc++-v3/libmath/mathconf.h.orig Sun Feb 25 10:25:42 2001 --- libstdc++-v3/libmath/mathconf.h Wed Jul 4 15:38:08 2001 *************** *** 34,39 **** --- 34,42 ---- # include #else # ifdef _GLIBCPP_HAVE_MACHINE_ENDIAN_H + # ifdef _GLIBCPP_HAVE_SYS_TYPES_H + # include + # endif # include # else # ifdef _GLIBCPP_HAVE_SYS_MACHINE_H From gcc-patches-return-38030-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 13:57:57 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 485 invoked by alias); 4 Jul 2001 13:57:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 448 invoked from network); 4 Jul 2001 13:57:55 -0000 Received: from unknown (HELO executor.cambridge.redhat.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 4 Jul 2001 13:57:55 -0000 Received: from cuddles.cambridge.redhat.com (cuddles.cambridge.redhat.com [172.16.18.86]) by executor.cambridge.redhat.com (Postfix) with ESMTP id A942BABAF8; Wed, 4 Jul 2001 14:57:53 +0100 (BST) Received: (from aph@localhost) by cuddles.cambridge.redhat.com (8.11.0/8.11.0) id f64Dvr530587; Wed, 4 Jul 2001 14:57:53 +0100 X-Authentication-Warning: cuddles.cambridge.redhat.com: aph set sender to aph@cambridge.redhat.com using -f From: Andrew Haley MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15171.8417.159243.338801@cuddles.cambridge.redhat.com> Date: Wed, 4 Jul 2001 14:57:53 +0100 (BST) To: Richard Henderson Cc: gcc-patches@gcc.gnu.org Subject: Re: i960 and -mstrict-align In-Reply-To: <20010703163836.A25416@redhat.com> References: <15170.8292.425361.809730@cuddles.cambridge.redhat.com> <20010703163836.A25416@redhat.com> X-Mailer: VM 6.75 under Emacs 20.7.1 Sorry, I posted that patch too soon: I didn't allow for BLKmode. This one is better, and bootstrapped x86. It's clearer too, I think. Andrew. 2001-07-03 Andrew Haley * expmed.c (store_fixed_bit_field): Don't use a mode bigger than the mode of the memory location. Index: expmed.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/expmed.c,v retrieving revision 1.76.2.1 diff -c -2 -p -r1.76.2.1 expmed.c *** expmed.c 2001/05/12 20:32:26 1.76.2.1 --- expmed.c 2001/07/04 12:54:04 *************** store_fixed_bit_field (op0, offset, bits *** 670,677 **** /* Get the proper mode to use for this field. We want a mode that includes the entire field. If such a mode would be larger than ! a word, we won't be doing the extraction the normal way. */ mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT, ! struct_align, word_mode, GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0)); --- 670,682 ---- /* Get the proper mode to use for this field. We want a mode that includes the entire field. If such a mode would be larger than ! a word, we won't be doing the extraction the normal way. ! We don't want a mode bigger than the destination. */ + mode = GET_MODE (op0); + if (GET_MODE_BITSIZE (mode) == 0 + || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (word_mode)) + mode = word_mode; mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT, ! struct_align, mode, GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0)); From gcc-patches-return-38031-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 14:01:36 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2597 invoked by alias); 4 Jul 2001 14:01:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2560 invoked from network); 4 Jul 2001 14:01:31 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 14:01:31 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f64E1Jg10936 for ; Wed, 4 Jul 2001 16:01:22 +0200 (MET DST) Date: Wed, 4 Jul 2001 16:01:20 +0200 (CEST) From: Gerald Pfeifer To: Subject: PATCH: doc/install.texi "typo" fix Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Installed on both branches. Gerald 2001-07-04 Gerald Pfeifer * doc/install.texi (sparc64-*-*): Remove garbage. Index: doc/install.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/install.texi,v retrieving revision 1.1.2.39 diff -u -3 -p -r1.1.2.39 install.texi --- install.texi 2001/07/04 09:04:22 1.1.2.39 +++ install.texi 2001/07/04 13:49:36 @@ -3157,7 +3157,7 @@ for this platform, too. GCC version 2.95 is not able to compile code correctly for @code{sparc64} targets. Users of the Linux kernel, at least, -12~can use the @code{sparc32} program to start up a new shell +can use the @code{sparc32} program to start up a new shell invocation with an environment that causes @command{configure} to recognize (via @samp{uname -a}) the system as @var{sparc-*-*} instead. From gcc-patches-return-38032-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 14:17:38 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9415 invoked by alias); 4 Jul 2001 14:17:38 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9394 invoked from network); 4 Jul 2001 14:17:35 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 14:17:35 -0000 Received: from taygeta (taygeta [128.130.111.77]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f64EGug11522; Wed, 4 Jul 2001 16:16:56 +0200 (MET DST) Date: Wed, 4 Jul 2001 16:16:57 +0200 (CEST) From: Gerald Pfeifer To: "Joseph S. Myers" cc: Subject: Re: Patch to add common doc files gpl.texi, funding.texi, in doc/include directory In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 3 Jul 2001, Joseph S. Myers wrote: > This patch moves common files between the GCC manuals, such as > fdl.texi, to a subdirectory of gcc/doc - gcc/doc/include - and adds > two new such files, funding.texi and gpl.texi, which were previously > duplicate parts of manuals. This is definitely the way to go, yes. I am not too happy about the new subdirectory, but then, I don't feel strictly opposed either, and the following rationale... > This allows front ends to use the same file names for parts of their > manual as are used for parts of the main GCC manual (e.g. GNU Pascal > has a file invoke.texi) and still use these common files without > problems arising from filename conflicts and getting the wrong file > with such a name included, as long as they only avoid the much smaller > collection of filenames in doc/include. ...*does* make sense. > There should probably be more common include files, especially one to > specify the GCC version number in a single place for all the manuals. Yes, that's something I had thought about for some time as well. That's definitely pre-approved! :-) > Bootstrapped and passed "make info" and "make dvi" with no regressions > on i686-pc-linux-gnu. OK to commit to mainline? OK for branch as > well? OK for mainline and also okay for the branch if it surives both a srcdir=objdir and a srcdir!=objdir build. (Just to be on the safe side). Thanks, Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/ From gcc-patches-return-38033-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 16:24:57 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26033 invoked by alias); 4 Jul 2001 16:24:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25960 invoked from network); 4 Jul 2001 16:24:54 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.163.213.130) by sourceware.cygnus.com with SMTP; 4 Jul 2001 16:24:54 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id JAA03974; Wed, 4 Jul 2001 09:24:02 -0700 Date: Wed, 4 Jul 2001 09:24:02 -0700 From: Jeffrey Oldham To: kenner@vlsi1.ultra.nyu.edu Cc: gcc-patches@gcc.gnu.org, Jeffrey Oldham Subject: Re: First patch in series to add more attribute to MEMs Message-ID: <20010704092402.A3959@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i Organization: CodeSourcery LLC On mips-sgi-irix6.5 gcc3.1, `g77.f-torture/compile/20000601-2.f -Os' failed yesterday for the first time. Using a Linux->mips-sgi-irix6.5 cross-compiler, the problem seems to occur in emit_rtl.c's adjust_address(), which was introduced by your patch. Would you please fix the problem? To investigate the problem, use a command-line like: ./objdir/gcc/f771 gcc/testsuite/g77.f-torture/compile/20000601-2.f -Os Thanks, Jeffrey D. Oldham oldham@codesourcery.com From gcc-patches-return-38034-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:09:17 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 9998 invoked by alias); 4 Jul 2001 17:09:17 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9956 invoked from network); 4 Jul 2001 17:09:15 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:09:15 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA22247; Wed, 4 Jul 01 13:13:29 EDT Date: Wed, 4 Jul 01 13:13:29 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041713.AA22247@vlsi1.ultra.nyu.edu> To: oldham@codesourcery.com Subject: Re: First patch in series to add more attribute to MEMs Cc: gcc-patches@gcc.gnu.org On mips-sgi-irix6.5 gcc3.1, `g77.f-torture/compile/20000601-2.f -Os' failed yesterday for the first time. Using a Linux->mips-sgi-irix6.5 cross-compiler, the problem seems to occur in emit_rtl.c's adjust_address(), which was introduced by your patch. Yeah, but it just calls change_address, so it's not at all certain that's the problem. That first change should have been totally transparent. But I'll look. From gcc-patches-return-38035-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:31:58 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21425 invoked by alias); 4 Jul 2001 17:31:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21388 invoked from network); 4 Jul 2001 17:31:53 -0000 Received: from unknown (HELO caip.rutgers.edu) (128.6.236.10) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:31:53 -0000 Received: (from ghazi@localhost) by caip.rutgers.edu (8.9.3/8.9.3) id NAA18670; Wed, 4 Jul 2001 13:31:42 -0400 (EDT) Date: Wed, 4 Jul 2001 13:31:42 -0400 (EDT) From: "Kaveh R. Ghazi" Message-Id: <200107041731.NAA18670@caip.rutgers.edu> To: David.Billinghurst@riotinto.com Subject: RE: Solaris2 trunk failure w/C_alloca in gencodes Cc: gcc-patches@gcc.gnu.org > From: "Billinghurst, David (CRTS)" > > I don't think this patch was committed. It works on irix6.5 > > > -----Original Message----- > > > > 2001-06-17 Kaveh R. Ghazi > > > > * bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA. > > > > * bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a > > function. Thanks for the confirmation. Since no one objected I went ahead and checked it in as an "obvious" change. -- Kaveh R. Ghazi Engagement Manager / Project Services ghazi@caip.rutgers.edu Qwest Internet Solutions From gcc-patches-return-38036-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:32:52 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 22191 invoked by alias); 4 Jul 2001 17:32:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 22121 invoked from network); 4 Jul 2001 17:32:51 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:32:51 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA22332; Wed, 4 Jul 01 13:37:05 EDT Date: Wed, 4 Jul 01 13:37:05 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041737.AA22332@vlsi1.ultra.nyu.edu> To: oldham@codesourcery.com Subject: Re: First patch in series to add more attribute to MEMs Cc: gcc-patches@gcc.gnu.org On mips-sgi-irix6.5 gcc3.1, `g77.f-torture/compile/20000601-2.f -Os' failed yesterday for the first time. Using a Linux->mips-sgi-irix6.5 cross-compiler, the problem seems to occur in emit_rtl.c's adjust_address(), which was introduced by your patch. Actually, this was caused by the *third* in the series and was due to setup_save_areas calling adj_ofsettable_operand in an invalid way, which wasn't detected until now. I'm going to check in the fourth round of the patch, then go back and fix this. From gcc-patches-return-38037-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:38:42 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24651 invoked by alias); 4 Jul 2001 17:38:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24558 invoked from network); 4 Jul 2001 17:38:35 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.163.213.130) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:38:35 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id KAA06063; Wed, 4 Jul 2001 10:37:41 -0700 Date: Wed, 4 Jul 2001 10:37:40 -0700 From: Jeffrey Oldham To: Richard Kenner Cc: gcc-patches@gcc.gnu.org Subject: Re: First patch in series to add more attribute to MEMs Message-ID: <20010704103740.A15042@codesourcery.com> References: <10107041737.AA22332@vlsi1.ultra.nyu.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <10107041737.AA22332@vlsi1.ultra.nyu.edu>; from kenner@vlsi1.ultra.nyu.edu on Wed, Jul 04, 2001 at 01:37:05PM -0400 Organization: CodeSourcery LLC On Wed, Jul 04, 2001 at 01:37:05PM -0400, Richard Kenner wrote: > On mips-sgi-irix6.5 gcc3.1, `g77.f-torture/compile/20000601-2.f -Os' > failed yesterday for the first time. Using a Linux->mips-sgi-irix6.5 > cross-compiler, the problem seems to occur in emit_rtl.c's > adjust_address(), which was introduced by your patch. > > Actually, this was caused by the *third* in the series and was due to > setup_save_areas calling adj_ofsettable_operand in an invalid way, which > wasn't detected until now. > > I'm going to check in the fourth round of the patch, then go back and fix this. Will you please fix the known problem with the third patch first? The third patch is known to have at least one bug. It may have others, currently undiscovered. Checking in a fourth round of patches will obscure from where the problems are coming. Your comment above indicates we are already confused which patch is causing problems. Thank you for your consideration, Jeffrey D. Oldham oldham@codesourcery.com From gcc-patches-return-38038-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:46:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28036 invoked by alias); 4 Jul 2001 17:46:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27933 invoked from network); 4 Jul 2001 17:46:19 -0000 Received: from unknown (HELO snake.iap.physik.tu-darmstadt.de) (130.83.4.87) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:46:19 -0000 Received: from localhost (schmid@localhost) by snake.iap.physik.tu-darmstadt.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) with ESMTP id UAA30323; Wed, 4 Jul 2001 20:46:26 +0200 Date: Wed, 4 Jul 2001 20:46:26 +0200 (CEST) From: Peter Schmid To: gcc-patches@gcc.gnu.org cc: libstdc++@gcc.gnu.org Subject: [libstdc++] Problems with extension headers (slist) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII G++ 3.1 does no longer compile my source code which employs slists. The code is rejected since and other extension headers use construct and destroy rather than _Construct and _Destroy. The following patch fixes the problem. Hope this helps, Peter Schmid 2001-07-04 Peter Schmid * include/ext/slist: Replace destroy with _Destroy and construct with _Construct. * include/ext/stl_rope: (likewise) * include/ext/stl_hashtable: (likewise) * include/ext/ropeimpl.h: (likewise) *** libstdc++-v3/include/ext/ropeimpl.h.orig Wed Jul 4 18:49:42 2001 --- libstdc++-v3/include/ext/ropeimpl.h Wed Jul 4 18:50:32 2001 *************** inline void _Rope_RopeRep<_CharT,_Alloc> *** 317,323 **** _CharT* __cstr = _M_c_string; if (0 != __cstr) { size_t __size = _M_size + 1; ! destroy(__cstr, __cstr + __size); _Data_deallocate(__cstr, __size); } } --- 317,323 ---- _CharT* __cstr = _M_c_string; if (0 != __cstr) { size_t __size = _M_size + 1; ! _Destroy(__cstr, __cstr + __size); _Data_deallocate(__cstr, __size); } } *************** template *** 329,335 **** allocator_type __a) { if (!_S_is_basic_char_type((_CharT*)0)) { ! destroy(__s, __s + __n); } // This has to be a static member, so this gets a bit messy __a.deallocate( --- 329,335 ---- allocator_type __a) { if (!_S_is_basic_char_type((_CharT*)0)) { ! _Destroy(__s, __s + __n); } // This has to be a static member, so this gets a bit messy __a.deallocate( *************** const _CharT* rope<_CharT,_Alloc>::c_str *** 1453,1459 **** // It must have been added in the interim. Hence it had to have been // separately allocated. Deallocate the old copy, since we just // replaced it. ! destroy(__old_c_string, __old_c_string + __s + 1); _Data_deallocate(__old_c_string, __s + 1); } # endif --- 1453,1459 ---- // It must have been added in the interim. Hence it had to have been // separately allocated. Deallocate the old copy, since we just // replaced it. ! _Destroy(__old_c_string, __old_c_string + __s + 1); _Data_deallocate(__old_c_string, __s + 1); } # endif *** libstdc++-v3/include/ext/slist.orig Wed Jul 4 18:50:41 2001 --- libstdc++-v3/include/ext/slist Wed Jul 4 19:03:34 2001 *************** protected: *** 265,271 **** _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next); _Slist_node_base* __next_next = __next->_M_next; __pos->_M_next = __next_next; ! destroy(&__next->_M_data); _M_put_node(__next); return __next_next; } --- 265,271 ---- _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next); _Slist_node_base* __next_next = __next->_M_next; __pos->_M_next = __next_next; ! _Destroy(&__next->_M_data); _M_put_node(__next); return __next_next; } *************** _Slist_base<_Tp,_Alloc>::_M_erase_after( *** 280,286 **** while (__cur != __last_node) { _Slist_node<_Tp>* __tmp = __cur; __cur = (_Slist_node<_Tp>*) __cur->_M_next; ! destroy(&__tmp->_M_data); _M_put_node(__tmp); } __before_first->_M_next = __last_node; --- 280,286 ---- while (__cur != __last_node) { _Slist_node<_Tp>* __tmp = __cur; __cur = (_Slist_node<_Tp>*) __cur->_M_next; ! _Destroy(&__tmp->_M_data); _M_put_node(__tmp); } __before_first->_M_next = __last_node; *************** private: *** 318,324 **** _Node* _M_create_node(const value_type& __x) { _Node* __node = this->_M_get_node(); __STL_TRY { ! construct(&__node->_M_data, __x); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); --- 318,324 ---- _Node* _M_create_node(const value_type& __x) { _Node* __node = this->_M_get_node(); __STL_TRY { ! _Construct(&__node->_M_data, __x); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); *************** private: *** 328,334 **** _Node* _M_create_node() { _Node* __node = this->_M_get_node(); __STL_TRY { ! construct(&__node->_M_data); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); --- 328,334 ---- _Node* _M_create_node() { _Node* __node = this->_M_get_node(); __STL_TRY { ! _Construct(&__node->_M_data); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); *************** public: *** 425,431 **** void pop_front() { _Node* __node = (_Node*) this->_M_head._M_next; this->_M_head._M_next = __node->_M_next; ! destroy(&__node->_M_data); this->_M_put_node(__node); } --- 425,431 ---- void pop_front() { _Node* __node = (_Node*) this->_M_head._M_next; this->_M_head._M_next = __node->_M_next; ! _Destroy(&__node->_M_data); this->_M_put_node(__node); } *** libstdc++-v3/include/ext/stl_hashtable.h.orig Wed Jul 4 18:48:46 2001 --- libstdc++-v3/include/ext/stl_hashtable.h Wed Jul 4 19:02:26 2001 *************** private: *** 517,523 **** _Node* __n = _M_get_node(); __n->_M_next = 0; __STL_TRY { ! construct(&__n->_M_val, __obj); return __n; } __STL_UNWIND(_M_put_node(__n)); --- 517,523 ---- _Node* __n = _M_get_node(); __n->_M_next = 0; __STL_TRY { ! _Construct(&__n->_M_val, __obj); return __n; } __STL_UNWIND(_M_put_node(__n)); *************** private: *** 525,531 **** void _M_delete_node(_Node* __n) { ! destroy(&__n->_M_val); _M_put_node(__n); } --- 525,531 ---- void _M_delete_node(_Node* __n) { ! _Destroy(&__n->_M_val); _M_put_node(__n); } *** libstdc++-v3/include/ext/stl_rope.h.orig Wed Jul 4 18:51:55 2001 --- libstdc++-v3/include/ext/stl_rope.h Wed Jul 4 19:02:55 2001 *************** class rope : public _Rope_base<_CharT,_A *** 1540,1546 **** { _CharT* __buf = _Data_allocate(_S_rounded_up_size(1)); ! construct(__buf, __c); __STL_TRY { _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a); } --- 1540,1546 ---- { _CharT* __buf = _Data_allocate(_S_rounded_up_size(1)); ! _Construct(__buf, __c); __STL_TRY { _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a); } *************** class rope : public _Rope_base<_CharT,_A *** 1642,1648 **** } void copy(_CharT* __buffer) const { ! destroy(__buffer, __buffer + size()); _S_flatten(_M_tree_ptr, __buffer); } --- 1642,1648 ---- } void copy(_CharT* __buffer) const { ! _Destroy(__buffer, __buffer + size()); _S_flatten(_M_tree_ptr, __buffer); } *************** class rope : public _Rope_base<_CharT,_A *** 1656,1662 **** size_t __size = size(); size_t __len = (__pos + __n > __size? __size - __pos : __n); ! destroy(__buffer, __buffer + __len); _S_flatten(_M_tree_ptr, __pos, __len, __buffer); return __len; } --- 1656,1662 ---- size_t __size = size(); size_t __len = (__pos + __n > __size? __size - __pos : __n); ! _Destroy(__buffer, __buffer + __len); _S_flatten(_M_tree_ptr, __pos, __len, __buffer); return __len; } From gcc-patches-return-38039-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 17:48:45 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1072 invoked by alias); 4 Jul 2001 17:48:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 979 invoked from network); 4 Jul 2001 17:48:44 -0000 Received: from unknown (HELO snake.iap.physik.tu-darmstadt.de) (130.83.4.87) by sourceware.cygnus.com with SMTP; 4 Jul 2001 17:48:44 -0000 Received: from localhost (schmid@localhost) by snake.iap.physik.tu-darmstadt.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) with ESMTP id UAA30327; Wed, 4 Jul 2001 20:48:51 +0200 Date: Wed, 4 Jul 2001 20:48:51 +0200 (CEST) From: Peter Schmid To: gcc-patches@gcc.gnu.org cc: libstdc++@gcc.gnu.org Subject: [libstdc++] Problems with include/bits/stl_vector.h (patch included) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII There is a typo in include/bits/stl_vector.h of libstdc++ shipped with gcc 3.1. IterCategoy should be replaced with IterCategory. Therefore, vector iterators do no longer work. The appended patch fixes this problem. Hope this helps, Peter Schmid 2001-07-04 Peter Schmid * include/bits/stl_vector.h: Fix typo. *** libstdc++-v3/include/bits/stl_vector.h.orig Wed Jul 4 19:38:56 2001 --- libstdc++-v3/include/bits/stl_vector.h Wed Jul 4 19:39:27 2001 *************** public: *** 256,262 **** void _M_initialize_aux(_InputIterator __first, _InputIterator __last, __false_type) { ! typedef typename iterator_traits<_InputIterator>::iterator_category _IterCategoy; _M_range_initialize(__first, __last, _IterCategory()); } --- 256,262 ---- void _M_initialize_aux(_InputIterator __first, _InputIterator __last, __false_type) { ! typedef typename iterator_traits<_InputIterator>::iterator_category _IterCategory; _M_range_initialize(__first, __last, _IterCategory()); } From gcc-patches-return-38040-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:11:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12774 invoked by alias); 4 Jul 2001 18:11:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12738 invoked from network); 4 Jul 2001 18:11:16 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:11:16 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id UAA09845; Wed, 4 Jul 2001 20:11:07 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f64IB7g28497; Wed, 4 Jul 2001 20:11:07 +0200 (MEST) From: Rainer Orth Message-ID: <15171.23609.153871.389963@xayide.TechFak.Uni-Bielefeld.DE> Date: Wed, 4 Jul 2001 20:11:05 +0200 (MEST) To: gcc-patches@gcc.gnu.org Cc: Mike Stump , Jeff Law Subject: 3.0.1 PATCH: Fixes for install.texi host/target section X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Here's another patch resulting from proofreading install.texi. It deals primarily with the host/target section. A few target specific questions came up while doing this, I've copied the target maintainers for clarification. I noticed one issue I haven't done anything about: Installing GCC: Binaries says > We are often asked about pre-compiled versions of GCC@. While we cannot > provide these for all platforms, below you'll find links to binaries for > various platforms where creating them by yourself is not easy due to various > reasons. This seems wrong, since it suggests that we *provide* binary distributions, while we should make it perfectly clear that we don't. A comment about the host/target section: at the moment, we list all target specific information in the body of this section, only indicating in `Older Systems' that some configurations may not work right now. Perhaps we should try to find out which targets are known to build/being maintained as of GCC 3.0 and move the others to a separate section, providing historic information for people who want to try revive any of those ports? Many targets mention some requirement on binutils versions, many of them probably obsolete. I've corrected a few of them (like references to binutils 2.11.1 as unreleased), but I think it would be far better and cleaner to globally require binutils 2.11.2 or above and remove all target specific variations thereof, unless those document requirements beyond this. Some specific questions: * elxsi-elxsi-bsd lists mrs@cygnus.com as a contact. I'm not sure if Mike (using his new address) is still able to help here, or if this target belongs to the historic section suggested above. * hppa*-hp-hpux10 warns about as inserting timestamps into object files and suggests make bootstrap; make all as a workaround. Isn't it much better to recommend a bootstrap with -save-temps added to CFLAGS instead, as we do on a couple of other platforms? Tested with texi2dvi and makeinfo. Ok for branch and mainline? Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE Wed Jul 4 19:59:12 2001 Rainer Orth * doc/install.texi (Specific): Markup, spelling and typo fixes. Fixed sorting. Consistently require binutils 2.11.2, not prereleases. (Specific, decstation-*): Canonicalize as mips-dec-*. (Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement, always necessary. (Specific, m68k-altos): Removed reference to README.altos, deleted. (Specific, mips-*): Reword MIPS C compiler requirements. (Specific, powerpc*-*-*): New, mention --with-cpu once. (Specific, sunv5): Removed, obsolete. Index: install.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/install.texi,v retrieving revision 1.1.2.40 diff -u -p -r1.1.2.40 install.texi --- install.texi 2001/07/04 13:59:06 1.1.2.40 +++ install.texi 2001/07/04 17:57:03 @@ -668,7 +668,7 @@ canadian cross build. The @option{--dis @item --with-included-gettext If NLS is enabled, the @option{--with-included-gettext} option causes the build -procedure to prefer its copy of GNU @code{gettext}. +procedure to prefer its copy of GNU @command{gettext}. @item --with-catgets If NLS is enabled, and if the host lacks @code{gettext} but has the @@ -1236,14 +1236,14 @@ GNU Compiler Collection on your machine. @item @uref{#c4x,,c4x} @item -@uref{#decstation-*,,decstation-*} -@item @uref{#dos,,DOS} @item @uref{#dsp16xx,,dsp16xx} @item @uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd} @item +@uref{#*-*-freebsd*,,*-*-freebsd*} +@item @uref{#h8300-hms,,h8300-hms} @item @uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*} @@ -1254,8 +1254,6 @@ GNU Compiler Collection on your machine. @item @uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11} @item -@uref{#*-*-freebsd*,,*-*-freebsd*} -@item @uref{#i370-*-*,,i370-*-*} @item @uref{#*-*-linux-gnu,,*-*-linux-gnu} @@ -1328,6 +1326,8 @@ GNU Compiler Collection on your machine. @item @uref{#mips-*-*,,mips-*-*} @item +@uref{#mips-dec-*,,mips-dec-*} +@item @uref{#mips-mips-bsd,,mips-mips-bsd} @item @uref{#mips-mips-riscos*,,mips-mips-riscos*} @@ -1348,6 +1348,8 @@ GNU Compiler Collection on your machine. @item @uref{#ns32k-utek,,ns32k-utek} @item +@uref{#powerpc*-*-*,,powerpc*-*-*, powerpc-*-sysv4} +@item @uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4} @item @uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*} @@ -1378,8 +1380,6 @@ GNU Compiler Collection on your machine. @item @uref{#*-sun-solaris2.8,,*-sun-solaris2.8} @item -@uref{#sunv5,,Sun V5.0 Compiler Bugs} -@item @uref{#sparc-sun-sunos*,,sparc-sun-sunos*} @item @uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1} @@ -1414,17 +1414,17 @@ GNU Compiler Collection on your machine. MIL-STD-1750A processors. The MIL-STD-1750A cross configuration produces output for -@code{as1750}, an assembler/linker available under the GNU Public +@code{as1750}, an assembler/linker available under the GNU General Public License for the 1750A@. @code{as1750} can be obtained at @uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}. A similarly licensed simulator for the 1750A is available from same address. -You should ignore a fatal error during the building of libgcc (libgcc is -not yet implemented for the 1750A@.) +You should ignore a fatal error during the building of @samp{libgcc} +(@samp{libgcc} is not yet implemented for the 1750A@.) The @code{as1750} assembler requires the file @file{ms1750.inc}, which is -found in the directory @file{config/1750a}. +found in the directory @file{gcc/config/1750a}. GCC produced the same sections as the Fairchild F9450 C Compiler, namely: @@ -1443,7 +1443,7 @@ The read-only (ROM) constants section. Initialization section (code to copy KREL to SREL)@. @end table -The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16). This +The smallest addressable unit is 16 bits (@code{BITS_PER_UNIT} is 16). This means that type @code{char} is represented with a 16-bit word per character. The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by GCC@. @@ -1480,28 +1480,11 @@ alpha-based platforms using ELF (in part DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this section, please read all other sections that match your target. -We require binutils 2.11.1 (as of yet unreleased), binutils with -@samp{binutils-2_11-branch} tag after May 31, 2001 (as taken below), or newer. -Previous binutils releases had a number of problems with DWARF2 +We require binutils 2.11.2 or newer. +Previous binutils releases had a number of problems with DWARF 2 debugging information, not the least of which is incorrect linking of shared libraries. -Until binutils 2.11.1 is released, these sample commands may be useful: - -@smallexample -mkdir binutils-2.11.X; cd binutils-2.11.X -cvs -d :pserver:anoncvs@@anoncvs.cygnus.com:/cvs/src \ - co -rbinutils-2_11-branch -P binutils -mkdir obj; cd obj -../src/configure --prefix=@emph{an-absolute-path} -make all check install -@end smallexample - -When configuring gcc, provide explicit @option{--with-gnu-as} -@option{--with-as=@emph{an-absolute-path/bin/as}} and -@option{--with-gnu-ld} @option{--with-ld=@emph{an-absolute-path/bin/ld}} -options to point into the prefix used above. - @html


    @@ -1682,38 +1665,6 @@ can also be obtained from:


    @end html -@heading @anchor{decstation-*}decstation-* -MIPS-based DECstations can support three different personalities: -Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have -a configuration name beginning with @samp{alpha-dec}.) To configure GCC -for these platforms use the following configurations: - -@table @samp -@item decstation-ultrix -Ultrix configuration. - -@item decstation-osf1 -Dec's version of OSF/1. - -@item decstation-osfrose -Open Software Foundation reference port of OSF/1 which uses the -OSF/rose object file format instead of ECOFF@. Normally, you -would not select this configuration. -@end table - -The MIPS C compiler needs to be told to increase its table size -for switch statements with the @option{-Wf,-XNg1500} option in -order to compile @file{cp/parse.c}. If you use the @option{-O2} -optimization option, you also need to use @option{-Olimit 3000}. -Both of these options are automatically generated in the -@file{Makefile} that the shell script @file{configure} builds. -If you override the @code{CC} make variable and use the MIPS -compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. - -@html -

    -
    -@end html @heading @anchor{dos}DOS Please have a look at our @uref{binaries.html,,binaries page}. @@ -1734,6 +1685,37 @@ A port to the AT&T DSP1610 family of pro


    @end html +@heading @anchor{*-*-freebsd*}*-*-freebsd* + +The version of binutils installed in @file{/usr/bin} is known to work unless +otherwise specified in any per-architecture notes. However, binutils +2.11 is known to improve overall testsuite results. + +For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All +configuration support and files as shipped with GCC 2.95 are still in +place. FreeBSD 2.2.7 has been known to bootstrap completely; however, +it is unknown which version of binutils was used (it is assumed that it +was the system copy in @file{/usr/bin}) and C++ EH failures were noted. + +For FreeBSD using the ELF file format: DWARF 2 debugging is now the +default for all CPU architectures. It had been the default on +FreeBSD/alpha since its inception. You may use @option{-gstabs} instead +of @option{-g}, if you really want the old debugging format. There are +no known issues with mixing object files and libraries with different +debugging formats. Otherwise, this release of GCC should now match more +of the configuration used in the stock FreeBSD configuration of GCC. In +particular, @option{--enable-threads} is now configured by default. +However, as a general user, do not attempt to replace the system +compiler with this release. Known to bootstrap and check with good +results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@. + +At this time, @option{--enable-threads} is not compatible with +@option{--enable-libgcj} on FreeBSD@. + +@html +

    +
    +@end html @heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd The Elxsi's C compiler has known limitations that prevent it from compiling GCC@. Please contact @email{mrs@@cygnus.com} for more details. @@ -1758,7 +1740,7 @@ longer a multiple of 2 bytes. @end html @heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* -We @emph{highly} recommend using gas/binutils-2.8 or newer on all hppa +We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa platforms; you may encounter a variety of problems when using the HP assembler. @@ -1769,10 +1751,10 @@ use GAS and GDB and configure GCC with t @option{--with-as=@dots{}} options. If you wish to use pa-risc 2.0 architecture support, you must use either -the HP assembler, gas/binutils-2.11 or a recent +the HP assembler, gas/binutils 2.11 or a recent @uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. -More specific information to hppa*-hp-hpux* targets follows. +More specific information to @samp{hppa*-hp-hpux*} targets follows. @html

    @@ -1836,37 +1818,6 @@ this platform.


    @end html -@heading @anchor{*-*-freebsd*}*-*-freebsd* - -The version of binutils installed in @file{/usr/bin} is known to work unless -otherwise specified in any per-architecture notes. However, binutils -2.11 is known to improve overall testsuite results. - -For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All -configuration support and files as shipped with gcc 2.95 are still in -place. FreeBSD 2.2.7 has been known to bootstrap completely; however, -it is unknown which version of binutils was used (it is assumed that it -was the system copy in @file{/usr/bin}) and C++ EH failures were noted. - -For FreeBSD using the ELF file format: DWARF2 debugging is now the -default for all CPU architectures. It had been the default on -FreeBSD/alpha since its inception. You may use @option{-gstabs} instead -of @option{-g}, if you really want the old debugging format. There are -no known issues with mixing object files and libraries with different -debugging formats. Otherwise, this release of gcc should now match more -of the configuration used in the stock FreeBSD configuration of gcc. In -particular, @option{--enable-threads} is now configured by default. -However, as a general user, do not attempt to replace the system -compiler with this release. Known to bootstrap and check with good -results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@. - -At this time, @option{--enable-threads} is not compatible with -@option{--enable-libgcj} on FreeBSD@. - -@html -

    -
    -@end html @heading @anchor{i370-*-*}i370-*-* This port is very preliminary and has many known bugs. We hope to have a higher-quality port for this machine soon. @@ -1878,7 +1829,7 @@ have a higher-quality port for this mach @heading @anchor{*-*-linux-gnu}*-*-linux-gnu If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install -out-of-the-box. You'll get compile errors while building libstdc++. +out-of-the-box. You'll get compile errors while building @samp{libstdc++}. The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be applied in the GCC source tree, fixes the compatibility problems. @@ -1923,7 +1874,7 @@ gas/binutils version 2.5.2 or later. @end html @heading @anchor{ix86-*-linux*}i?86-*-linux* -You will need binutils-2.9.1.0.15 or newer for exception handling to work. +You will need binutils 2.9.1.0.15 or newer for exception handling to work. If you receive Signal 11 errors when building on GNU/Linux, then it is possible you have a hardware problem. Further information on this can be @@ -1954,20 +1905,13 @@ Use this for the SCO OpenServer Release Unlike earlier versions of GCC, the ability to generate COFF with this target is no longer provided. -Earlier versions of GCC emitted Dwarf-1 when generating ELF to allow +Earlier versions of GCC emitted DWARF 1 when generating ELF to allow the system debugger to be used. That support was too burdensome to -maintain. GCC now emits only dwarf-2 for this target. This means you +maintain. GCC now emits only DWARF 2 for this target. This means you may use either the UDK debugger or GDB to debug programs built by this version of GCC@. -If you are building languages other than C, you must follow the instructions -about invoking @samp{make bootstrap} because the native OpenServer -compiler will build a @command{cc1plus} that will not correctly parse many -valid C++ programs including those in @file{libgcc.a}. -@strong{You must do a @samp{make bootstrap} if you are building with the -native compiler.} - -Use of the @option{-march-pentiumpro} flag can result in +Use of the @option{-march=pentiumpro} flag can result in unrecognized opcodes when using the native assembler on OS versions before 5.0.6. (Support for P6 opcodes was added to the native ELF assembler in that version.) While it's rather rare to see these emitted by GCC yet, @@ -1999,7 +1943,8 @@ Look in @file{gcc/config/i386/sco5.h} (s additional OpenServer-specific flags. Systems based on OpenServer before 5.0.4 (@samp{uname -X} -will tell you what you're running) require TLS597 from ftp.sco.com/TLS +will tell you what you're running) require TLS597 from +@uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/} for C++ constructors and destructors to work right. The system linker in (at least) 5.0.4 and 5.0.5 will sometimes @@ -2012,13 +1957,13 @@ available. You must install both and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}. The dynamic linker in OpenServer 5.0.5 (earlier versions may show -the same problem) aborts on certain g77-compiled programs. It's particularly +the same problem) aborts on certain G77-compiled programs. It's particularly likely to be triggered by building Fortran code with the @option{-fPIC} flag. Although it's conceivable that the error could be triggered by other code, only G77-compiled code has been observed to cause this abort. If you are getting core dumps immediately upon execution of your -g77 program---and especially if it's compiled with @option{-fPIC}---try applying -@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your libf2c and +G77 program---and especially if it's compiled with @option{-fPIC}---try applying +@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and rebuilding GCC@. Affected faults, when analyzed in a debugger, will show a stack backtrace with a fault occurring in @code{rtld()} and the program @@ -2041,10 +1986,6 @@ default compiler such as OpenServer 5 or generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, with the same warnings and caveats as the SCO UDK@. -You can stage1 with either your native compiler or with UDK@. If you -don't do a full bootstrap when initially building with your native compiler -you will have an utterly unusable pile of bits as your reward. - This target is a little tricky to build because we have to distinguish it from the native tools (so it gets headers, startups, and libraries from the right place) while making the tools not think we're actually @@ -2057,8 +1998,8 @@ command like this: @emph{You should substitute @samp{i686} in the above command with the appropriate processor for your host.} -You should follow this with a @samp{make bootstrap} then -@samp{make install}. You can then access the UDK-targeted GCC +After the usual @samp{make bootstrap} and +@samp{make install}, you can then access the UDK-targeted GCC tools by adding @command{udk-} before the commonly known name. For example, to invoke the C compiler, you would use @command{udk-gcc}. They will coexist peacefully with any native-target GCC tools you may @@ -2104,7 +2045,7 @@ Go to the Berkeley universe before compi
    @end html @heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2* -You must install GNU @file{sed} before running @file{configure}. +You must install GNU @command{sed} before running @command{configure}. @html

    @@ -2113,7 +2054,7 @@ You must install GNU @file{sed} before r @heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3* The @code{fixproto} shell script may trigger a bug in the system shell. If you encounter this problem, upgrade your operating system or -use BASH (the GNU shell) to run @code{fixproto}. +use @command{bash} (the GNU shell) to run @code{fixproto}. @html @@ -2182,7 +2123,7 @@ AIX Make frequently has problems with GC newer is recommended to build on this platform. Errors involving @code{alloca} when building GCC generally are due -to an incorrect definition of @var{CC} in the Makefile or mixing files +to an incorrect definition of @code{CC} in the Makefile or mixing files compiled with the native C compiler and GCC@. During the stage1 phase of the build, the native AIX compiler @strong{must} be invoked as @command{cc} (not @command{xlc}). Once @command{configure} has been informed of @@ -2196,8 +2137,8 @@ Binutils 2.10 does not support AIX 4.3. @uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX Toolbox for Linux: GNU and Open Source tools for AIX}; website does work. Binutils 2.11 is expected to include AIX 4.3 -support. The GNU Assembler is necessary for libstdc++ to build. The -AIX native ld still is recommended. The native AIX tools do +support. The GNU Assembler is necessary for @samp{libstdc++} to build. The +AIX native @command{ld} still is recommended. The native AIX tools do interoperate with GCC@. Linking executables and shared libraries may produce warnings of @@ -2290,7 +2231,7 @@ applications. There are no standard Uni @end html @heading @anchor{m68k-altos}m68k-altos Altos 3068. You must use the GNU assembler, linker and debugger. -Also, you must fix a kernel bug. Details in the file @file{README.ALTOS}. +Also, you must fix a kernel bug. @html

    @@ -2300,8 +2241,8 @@ Also, you must fix a kernel bug. Detail Apple Macintosh running A/UX@. You may configure GCC to use either the system assembler and linker or the GNU assembler and linker. You should use the GNU configuration -if you can, especially if you also want to use G++. You enabled -that configuration with + the @option{--with-gnu-as} and @option{--with-gnu-ld} +if you can, especially if you also want to use G++. You enable +that configuration with the @option{--with-gnu-as} and @option{--with-gnu-ld} options to @code{configure}. Note the C compiler that comes @@ -2328,9 +2269,9 @@ bootstrap. Binaries are available from @heading @anchor{m68k-bull-sysv}m68k-bull-sysv Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works either with native assembler or GNU assembler. You can use -GNU assembler with native coff generation by providing @option{--with-gnu-as} to -the configure script or use GNU assembler with dbx-in-coff encapsulation -by providing @samp{--with-gnu-as --stabs}. For any problem with native +GNU assembler with native COFF generation by providing @option{--with-gnu-as} to +the configure script or use GNU assembler with stabs-in-COFF encapsulation +by providing @samp{--with-gnu-as --stabs}. For any problem with the native assembler or for availability of the DPX/2 port of GAS, contact @email{F.Pierresteguy@@frcl.bull.fr}. @@ -2408,7 +2349,7 @@ library version of ``cvtnum(3c)'' and th This patch is also known as PHCO_4484. -In addition, if you wish to use gas @option{--with-gnu-as} you must use +In addition, if you wish to use gas, you must use gas version 2.1 or later, and you must use the GNU linker version 2.1 or later. Earlier versions of gas relied upon a program which converted the gas output into the native HP-UX format, but that program has not been @@ -2559,7 +2500,7 @@ configuration based on the current softw @heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 Tektronix XD88 running UTekV 3.2e. Do not turn on optimization while building stage1 if you bootstrap with -the buggy Green Hills compiler. Also, The bundled LAI +the buggy Green Hills compiler. Also, the bundled LAI System V NFS is buggy so if you build in an NFS mounted directory, start from a fresh reboot, or avoid NFS all together. Otherwise you may have trouble getting clean comparisons @@ -2608,9 +2549,9 @@ possible that some old versions of the s system lacks these, you must remove or undo the definition of @code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}. -The MIPS C compiler needs to be told to increase its table size -for switch statements with the @option{-Wf,-XNg1500} option in -order to compile @file{cp/parse.c}. If you use the @option{-O2} +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. @@ -2621,10 +2562,42 @@ compilers, you may need to add @option{-


    @end html +@heading @anchor{mips-dec-*}mips-dec-* +MIPS-based DECstations can support three different personalities: +Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have +a configuration name beginning with @samp{alpha*-dec}.) To configure GCC +for these platforms use the following configurations: + +@table @samp +@item mips-dec-ultrix +Ultrix configuration. + +@item mips-dec-osf1 +DEC's version of OSF/1. + +@item mips-dec-osfrose +Open Software Foundation reference port of OSF/1 which uses the +OSF/rose object file format instead of ECOFF@. Normally, you +would not select this configuration. +@end table + +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} +optimization option, you also need to use @option{-Olimit 3000}. +Both of these options are automatically generated in the +@file{Makefile} that the shell script @file{configure} builds. +If you override the @code{CC} make variable and use the MIPS +compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. + +@html +

    +
    +@end html @heading @anchor{mips-mips-riscos*}mips-mips-riscos* -The MIPS C compiler needs to be told to increase its table size -for switch statements with the @option{-Wf,-XNg1500} option in -order to compile @file{cp/parse.c}. If you use the @option{-O2} +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} optimization option, you also need to use @option{-Olimit 3000}. Both of these options are automatically generated in the @file{Makefile} that the shell script @file{configure} builds. @@ -2637,21 +2610,21 @@ personalities: default, BSD 4.3, System for these platforms use the following configurations: @table @samp -@item mips-mips-riscos@code{rev} -Default configuration for RISC-OS, revision @code{rev}. +@item mips-mips-riscos@var{rev} +Default configuration for RISC-OS, revision @var{rev}. -@item mips-mips-riscos@code{rev}bsd -BSD 4.3 configuration for RISC-OS, revision @code{rev}. +@item mips-mips-riscos@var{rev}bsd +BSD 4.3 configuration for RISC-OS, revision @var{rev}. -@item mips-mips-riscos@code{rev}sysv4 -System V.4 configuration for RISC-OS, revision @code{rev}. +@item mips-mips-riscos@var{rev}sysv4 +System V.4 configuration for RISC-OS, revision @var{rev}. @html


    @end html -@item mips-mips-riscos@code{rev}sysv -System V.3 configuration for RISC-OS, revision @code{rev}. +@item mips-mips-riscos@var{rev}sysv +System V.3 configuration for RISC-OS, revision @var{rev}. @end table The revision @code{rev} mentioned above is the revision of @@ -2861,8 +2834,7 @@ binaries of GCC for bootstrapping.


    @end html -@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 -PowerPC system in big endian mode, running System V.4. +@heading @anchor{powerpc*-*-*}powerpc-*-* You can specify a default version for the @option{-mcpu=@var{cpu_type}} switch by using the configure option @option{--with-cpu-@var{cpu_type}}. @@ -2871,16 +2843,20 @@ switch by using the configure option @op


    @end html +@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 +PowerPC system in big endian mode, running System V.4. + +@html +

    +
    +@end html @heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* You will need -@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils-2.9.4.0.8} +@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils 2.9.4.0.8} or newer for a working GCC@. It is strongly recommended to recompile binutils if you initially built it with gcc-2.7.2.x. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2889,9 +2865,6 @@ switch by using the configure option @op Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as the default. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2900,9 +2873,6 @@ switch by using the configure option @op Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2910,9 +2880,6 @@ switch by using the configure option @op @heading @anchor{powerpc-*-eabi}powerpc-*-eabi Embedded PowerPC system in big endian mode. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2920,9 +2887,6 @@ switch by using the configure option @op @heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 PowerPC system in little endian mode, running System V.4. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2938,9 +2902,6 @@ the PSIM simulator. @heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi Embedded PowerPC system in little endian mode. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2948,9 +2909,6 @@ switch by using the configure option @op @heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe PowerPC system in little endian mode running Windows NT@. -You can specify a default version for the @option{-mcpu=@var{cpu_type}} -switch by using the configure option @option{--with-cpu-@var{cpu_type}}. - @html


    @@ -2959,7 +2917,7 @@ switch by using the configure option @op The only operating systems supported for the IBM RT PC are AOS and MACH@. GCC does not support AIX running on the RT@. We recommend you compile GCC with an earlier version of itself; if you compile GCC -with @code{hc}, the Metaware compiler, it will work, but you will get +with @command{hc}, the Metaware compiler, it will work, but you will get mismatches between the stage 2 and stage 3 compilers in various files. These errors are minor differences in some floating-point constants and can be safely ignored; the stage 3 compiler is correct. @@ -2970,13 +2928,13 @@ can be safely ignored; the stage 3 compi @end html @heading @anchor{*-*-solaris*}*-*-solaris* -Starting with Solaris, Sun does not ship a C compiler any more. To +Starting with Solaris 2, Sun does not ship a C compiler any more. To bootstrap and install GCC you first have to install a pre-built compiler, see our @uref{binaries.html,,binaries page} for details. -Solaris' @file{/bin/sh} will often fail to configure libstdc++-v3, boehm-gc or -libjava. If you encounter this problem, set @var{CONFIG_SHELL} to +Solaris' @file{/bin/sh} will often fail to configure @file{libstdc++-v3}, @file{boehm-gc} or +@file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to @file{/bin/ksh} in your environment and run @samp{make bootstrap} again. Another possibility that sometimes helps is to remove @file{*-*-solaris*/config.cache}. @@ -2996,10 +2954,10 @@ been fixed in later (5.x) versions of th @end html @heading @anchor{sparc-sun-*}sparc-sun-* Sometimes on a Sun 4 you may observe a crash in the program -@code{genflags} or @code{genoutput} while building GCC@. This is said to -be due to a bug in @code{sh}. You can probably get around it by running -@code{genflags} or @code{genoutput} manually and then retrying the -@code{make}. +@command{genflags} or @command{genoutput} while building GCC@. This is said to +be due to a bug in @command{sh}. You can probably get around it by running +@command{genflags} or @command{genoutput} manually and then retrying the +@command{make}. @html

    @@ -3036,11 +2994,11 @@ On Solaris 2, trying to use the linker a For example, the linker may hang indefinitely. The fix is to remove @file{/usr/ucb} from your @code{PATH}. -All releases of GNU binutils prior to 2.11.1 have known bugs on this -platform. We recommend the use of GNU binutils 2.11.1 or the vendor +All releases of GNU binutils prior to 2.11.2 have known bugs on this +platform. We recommend the use of GNU binutils 2.11.2 or the vendor tools (Sun as, Sun ld). -Unfortunately, C++ shared libraries, including libstdc++, won't work +Unfortunately, C++ shared libraries, including @samp{libstdc++}, won't work properly if assembled with Sun as: the linker will complain about relocations in read-only sections, in the definition of virtual tables. Also, Sun as fails to process long symbols resulting from @@ -3070,7 +3028,7 @@ back it out. @item Copy the original, unpatched Solaris 7 @command{/usr/ccs/bin/as} into -@command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.1/as}, +@command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/as}, adjusting the latter name to fit your local conventions and software version numbers. @@ -3105,10 +3063,10 @@ will assume that any missing type is @co For Solaris 8, this is fixed by revision 24 or later of patch 108652 (for SPARCs) or 108653 (for Intels). -Solaris 8's linker fails to link some libjava programs if +Solaris 8's linker fails to link some @samp{libjava} programs if previously-installed GCC java libraries already exist in the configured -prefix. For this reason, libgcj is disabled by default on Solaris 8. -If you use GNU ld, or if you don't have a previously-installed libgcj in +prefix. For this reason, @samp{libgcj} is disabled by default on Solaris 8. +If you use GNU ld, or if you don't have a previously-installed @samp{libgcj} in the same prefix, use @option{--enable-libgcj} to build and install the Java libraries. @@ -3116,25 +3074,14 @@ Java libraries.


    @end html -@heading @anchor{sunv5}Sun V5.0 Compiler Bugs - -The Sun V5.0 compilers are known to mis-compile GCC 2.95 and GCC 2.95.1, -which in turn causes GCC to fail its bootstrap comparison test. -GCC 2.95.2 has a workaround. - - -@html -

    -
    -@end html @heading @anchor{sparc-sun-sunos*}sparc-sun-sunos* -A bug in the SunOS4 linker will cause it to crash when linking +A bug in the SunOS 4 linker will cause it to crash when linking @option{-fPIC} compiled objects (and will therefore not allow you to build shared libraries). To fix this problem you can either use the most recent version of -binutils or get the latest SunOS4 linker patch (patch ID 100170-10) +binutils or get the latest SunOS 4 linker patch (patch ID 100170-10) from Sun's patch site. @@ -3145,7 +3092,7 @@ from Sun's patch site. @heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 It has been reported that you might need -@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils-2.8.1.0.23} +@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23} for this platform, too. @@ -3159,7 +3106,7 @@ GCC version 2.95 is not able to compile @code{sparc64} targets. Users of the Linux kernel, at least, can use the @code{sparc32} program to start up a new shell invocation with an environment that causes @command{configure} to -recognize (via @samp{uname -a}) the system as @var{sparc-*-*} instead. +recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead. @html @@ -3175,7 +3122,7 @@ ld fatal: failed to write symbol name @v in strings table for file @var{whatever} @end smallexample -This probably indicates that the disk is full or your ULIMIT won't allow +This probably indicates that the disk is full or your ulimit won't allow the file to be as large as it needs to be. This problem can also result because the kernel parameter @code{MAXUMEM} @@ -3191,7 +3138,7 @@ On System V, if you get an error like th @end example @noindent -that too indicates a problem with disk space, ULIMIT, or @code{MAXUMEM}. +that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}. On a System V release 4 system, make sure @file{/usr/bin} precedes @file{/usr/ucb} in @code{PATH}. The @code{cc} command in @@ -3205,11 +3152,6 @@ On a System V release 4 system, make sur Don't try compiling with Vax C (@code{vcc}). It produces incorrect code in some cases (for example, when @code{alloca} is used). -Meanwhile, compiling @file{cp/parse.c} with pcc does not work because of -an internal table size limitation in that compiler. To avoid this -problem, compile just the GNU C compiler first, and use it to recompile -building all the languages that you want to run. - @html


    @@ -3304,13 +3246,13 @@ bring GCC up on such a system, if still require first installing an old version of GCC which did work on that system, and using it to compile a more recent GCC, to avoid bugs in the vendor compiler. Old releases of GCC 1 and GCC 2 are available in -the old-releases directory on the +the @file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally be avoided using @command{fixincludes}, but bugs or deficiencies in libraries and the operating system may still cause problems. For some systems, old versions of GNU binutils may also be useful, -and are available from pub/binutils/old-releases on +and are available from @file{pub/binutils/old-releases} on @uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}. Some of the information on specific systems above relates to From gcc-patches-return-38041-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:12:19 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13562 invoked by alias); 4 Jul 2001 18:12:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13399 invoked from network); 4 Jul 2001 18:12:12 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:12:12 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA22547; Wed, 4 Jul 01 14:16:22 EDT Date: Wed, 4 Jul 01 14:16:22 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041816.AA22547@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: MEM tracking, round four This should be the last of structural patches that affect a large number of files. The rest should be smaller. Tested on alphaev56: problems on other targets are quite possible and I'll try to address them quickly if and when they arise. Wed Jul 4 13:40:02 2001 Richard Kenner * emit-rtl.c (replace_equiv_address): New function. * expr.h (replace_equiv_address): New declaration. * explow.c (validize_mem): Call it instead of change_address and also call if -fforce-addr and address is constant. * expr.c: Replace more calls to change_address with adjust_address and/or replace_equiv_address or to validize_mem. * function.c, regmove.c, config/alpha/alpha.c: Likewise. * config/arm/arm.md, config/clipper/clipper.md: Likewise. * config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise. * config/i370/i370.md, config/i860/i860.md: Likewise. * config/i960/i960.md, config/mips/mips.c: Likewise. * config/mips/mips.md, config/pa/pa.md: Likewise. * config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise. * config/rs6000/rs6000.md, config/sh/sh.md: Likewise. *** emit-rtl.c 2001/07/02 19:47:38 1.184 --- emit-rtl.c 2001/07/03 20:56:59 *************** change_address (memref, mode, addr) *** 1602,1605 **** --- 1602,1606 ---- return new; } + /* Return a memory reference like MEMREF, but with its mode changed to MODE and its address offset by OFFSET bytes. */ *************** adjust_address (memref, mode, offset) *** 1615,1618 **** --- 1616,1634 ---- return change_address (memref, mode, plus_constant (XEXP (memref, 0), offset)); + } + + /* Return a memory reference like MEMREF, but with its address changed to + ADDR. The caller is asserting that the actual piece of memory pointed + to is the same, just the form of the address is being changed, such as + by putting something into a register. */ + + rtx + replace_equiv_address (memref, addr) + rtx memref; + rtx addr; + { + /* For now, this is just a wrapper for change_address, but eventually + will do memref tracking. */ + return change_address (memref, VOIDmode, addr); } *** explow.c 2001/07/03 19:44:05 1.65 --- explow.c 2001/07/03 20:57:03 *************** validize_mem (ref) *** 609,616 **** if (GET_CODE (ref) != MEM) return ref; ! if (memory_address_p (GET_MODE (ref), XEXP (ref, 0))) return ref; /* Don't alter REF itself, since that is probably a stack slot. */ ! return change_address (ref, GET_MODE (ref), XEXP (ref, 0)); } --- 609,618 ---- if (GET_CODE (ref) != MEM) return ref; ! if (! (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (ref, 0))) ! || memory_address_p (GET_MODE (ref), XEXP (ref, 0))) return ref; + /* Don't alter REF itself, since that is probably a stack slot. */ ! return replace_equiv_address (ref, XEXP (ref, 0)); } *** expr.c 2001/07/02 20:02:53 1.333 --- expr.c 2001/07/03 20:57:24 *************** move_block_from_reg (regno, x, nregs, si *** 1880,1885 **** && (mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0)) != BLKmode) { ! emit_move_insn (change_address (x, mode, NULL), ! gen_rtx_REG (mode, regno)); return; } --- 1880,1884 ---- && (mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0)) != BLKmode) { ! emit_move_insn (adjust_address (x, mode, 0), gen_rtx_REG (mode, regno)); return; } *************** emit_move_insn (x, y) *** 2747,2751 **** || (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (x, 0))))) ! x = change_address (x, VOIDmode, XEXP (x, 0)); if (GET_CODE (y) == MEM --- 2746,2750 ---- || (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (x, 0))))) ! x = validize_mem (x); if (GET_CODE (y) == MEM *************** emit_move_insn (x, y) *** 2753,2757 **** || (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (y, 0))))) ! y = change_address (y, VOIDmode, XEXP (y, 0)); if (mode == BLKmode) --- 2752,2756 ---- || (flag_force_addr && CONSTANT_ADDRESS_P (XEXP (y, 0))))) ! y = validize_mem (y); if (mode == BLKmode) *************** expand_assignment (to, from, want_value, *** 3753,3759 **** to_rtx = temp; else ! to_rtx = change_address (to_rtx, mode1, ! force_reg (GET_MODE (XEXP (temp, 0)), ! XEXP (temp, 0))); bitpos = 0; } --- 3752,3758 ---- to_rtx = temp; else ! to_rtx = (replace_equiv_address ! (to_rtx, force_reg (GET_MODE (XEXP (temp, 0)), ! XEXP (temp, 0)))); bitpos = 0; } *************** store_field (target, bitsize, bitpos, mo *** 5332,5343 **** && (XEXP (addr, 0) == virtual_incoming_args_rtx || XEXP (addr, 0) == virtual_stack_vars_rtx))) ! addr = copy_to_reg (addr); /* Now build a reference to just the desired component. */ ! to_rtx = copy_rtx (change_address (target, mode, ! plus_constant (addr, ! (bitpos ! / BITS_PER_UNIT)))); MEM_SET_IN_STRUCT_P (to_rtx, 1); /* If the address of the structure varies, then it might be on --- 5331,5341 ---- && (XEXP (addr, 0) == virtual_incoming_args_rtx || XEXP (addr, 0) == virtual_stack_vars_rtx))) ! target = replace_equiv_address (target, copy_to_reg (addr)); /* Now build a reference to just the desired component. */ ! to_rtx = copy_rtx (adjust_address (target, mode, ! bitpos / BITS_PER_UNIT)); ! MEM_SET_IN_STRUCT_P (to_rtx, 1); /* If the address of the structure varies, then it might be on *************** save_noncopied_parts (lhs, list) *** 5684,5694 **** 0, 1, 1); - if (! memory_address_p (TYPE_MODE (part_type), XEXP (target, 0))) - target = change_address (target, TYPE_MODE (part_type), NULL_RTX); parts = tree_cons (to_be_saved, build (RTL_EXPR, part_type, NULL_TREE, ! (tree) target), parts); ! store_expr (TREE_PURPOSE (parts), RTL_EXPR_RTL (TREE_VALUE (parts)), 0); } return parts; --- 5682,5691 ---- 0, 1, 1); parts = tree_cons (to_be_saved, build (RTL_EXPR, part_type, NULL_TREE, ! (tree) validize_mem (target)), parts); ! store_expr (TREE_PURPOSE (parts), ! RTL_EXPR_RTL (TREE_VALUE (parts)), 0); } return parts; *************** expand_expr (exp, target, tmode, modifie *** 6343,6352 **** addr = XEXP (DECL_RTL (exp), 0); if (GET_CODE (addr) == MEM) ! addr = change_address (addr, Pmode, ! fix_lexical_addr (XEXP (addr, 0), exp)); else addr = fix_lexical_addr (addr, exp); ! temp = change_address (DECL_RTL (exp), mode, addr); } --- 6340,6350 ---- addr = XEXP (DECL_RTL (exp), 0); if (GET_CODE (addr) == MEM) ! addr ! = replace_equiv_address (addr, ! fix_lexical_addr (XEXP (addr, 0), exp)); else addr = fix_lexical_addr (addr, exp); ! temp = replace_equiv_address (DECL_RTL (exp), addr); } *************** expand_expr (exp, target, tmode, modifie *** 6357,6362 **** else if (GET_CODE (DECL_RTL (exp)) == MEM && GET_CODE (XEXP (DECL_RTL (exp), 0)) == REG) ! temp = change_address (DECL_RTL (exp), GET_MODE (DECL_RTL (exp)), ! XEXP (DECL_RTL (exp), 0)); /* If DECL_RTL is memory, we are in the normal case and either --- 6355,6359 ---- else if (GET_CODE (DECL_RTL (exp)) == MEM && GET_CODE (XEXP (DECL_RTL (exp), 0)) == REG) ! temp = validize_mem (DECL_RTL (exp)); /* If DECL_RTL is memory, we are in the normal case and either *************** expand_expr (exp, target, tmode, modifie *** 6372,6377 **** || (flag_force_addr && GET_CODE (XEXP (DECL_RTL (exp), 0)) != REG))) ! temp = change_address (DECL_RTL (exp), VOIDmode, ! copy_rtx (XEXP (DECL_RTL (exp), 0))); /* If we got something, return it. But first, set the alignment --- 6369,6374 ---- || (flag_force_addr && GET_CODE (XEXP (DECL_RTL (exp), 0)) != REG))) ! temp = replace_equiv_address (DECL_RTL (exp), ! copy_rtx (XEXP (DECL_RTL (exp), 0))); /* If we got something, return it. But first, set the alignment *************** expand_expr (exp, target, tmode, modifie *** 6442,6447 **** || (flag_force_addr && GET_CODE (XEXP (TREE_CST_RTL (exp), 0)) != REG))) ! return change_address (TREE_CST_RTL (exp), VOIDmode, ! copy_rtx (XEXP (TREE_CST_RTL (exp), 0))); return TREE_CST_RTL (exp); --- 6439,6444 ---- || (flag_force_addr && GET_CODE (XEXP (TREE_CST_RTL (exp), 0)) != REG))) ! return replace_equiv_address (TREE_CST_RTL (exp), ! copy_rtx (XEXP (TREE_CST_RTL (exp), 0))); return TREE_CST_RTL (exp); *************** expand_expr (exp, target, tmode, modifie *** 6492,6497 **** if (temp == 0 || GET_CODE (temp) != MEM) abort (); ! return change_address (temp, mode, ! fix_lexical_addr (XEXP (temp, 0), exp)); } if (SAVE_EXPR_RTL (exp) == 0) --- 6489,6495 ---- if (temp == 0 || GET_CODE (temp) != MEM) abort (); ! return ! replace_equiv_address (temp, ! fix_lexical_addr (XEXP (temp, 0), exp)); } if (SAVE_EXPR_RTL (exp) == 0) *************** expand_expr (exp, target, tmode, modifie *** 6748,6758 **** if (modifier != EXPAND_CONST_ADDRESS && modifier != EXPAND_INITIALIZER ! && modifier != EXPAND_SUM ! && (! memory_address_p (GET_MODE (constructor), ! XEXP (constructor, 0)) ! || (flag_force_addr ! && GET_CODE (XEXP (constructor, 0)) != REG))) ! constructor = change_address (constructor, VOIDmode, ! XEXP (constructor, 0)); return constructor; } --- 6746,6752 ---- if (modifier != EXPAND_CONST_ADDRESS && modifier != EXPAND_INITIALIZER ! && modifier != EXPAND_SUM) ! constructor = validize_mem (constructor); ! return constructor; } *************** expand_expr (exp, target, tmode, modifie *** 7096,7102 **** op0 = temp; else ! op0 = change_address (op0, mode1, ! force_reg (GET_MODE (XEXP (temp, 0)), ! XEXP (temp, 0))); bitpos = 0; } --- 7090,7097 ---- op0 = temp; else ! op0 = (replace_equiv_address ! (op0, ! force_reg (GET_MODE (XEXP (temp, 0)), ! XEXP (temp, 0)))); bitpos = 0; } *************** expand_increment (exp, post, ignore) *** 9401,9405 **** rtx temp, result; ! op0 = change_address (op0, VOIDmode, addr); temp = force_reg (GET_MODE (op0), op0); if (! (*insn_data[icode].operand[2].predicate) (op1, mode)) --- 9396,9400 ---- rtx temp, result; ! op0 = replace_equiv_address (op0, addr); temp = force_reg (GET_MODE (op0), op0); if (! (*insn_data[icode].operand[2].predicate) (op1, mode)) *** expr.h 2001/07/02 19:47:38 1.81 --- expr.h 2001/07/03 20:57:27 *************** extern rtx change_address PARAMS ((rtx, *** 1155,1158 **** --- 1155,1164 ---- extern rtx adjust_address PARAMS ((rtx, enum machine_mode, HOST_WIDE_INT)); + /* Return a memory reference like MEMREF, but with its address changed to + ADDR. The caller is asserting that the actual piece of memory pointed + to is the same, just the form of the address is being changed, such as + by putting something into a register. */ + extern rtx replace_equiv_address PARAMS ((rtx, rtx)); + /* Return a memory reference like MEMREF, but which is known to have a valid address. */ *** function.c 2001/07/02 19:47:39 1.279 --- function.c 2001/07/03 20:57:41 *************** fixup_stack_1 (x, insn) *** 2618,2622 **** end_sequence (); emit_insn_before (seq, insn); ! return change_address (x, VOIDmode, temp); } return x; --- 2618,2622 ---- end_sequence (); emit_insn_before (seq, insn); ! return replace_equiv_address (x, temp); } return x; *** regmove.c 2001/06/19 14:34:23 1.105 --- regmove.c 2001/07/03 20:57:48 *************** combine_stack_adjustments_for_block (bb) *** 2459,2464 **** && memory_address_p (GET_MODE (dest), stack_pointer_rtx) && validate_change (insn, &SET_DEST (set), ! change_address (dest, VOIDmode, ! stack_pointer_rtx), 0)) { if (last_sp_set == bb->head) --- 2459,2465 ---- && memory_address_p (GET_MODE (dest), stack_pointer_rtx) && validate_change (insn, &SET_DEST (set), ! replace_equiv_address (dest, ! stack_pointer_rtx), ! 0)) { if (last_sp_set == bb->head) *** config/alpha/alpha.c 2001/07/02 19:47:40 1.166 --- config/alpha/alpha.c 2001/07/03 20:58:01 *************** alpha_expand_block_move (operands) *** 2931,2936 **** /* No appropriate mode; fall back on memory. */ ! orig_src = change_address (orig_src, GET_MODE (orig_src), ! copy_addr_to_reg (XEXP (orig_src, 0))); src_align = GET_MODE_BITSIZE (GET_MODE (tmp)); } --- 2931,2936 ---- /* No appropriate mode; fall back on memory. */ ! orig_src = replace_equiv_address (orig_src, ! copy_addr_to_reg (XEXP (orig_src, 0))); src_align = GET_MODE_BITSIZE (GET_MODE (tmp)); } *************** alpha_expand_block_move (operands) *** 2962,2968 **** for (i = 0; i < words; ++i) emit_move_insn (data_regs[nregs + i], ! change_address (orig_src, SImode, ! plus_constant (XEXP (orig_src, 0), ! ofs + i * 4))); nregs += words; --- 2962,2966 ---- for (i = 0; i < words; ++i) emit_move_insn (data_regs[nregs + i], ! adjust_address (orig_src, SImode, ofs + i * 4)); nregs += words; *************** alpha_expand_block_move (operands) *** 3077,3082 **** /* No appropriate mode; fall back on memory. We can speed things up by recognizing extra alignment information. */ ! orig_dst = change_address (orig_dst, GET_MODE (orig_dst), ! copy_addr_to_reg (XEXP (orig_dst, 0))); dst_align = GET_MODE_BITSIZE (GET_MODE (tmp)); } --- 3075,3080 ---- /* No appropriate mode; fall back on memory. We can speed things up by recognizing extra alignment information. */ ! orig_dst = replace_equiv_address (orig_dst, ! copy_addr_to_reg (XEXP (orig_dst, 0))); dst_align = GET_MODE_BITSIZE (GET_MODE (tmp)); } *************** alpha_expand_block_clear (operands) *** 3230,3235 **** /* No appropriate mode; fall back on memory. */ ! orig_dst = change_address (orig_dst, GET_MODE (orig_dst), ! copy_addr_to_reg (tmp)); align = GET_MODE_BITSIZE (GET_MODE (XEXP (tmp, 0))); } --- 3228,3232 ---- /* No appropriate mode; fall back on memory. */ ! orig_dst = replace_equiv_address (orig_dst, copy_addr_to_reg (tmp)); align = GET_MODE_BITSIZE (GET_MODE (XEXP (tmp, 0))); } *** config/arm/arm.md 2001/07/02 19:47:40 1.82 --- config/arm/arm.md 2001/07/03 20:58:18 *************** *** 4283,4295 **** " { ! rtx addr = XEXP (operands[1], 0); enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! addr = force_reg (SImode, addr); ! operands[4] = change_address (operands[1], QImode, ! plus_constant (addr, 1)); operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); --- 4283,4295 ---- " { ! rtx op1 = operands[1]; ! rtx addr = XEXP (op1, 0); enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! op1 = replace_equiv_address (operands[1], force_reg (SImode, addr)); ! operands[4] = adjust_address (op1, QImode, 1); operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); *************** *** 4307,4319 **** " { ! rtx addr = XEXP (operands[1], 0); enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! addr = force_reg (SImode, addr); ! operands[4] = change_address (operands[1], QImode, ! plus_constant (addr, 1)); operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); --- 4307,4319 ---- " { ! rtx op1 = operands[1]; ! rtx addr = XEXP (op1, 0); enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! op1 = replace_equiv_address (op1, force_reg (SImode, addr)); ! operands[4] = adjust_address (op1, QImode, 1); operands[1] = adjust_address (operands[1], QImode, 0); operands[3] = gen_lowpart (QImode, operands[0]); *************** *** 4333,4341 **** HOST_WIDE_INT value = INTVAL (operands[1]); rtx addr = XEXP (operands[0], 0); enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! addr = force_reg (SImode, addr); operands[1] = gen_reg_rtx (SImode); --- 4333,4342 ---- HOST_WIDE_INT value = INTVAL (operands[1]); rtx addr = XEXP (operands[0], 0); + rtx op0 = operands[0]; enum rtx_code code = GET_CODE (addr); if ((code == PLUS && GET_CODE (XEXP (addr, 1)) != CONST_INT) || code == MINUS) ! op0 = replace_equiv_address (op0, force_reg (SImode, addr)); operands[1] = gen_reg_rtx (SImode); *************** *** 4363,4368 **** } ! operands[3] = change_address (operands[0], QImode, ! plus_constant (addr, 1)); operands[0] = adjust_address (operands[0], QImode, 0); }" --- 4364,4368 ---- } ! operands[3] = adjust_address (op0, QImode, 1); operands[0] = adjust_address (operands[0], QImode, 0); }" *************** *** 4551,4566 **** && !memory_address_p (GET_MODE (operands[0]), XEXP (operands[0], 0))) ! { ! rtx temp = copy_to_reg (XEXP (operands[0], 0)); ! operands[0] = change_address (operands[0], VOIDmode, temp); ! } if (GET_CODE (operands[1]) == MEM && !memory_address_p (GET_MODE (operands[1]), XEXP (operands[1], 0))) ! { ! rtx temp = copy_to_reg (XEXP (operands[1], 0)); ! operands[1] = change_address (operands[1], VOIDmode, temp); ! } } /* Handle loading a large integer during reload */ --- 4551,4564 ---- && !memory_address_p (GET_MODE (operands[0]), XEXP (operands[0], 0))) ! operands[0] ! = replace_equiv_address (operands[0], ! copy_to_reg (XEXP (operands[0], 0))); if (GET_CODE (operands[1]) == MEM && !memory_address_p (GET_MODE (operands[1]), XEXP (operands[1], 0))) ! operands[1] ! = replace_equiv_address (operands[1], ! copy_to_reg (XEXP (operands[1], 0))); } /* Handle loading a large integer during reload */ *************** *** 4851,4865 **** && !memory_address_p (GET_MODE (operands[0]), XEXP (operands[0], 0))) ! { ! rtx temp = copy_to_reg (XEXP (operands[0], 0)); ! operands[0] = change_address (operands[0], VOIDmode, temp); ! } if (GET_CODE (operands[1]) == MEM && !memory_address_p (GET_MODE (operands[1]), XEXP (operands[1], 0))) ! { ! rtx temp = copy_to_reg (XEXP (operands[1], 0)); ! operands[1] = change_address (operands[1], VOIDmode, temp); ! } } /* Handle loading a large integer during reload */ --- 4849,4861 ---- && !memory_address_p (GET_MODE (operands[0]), XEXP (operands[0], 0))) ! operands[0] ! = replace_equiv_address (operands[0], ! copy_to_reg (XEXP (operands[0], 0))); if (GET_CODE (operands[1]) == MEM && !memory_address_p (GET_MODE (operands[1]), XEXP (operands[1], 0))) ! operands[1] ! = replace_equiv_address (operands[1], ! copy_to_reg (XEXP (operands[1], 0))); } /* Handle loading a large integer during reload */ *** config/clipper/clipper.md 2001/07/03 19:44:08 1.6 --- config/clipper/clipper.md 2001/07/03 20:58:21 *************** *** 532,537 **** operands[7] = addr1; ! operands[0] = change_address (operands[0], VOIDmode, addr0); ! operands[1] = change_address (operands[1], VOIDmode, addr1); if (GET_CODE (operands[2]) != CONST_INT) --- 532,537 ---- operands[7] = addr1; ! operands[0] = replace_equiv_address (operands[0], addr0); ! operands[1] = replace_equiv_address (operands[1], addr1); if (GET_CODE (operands[2]) != CONST_INT) *** config/dsp16xx/dsp16xx.md 2001/07/02 19:47:41 1.10 --- config/dsp16xx/dsp16xx.md 2001/07/03 20:58:25 *************** *** 1132,1137 **** operands[6] = addr1; ! operands[0] = change_address (operands[0], VOIDmode, addr0); ! operands[1] = change_address (operands[1], VOIDmode, addr1); }") --- 1132,1137 ---- operands[6] = addr1; ! operands[0] = replace_equiv_address (operands[0], VOIDmode, addr0); ! operands[1] = replace_equiv_address (operands[1], VOIDmode, addr1); }") *** config/fr30/fr30.c 2001/07/02 19:47:41 1.11 --- config/fr30/fr30.c 2001/07/03 20:58:26 *************** fr30_move_double (operands) *** 1008,1012 **** { emit_insn (gen_rtx_SET (VOIDmode, dest1, ! change_address (src, SImode, addr))); emit_insn (gen_rtx_SET (SImode, dest0, gen_rtx_REG (SImode, REGNO (addr)))); --- 1008,1012 ---- { emit_insn (gen_rtx_SET (VOIDmode, dest1, ! adjust_address (src, SImode, 0))); emit_insn (gen_rtx_SET (SImode, dest0, gen_rtx_REG (SImode, REGNO (addr)))); *************** fr30_move_double (operands) *** 1022,1026 **** { emit_insn (gen_rtx_SET (VOIDmode, dest0, ! change_address (src, SImode, addr))); emit_insn (gen_rtx_SET (SImode, dest1, gen_rtx_REG (SImode, REGNO (addr)))); --- 1022,1026 ---- { emit_insn (gen_rtx_SET (VOIDmode, dest0, ! adjust_address (src, SImode, 0))); emit_insn (gen_rtx_SET (SImode, dest1, gen_rtx_REG (SImode, REGNO (addr)))); *************** fr30_move_double (operands) *** 1059,1064 **** src1 = operand_subword (src, 1, TRUE, mode); ! emit_insn (gen_rtx_SET (VOIDmode, ! change_address (dest, SImode, addr), src0)); --- 1059,1063 ---- src1 = operand_subword (src, 1, TRUE, mode); ! emit_insn (gen_rtx_SET (VOIDmode, adjust_address (dest, SImode, 0), src0)); *** config/i370/i370.md 2001/05/27 10:35:09 1.17 --- config/i370/i370.md 2001/07/03 20:58:33 *************** check_label_emit (); *** 1381,1399 **** " { - /* - XXX bogus, i think, unless change_address has a side effet we need - rtx op0; - - op0 = XEXP (operands[0], 0); - if (GET_CODE (op0) == REG - || (GET_CODE (op0) == PLUS && GET_CODE (XEXP (op0, 0)) == REG - && GET_CODE (XEXP (op0, 1)) == CONST_INT - && (unsigned) INTVAL (XEXP (op0, 1)) < 4096)) - op0 = operands[0]; - else - op0 = change_address (operands[0], VOIDmode, - copy_to_mode_reg (SImode, op0)); - - */ { /* implementation suggested by Richard Henderson */ --- 1381,1384 ---- *************** check_label_emit (); *** 1443,1448 **** op0 = operands[0]; else ! op0 = change_address (operands[0], VOIDmode, ! copy_to_mode_reg (SImode, op0)); op1 = XEXP (operands[1], 0); --- 1428,1432 ---- op0 = operands[0]; else ! op0 = replace_equiv_address (operands[0], copy_to_mode_reg (SImode, op0)); op1 = XEXP (operands[1], 0); *************** check_label_emit (); *** 1453,1458 **** op1 = operands[1]; else ! op1 = change_address (operands[1], VOIDmode, ! copy_to_mode_reg (SImode, op1)); if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 256) --- 1437,1441 ---- op1 = operands[1]; else ! op1 = replace_equiv_address (operands[1], copy_to_mode_reg (SImode, op1)); if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 256) *** config/i860/i860.md 2001/06/30 17:23:53 1.10 --- config/i860/i860.md 2001/07/03 20:58:37 *************** *** 1023,1028 **** operands[8] = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); ! operands[0] = change_address (operands[0], VOIDmode, operands[7]); ! operands[1] = change_address (operands[1], VOIDmode, operands[8]); }") --- 1023,1028 ---- operands[8] = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); ! operands[0] = replace_equiv_address (operands[0], operands[7]); ! operands[1] = replace_equiv_address (operands[1], operands[8]); }") *************** fmul.ss %1,%0,%4\;fmul.ss %3,%4,%0\"; *** 2128,2133 **** if (! call_insn_operand (operands[0], QImode)) operands[0] ! = change_address (operands[0], VOIDmode, ! copy_to_mode_reg (Pmode, XEXP (operands[0], 0))); if (INTVAL (operands[1]) > 0) { --- 2128,2134 ---- if (! call_insn_operand (operands[0], QImode)) operands[0] ! = replace_equiv_address (operands[0], ! copy_to_mode_reg (Pmode, ! XEXP (operands[0], 0))); if (INTVAL (operands[1]) > 0) { *************** fmul.ss %1,%0,%4\;fmul.ss %3,%4,%0\"; *** 2196,2201 **** if (! call_insn_operand (operands[1], QImode)) operands[1] ! = change_address (operands[1], VOIDmode, ! copy_to_mode_reg (Pmode, XEXP (operands[1], 0))); if (INTVAL (operands[2]) > 0) { --- 2197,2203 ---- if (! call_insn_operand (operands[1], QImode)) operands[1] ! = replace_equiv_address (operands[1], ! copy_to_mode_reg (Pmode, ! XEXP (operands[1], 0))); if (INTVAL (operands[2]) > 0) { *** config/i960/i960.md 2001/07/03 19:44:11 1.20 --- config/i960/i960.md 2001/07/03 20:58:44 *************** *** 1005,1009 **** int regno; int count; ! rtx from; if (GET_CODE (operands[0]) != MEM --- 1005,1009 ---- int regno; int count; ! int offset = 0; if (GET_CODE (operands[0]) != MEM *************** *** 1017,1044 **** regno = REGNO (operands[1]); - from = memory_address (SImode, XEXP (operands[0], 0)); while (count >= 4 && ((regno & 3) == 0)) { ! emit_move_insn (change_address (operands[0], TImode, from), gen_rtx_REG (TImode, regno)); count -= 4; regno += 4; ! from = memory_address (TImode, plus_constant (from, 16)); } while (count >= 2 && ((regno & 1) == 0)) { ! emit_move_insn (change_address (operands[0], DImode, from), gen_rtx_REG (DImode, regno)); count -= 2; regno += 2; ! from = memory_address (DImode, plus_constant (from, 8)); } while (count > 0) { ! emit_move_insn (change_address (operands[0], SImode, from), gen_rtx_REG (SImode, regno)); count -= 1; regno += 1; ! from = memory_address (SImode, plus_constant (from, 4)); } DONE; --- 1017,1043 ---- regno = REGNO (operands[1]); while (count >= 4 && ((regno & 3) == 0)) { ! emit_move_insn (adjust_address (operands[0], TImode, offset), gen_rtx_REG (TImode, regno)); count -= 4; regno += 4; ! offset += 16; } while (count >= 2 && ((regno & 1) == 0)) { ! emit_move_insn (adjust_address (operands[0], DImode, offset), gen_rtx_REG (DImode, regno)); count -= 2; regno += 2; ! offset += 8; } while (count > 0) { ! emit_move_insn (adjust_address (operands[0], SImode, offset), gen_rtx_REG (SImode, regno)); count -= 1; regno += 1; ! offset += 4; } DONE; *** config/mips/mips.c 2001/07/03 19:44:14 1.120 --- config/mips/mips.c 2001/07/03 20:59:04 *************** block_move_loop (dest_reg, src_reg, byte *** 3249,3257 **** unsigned int bytes; /* # bytes to move */ int align; /* alignment */ ! rtx orig_dest; /* original dest for change_address */ rtx orig_src; /* original source for making a reg note */ { ! rtx dest_mem = change_address (orig_dest, BLKmode, dest_reg); ! rtx src_mem = change_address (orig_src, BLKmode, src_reg); rtx align_rtx = GEN_INT (align); rtx label; --- 3249,3257 ---- unsigned int bytes; /* # bytes to move */ int align; /* alignment */ ! rtx orig_dest; /* original dest */ rtx orig_src; /* original source for making a reg note */ { ! rtx dest_mem = replace_equiv_address (orig_dest, dest_reg); ! rtx src_mem = replace_equiv_address (orig_src, src_reg); rtx align_rtx = GEN_INT (align); rtx label; *************** expand_block_move (operands) *** 3384,3391 **** else if (constp && bytes <= (unsigned)2 * MAX_MOVE_BYTES) ! emit_insn (gen_movstrsi_internal (change_address (orig_dest, BLKmode, ! dest_reg), ! change_address (orig_src, BLKmode, ! src_reg), bytes_rtx, align_rtx)); --- 3384,3391 ---- else if (constp && bytes <= (unsigned)2 * MAX_MOVE_BYTES) ! emit_insn (gen_movstrsi_internal (replace_equiv_address (orig_dest, ! dest_reg), ! replace_equiv_address (orig_src, ! src_reg), bytes_rtx, align_rtx)); *************** expand_block_move (operands) *** 3434,3441 **** /* Bytes at the end of the loop. */ if (leftover) ! emit_insn (gen_movstrsi_internal (change_address (orig_dest, BLKmode, ! dest_reg), ! change_address (orig_src, BLKmode, ! src_reg), GEN_INT (leftover), GEN_INT (align))); --- 3434,3441 ---- /* Bytes at the end of the loop. */ if (leftover) ! emit_insn (gen_movstrsi_internal (replace_equiv_address (orig_dest, ! dest_reg), ! replace_equiv_address (orig_src, ! src_reg), GEN_INT (leftover), GEN_INT (align))); *** config/mips/mips.md 2001/07/03 19:44:15 1.97 --- config/mips/mips.md 2001/07/03 20:59:25 *************** move\\t%0,%z4\\n\\ *** 5067,5071 **** rtx memword, offword, hi_word, lo_word; rtx addr = find_replacement (&XEXP (operands[1], 0)); ! rtx op1 = change_address (operands[1], VOIDmode, addr); scratch = gen_rtx_REG (SImode, REGNO (scratch)); --- 5067,5071 ---- rtx memword, offword, hi_word, lo_word; rtx addr = find_replacement (&XEXP (operands[1], 0)); ! rtx op1 = replace_equiv_address (operands[1], addr); scratch = gen_rtx_REG (SImode, REGNO (scratch)); *************** move\\t%0,%z4\\n\\ *** 5147,5151 **** rtx scratch, memword, offword, hi_word, lo_word; rtx addr = find_replacement (&XEXP (operands[0], 0)); ! rtx op0 = change_address (operands[0], VOIDmode, addr); scratch = gen_rtx_REG (SImode, REGNO (operands[2])); --- 5147,5151 ---- rtx scratch, memword, offword, hi_word, lo_word; rtx addr = find_replacement (&XEXP (operands[0], 0)); ! rtx op0 = replace_equiv_address (operands[0], addr); scratch = gen_rtx_REG (SImode, REGNO (operands[2])); *** config/pa/pa.md 2001/05/07 19:22:28 1.90 --- config/pa/pa.md 2001/07/03 20:59:38 *************** *** 2815,2823 **** /* Fall through means we're going to use our block move pattern. */ operands[0] ! = change_address (operands[0], VOIDmode, ! copy_to_mode_reg (SImode, XEXP (operands[0], 0))); operands[1] ! = change_address (operands[1], VOIDmode, ! copy_to_mode_reg (SImode, XEXP (operands[1], 0))); operands[4] = gen_reg_rtx (SImode); operands[5] = gen_reg_rtx (SImode); --- 2815,2823 ---- /* Fall through means we're going to use our block move pattern. */ operands[0] ! = replace_equiv_address (operands[0], ! copy_to_mode_reg (SImode, XEXP (operands[0], 0))); operands[1] ! = replace_equiv_address (operands[1], ! copy_to_mode_reg (SImode, XEXP (operands[1], 0))); operands[4] = gen_reg_rtx (SImode); operands[5] = gen_reg_rtx (SImode); *** config/pdp11/pdp11.md 2001/07/03 19:44:18 1.15 --- config/pdp11/pdp11.md 2001/07/03 20:59:40 *************** *** 697,705 **** { operands[0] ! = change_address (operands[0], VOIDmode, ! copy_to_mode_reg (Pmode, XEXP (operands[0], 0))); operands[1] ! = change_address (operands[1], VOIDmode, ! copy_to_mode_reg (Pmode, XEXP (operands[1], 0))); operands[5] = XEXP (operands[0], 0); --- 697,705 ---- { operands[0] ! = replace_equiv_address (operands[0], ! copy_to_mode_reg (Pmode, XEXP (operands[0], 0))); operands[1] ! = replace_equiv_address (operands[1], ! copy_to_mode_reg (Pmode, XEXP (operands[1], 0))); operands[5] = XEXP (operands[0], 0); *** config/rs6000/rs6000.c 2001/07/03 01:58:35 1.188 --- config/rs6000/rs6000.c 2001/07/03 20:59:55 *************** rs6000_emit_move (dest, source, mode) *** 1867,1878 **** && GET_CODE (XEXP (operands[0], 0)) != REG && ! reload_in_progress) ! operands[0] = change_address (operands[0], TImode, ! copy_addr_to_reg (XEXP (operands[0], 0))); if (GET_CODE (operands[1]) == MEM && GET_CODE (XEXP (operands[1], 0)) != REG && ! reload_in_progress) ! operands[1] = change_address (operands[1], TImode, ! copy_addr_to_reg (XEXP (operands[1], 0))); break; --- 1867,1880 ---- && GET_CODE (XEXP (operands[0], 0)) != REG && ! reload_in_progress) ! operands[0] ! = replace_equiv_address (operands[0], ! copy_addr_to_reg (XEXP (operands[0], 0))); if (GET_CODE (operands[1]) == MEM && GET_CODE (XEXP (operands[1], 0)) != REG && ! reload_in_progress) ! operands[1] ! = replace_equiv_address (operands[1], ! copy_addr_to_reg (XEXP (operands[1], 0))); break; *** config/rs6000/rs6000.md 2001/05/26 01:08:13 1.119 --- config/rs6000/rs6000.md 2001/07/03 21:00:22 *************** operands[2] = GEN_INT (INTVAL (operands[ *** 8258,8262 **** int regno; int count; ! rtx from; int i; --- 8258,8262 ---- int regno; int count; ! rtx op1; int i; *************** operands[2] = GEN_INT (INTVAL (operands[ *** 8276,8286 **** operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); ! from = force_reg (SImode, XEXP (operands[1], 0)); for (i = 0; i < count; i++) XVECEXP (operands[3], 0, i) = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, regno + i), ! change_address (operands[1], SImode, ! plus_constant (from, i * 4))); }") --- 8276,8286 ---- operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); ! op1 = replace_equiv_address (operands[1], ! force_reg (SImode, XEXP (operands[1], 0))); for (i = 0; i < count; i++) XVECEXP (operands[3], 0, i) = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, regno + i), ! adjust_address (op1, SImode, i * 4)); }") *************** operands[2] = GEN_INT (INTVAL (operands[ *** 8355,8358 **** --- 8355,8359 ---- int count; rtx to; + rtx op0; int i; *************** operands[2] = GEN_INT (INTVAL (operands[ *** 8373,8380 **** operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count + 1)); to = force_reg (SImode, XEXP (operands[0], 0)); XVECEXP (operands[3], 0, 0) ! = gen_rtx_SET (VOIDmode, change_address (operands[0], SImode, to), ! operands[1]); XVECEXP (operands[3], 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (SImode)); --- 8374,8381 ---- operands[3] = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count + 1)); to = force_reg (SImode, XEXP (operands[0], 0)); + op0 = replace_equiv_address (operands[0], to); XVECEXP (operands[3], 0, 0) ! = gen_rtx_SET (VOIDmode, op0, operands[1]); XVECEXP (operands[3], 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (SImode)); *************** operands[2] = GEN_INT (INTVAL (operands[ *** 8383,8388 **** XVECEXP (operands[3], 0, i + 1) = gen_rtx_SET (VOIDmode, ! change_address (operands[0], SImode, ! plus_constant (to, i * 4)), gen_rtx_REG (SImode, regno + i)); }") --- 8384,8388 ---- XVECEXP (operands[3], 0, i + 1) = gen_rtx_SET (VOIDmode, ! adjust_address (op0, SImode, i * 4), gen_rtx_REG (SImode, regno + i)); }") *** config/sh/sh.md 2001/06/21 19:37:35 1.85 --- config/sh/sh.md 2001/07/03 21:00:33 *************** *** 5029,5033 **** addr_target = copy_addr_to_reg (plus_constant (orig_address, size - 1)); ! operands[0] = change_address (operands[0], QImode, addr_target); emit_insn (gen_movqi (operands[0], gen_rtx_SUBREG (QImode, shift_reg, 0))); --- 5029,5033 ---- addr_target = copy_addr_to_reg (plus_constant (orig_address, size - 1)); ! operands[0] = replace_equiv_address (operands[0], addr_target); emit_insn (gen_movqi (operands[0], gen_rtx_SUBREG (QImode, shift_reg, 0))); From gcc-patches-return-38042-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:13:24 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 14208 invoked by alias); 4 Jul 2001 18:13:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14165 invoked from network); 4 Jul 2001 18:13:22 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:13:22 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA22574; Wed, 4 Jul 01 14:17:11 EDT Date: Wed, 4 Jul 01 14:17:11 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041817.AA22574@vlsi1.ultra.nyu.edu> To: oldham@codesourcery.com Subject: Re: First patch in series to add more attribute to MEMs Cc: gcc-patches@gcc.gnu.org Will you please fix the known problem with the third patch first? The third patch is known to have at least one bug. It may have others, currently undiscovered. Checking in a fourth round of patches will obscure from where the problems are coming. Your comment above indicates we are already confused which patch is causing problems. The latest patch makes it easier to fix things, which is why I wanted to get it in first. From gcc-patches-return-38043-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:16:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 15749 invoked by alias); 4 Jul 2001 18:16:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 15652 invoked from network); 4 Jul 2001 18:16:13 -0000 Received: from unknown (HELO oz.codesourcery.com) (64.163.213.130) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:16:13 -0000 Received: (from oldham@localhost) by oz.codesourcery.com (8.9.3/8.9.3) id LAA20761; Wed, 4 Jul 2001 11:15:18 -0700 Date: Wed, 4 Jul 2001 11:15:17 -0700 From: Jeffrey Oldham To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: Jeffrey Oldham Subject: 3.1 Patch: Remove std::construct and std::destroy from ext Message-ID: <20010704111517.A16243@codesourcery.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="KsGdsel6WgEHnImy" Content-Disposition: inline User-Agent: Mutt/1.2.5i Organization: CodeSourcery LLC --KsGdsel6WgEHnImy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Recently Stephen M. Webb improved the libstdc++ code by replacing the non-standard construct() and destroy() functions with internal library functions. This patch applies said changes to the libstdc++-v3/include/ext/ directory, per Mr. Webb's wishes. 2001-07-04 Jeffrey Oldham * include/ext/ropeimpl.h (_Rope_RopeRep::_M_free_c_string): Replace destroy by _Destroy. (_Rope_RopeRep::_S_free_string): Likewise. (rope::c_str()): Likewise. * include/ext/slist (_Slist_base::_M_erase_after>): Likewise. (_Slist_base::_M_erase_after): Likewise. (slist::_M_create_node): Replace construct by _Construct. (slist::pop_front): Replace destroy by _Destroy. * include/ext/stl_hashtable.h (hashtable::_M_new_node): Replace construct by _Construct. (hashtable::_M_delete_node): Replace destroy by _Destroy. * include/ext/stl_rope.h (rope::rope): Replace construct by _Construct. (rope::copy): Replace destroy by _Destroy. Applied to head (3.1) Tested on i686-pc-linux-gnu 3.1 bootstrap and regression tests Approved by Mark Mitchell (mark@codesourcery.com) Thanks, Jeffrey D. Oldham oldham@codesourcery.com --KsGdsel6WgEHnImy Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="construct_destroy.patch" Index: ropeimpl.h =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/ropeimpl.h,v retrieving revision 1.5 diff -c -p -r1.5 ropeimpl.h *** ropeimpl.h 2001/06/27 17:09:53 1.5 --- ropeimpl.h 2001/07/03 23:48:59 *************** inline void _Rope_RopeRep<_CharT,_Alloc> *** 317,323 **** _CharT* __cstr = _M_c_string; if (0 != __cstr) { size_t __size = _M_size + 1; ! destroy(__cstr, __cstr + __size); _Data_deallocate(__cstr, __size); } } --- 317,323 ---- _CharT* __cstr = _M_c_string; if (0 != __cstr) { size_t __size = _M_size + 1; ! _Destroy(__cstr, __cstr + __size); _Data_deallocate(__cstr, __size); } } *************** template *** 329,335 **** allocator_type __a) { if (!_S_is_basic_char_type((_CharT*)0)) { ! destroy(__s, __s + __n); } // This has to be a static member, so this gets a bit messy __a.deallocate( --- 329,335 ---- allocator_type __a) { if (!_S_is_basic_char_type((_CharT*)0)) { ! _Destroy(__s, __s + __n); } // This has to be a static member, so this gets a bit messy __a.deallocate( *************** const _CharT* rope<_CharT,_Alloc>::c_str *** 1453,1459 **** // It must have been added in the interim. Hence it had to have been // separately allocated. Deallocate the old copy, since we just // replaced it. ! destroy(__old_c_string, __old_c_string + __s + 1); _Data_deallocate(__old_c_string, __s + 1); } # endif --- 1453,1459 ---- // It must have been added in the interim. Hence it had to have been // separately allocated. Deallocate the old copy, since we just // replaced it. ! _Destroy(__old_c_string, __old_c_string + __s + 1); _Data_deallocate(__old_c_string, __s + 1); } # endif Index: slist =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/slist,v retrieving revision 1.8 diff -c -p -r1.8 slist *** slist 2001/06/27 17:09:53 1.8 --- slist 2001/07/03 23:49:00 *************** protected: *** 265,271 **** _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next); _Slist_node_base* __next_next = __next->_M_next; __pos->_M_next = __next_next; ! destroy(&__next->_M_data); _M_put_node(__next); return __next_next; } --- 265,271 ---- _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next); _Slist_node_base* __next_next = __next->_M_next; __pos->_M_next = __next_next; ! _Destroy(&__next->_M_data); _M_put_node(__next); return __next_next; } *************** _Slist_base<_Tp,_Alloc>::_M_erase_after( *** 280,286 **** while (__cur != __last_node) { _Slist_node<_Tp>* __tmp = __cur; __cur = (_Slist_node<_Tp>*) __cur->_M_next; ! destroy(&__tmp->_M_data); _M_put_node(__tmp); } __before_first->_M_next = __last_node; --- 280,286 ---- while (__cur != __last_node) { _Slist_node<_Tp>* __tmp = __cur; __cur = (_Slist_node<_Tp>*) __cur->_M_next; ! _Destroy(&__tmp->_M_data); _M_put_node(__tmp); } __before_first->_M_next = __last_node; *************** private: *** 318,324 **** _Node* _M_create_node(const value_type& __x) { _Node* __node = this->_M_get_node(); __STL_TRY { ! construct(&__node->_M_data, __x); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); --- 318,324 ---- _Node* _M_create_node(const value_type& __x) { _Node* __node = this->_M_get_node(); __STL_TRY { ! _Construct(&__node->_M_data, __x); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); *************** private: *** 328,334 **** _Node* _M_create_node() { _Node* __node = this->_M_get_node(); __STL_TRY { ! construct(&__node->_M_data); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); --- 328,334 ---- _Node* _M_create_node() { _Node* __node = this->_M_get_node(); __STL_TRY { ! _Construct(&__node->_M_data); __node->_M_next = 0; } __STL_UNWIND(this->_M_put_node(__node)); *************** public: *** 425,431 **** void pop_front() { _Node* __node = (_Node*) this->_M_head._M_next; this->_M_head._M_next = __node->_M_next; ! destroy(&__node->_M_data); this->_M_put_node(__node); } --- 425,431 ---- void pop_front() { _Node* __node = (_Node*) this->_M_head._M_next; this->_M_head._M_next = __node->_M_next; ! _Destroy(&__node->_M_data); this->_M_put_node(__node); } Index: stl_hashtable.h =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/stl_hashtable.h,v retrieving revision 1.7 diff -c -p -r1.7 stl_hashtable.h *** stl_hashtable.h 2001/06/27 17:09:53 1.7 --- stl_hashtable.h 2001/07/03 23:49:00 *************** private: *** 517,523 **** _Node* __n = _M_get_node(); __n->_M_next = 0; __STL_TRY { ! construct(&__n->_M_val, __obj); return __n; } __STL_UNWIND(_M_put_node(__n)); --- 517,523 ---- _Node* __n = _M_get_node(); __n->_M_next = 0; __STL_TRY { ! _Construct(&__n->_M_val, __obj); return __n; } __STL_UNWIND(_M_put_node(__n)); *************** private: *** 525,531 **** void _M_delete_node(_Node* __n) { ! destroy(&__n->_M_val); _M_put_node(__n); } --- 525,531 ---- void _M_delete_node(_Node* __n) { ! _Destroy(&__n->_M_val); _M_put_node(__n); } Index: stl_rope.h =================================================================== RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/stl_rope.h,v retrieving revision 1.5 diff -c -p -r1.5 stl_rope.h *** stl_rope.h 2001/06/27 17:09:53 1.5 --- stl_rope.h 2001/07/03 23:49:01 *************** class rope : public _Rope_base<_CharT,_A *** 1540,1546 **** { _CharT* __buf = _Data_allocate(_S_rounded_up_size(1)); ! construct(__buf, __c); __STL_TRY { _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a); } --- 1540,1546 ---- { _CharT* __buf = _Data_allocate(_S_rounded_up_size(1)); ! _Construct(__buf, __c); __STL_TRY { _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a); } *************** class rope : public _Rope_base<_CharT,_A *** 1642,1648 **** } void copy(_CharT* __buffer) const { ! destroy(__buffer, __buffer + size()); _S_flatten(_M_tree_ptr, __buffer); } --- 1642,1648 ---- } void copy(_CharT* __buffer) const { ! _Destroy(__buffer, __buffer + size()); _S_flatten(_M_tree_ptr, __buffer); } *************** class rope : public _Rope_base<_CharT,_A *** 1656,1662 **** size_t __size = size(); size_t __len = (__pos + __n > __size? __size - __pos : __n); ! destroy(__buffer, __buffer + __len); _S_flatten(_M_tree_ptr, __pos, __len, __buffer); return __len; } --- 1656,1662 ---- size_t __size = size(); size_t __len = (__pos + __n > __size? __size - __pos : __n); ! _Destroy(__buffer, __buffer + __len); _S_flatten(_M_tree_ptr, __pos, __len, __buffer); return __len; } --KsGdsel6WgEHnImy-- From gcc-patches-return-38044-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:21:02 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19933 invoked by alias); 4 Jul 2001 18:21:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19863 invoked from network); 4 Jul 2001 18:20:59 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:20:59 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA22666; Wed, 4 Jul 01 14:25:12 EDT Date: Wed, 4 Jul 01 14:25:12 EDT From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10107041825.AA22666@vlsi1.ultra.nyu.edu> To: gcc-patches@gcc.gnu.org Subject: Fix to MIPS F77 problem This fixes the reported problem. Not otherwise tested, but safe since it only removes a call to abort. Wed Jul 4 13:40:02 2001 Richard Kenner * emit-rtl.c (change_address): Don't abort if invalid address while reload is in progress. *** emit-rtl.c 2001/07/04 17:43:13 1.185 --- emit-rtl.c 2001/07/04 18:17:54 *************** change_address (memref, mode, addr) *** 1585,1591 **** addr = XEXP (memref, 0); ! /* If reload is in progress or has completed, ADDR must be valid. ! Otherwise, we can call memory_address to make it valid. */ ! if (reload_completed || reload_in_progress) { if (! memory_address_p (mode, addr)) --- 1585,1595 ---- addr = XEXP (memref, 0); ! /* If reload is in progress, don't check for validity of the address since we ! assume the caller knows what they are doing. If reload has completed, the ! address must be valid. Otherwise, we call memory_address to make it ! valid. */ ! if (reload_in_progress) ! ; ! else if (reload_completed) { if (! memory_address_p (mode, addr)) From gcc-patches-return-38045-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:29:18 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25478 invoked by alias); 4 Jul 2001 18:29:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25432 invoked from network); 4 Jul 2001 18:29:12 -0000 Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:29:12 -0000 Received: from student.cusu.cam.ac.uk ([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail) by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1) id 15HrOg-0001PN-00; Wed, 04 Jul 2001 19:29:10 +0100 Received: from jsm28 (helo=localhost) by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian)) id 15HrOf-0008Gq-00; Wed, 04 Jul 2001 19:29:09 +0100 Date: Wed, 4 Jul 2001 19:29:06 +0100 (BST) From: "Joseph S. Myers" X-X-Sender: To: Rainer Orth cc: , Mike Stump , Jeff Law Subject: Re: 3.0.1 PATCH: Fixes for install.texi host/target section In-Reply-To: <15171.23609.153871.389963@xayide.TechFak.Uni-Bielefeld.DE> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 4 Jul 2001, Rainer Orth wrote: > This seems wrong, since it suggests that we *provide* binary distributions, > while we should make it perfectly clear that we don't. When GNAT is in CVS, we might want to consider providing the binary distributions presently on cs.nyu.edu on gcc.gnu.org instead or as well. > A comment about the host/target section: at the moment, we list all target > specific information in the body of this section, only indicating in `Older > Systems' that some configurations may not work right now. Perhaps we > should try to find out which targets are known to build/being maintained as > of GCC 3.0 and move the others to a separate section, providing historic > information for people who want to try revive any of those ports? Point to buildstat.html (and the 2.95 version of it) for indications of what is currently or recently known to work. We ought to provide a full list of all accepted targets that GCC distinguishes in the host/target section, even if there are no specific notes; this would be a fair amount of work to produce, but easier to maintain afterwards (put a comment in config.gcc about updating the install docs when you change that file). Then remove the old lists of systems and aliases from install-old.texi. > Many targets mention some requirement on binutils versions, many of them > probably obsolete. I've corrected a few of them (like references to > binutils 2.11.1 as unreleased), but I think it would be far better and > cleaner to globally require binutils 2.11.2 or above and remove all target > specific variations thereof, unless those document requirements beyond > this. Please include a configure test and reject all binutils versions that are too old at that stage. Please get rid of the *-linux-*oldld* targets (with a configure check to reject them) altogether; anyone using them would need to switch to i386-linux-gnuaout. > * elxsi-elxsi-bsd lists mrs@cygnus.com as a contact. I'm not sure if Mike > (using his new address) is still able to help here, or if this target > belongs to the historic section suggested above. Also, this sort of bootstrap binary, if still available, should probably be provided in the old-releases directory rather than giving an email address. The file also includes a UUCP address @samp{tektronix!reed!mason} though I have no evidence that this address no longer works. Some of the links in this file may also be dead by now. -- Joseph S. Myers jsm28@cam.ac.uk From gcc-patches-return-38046-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 18:33:37 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28249 invoked by alias); 4 Jul 2001 18:33:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28179 invoked from network); 4 Jul 2001 18:33:36 -0000 Received: from unknown (HELO gash2.peakpeak.com) (207.174.178.17) by sourceware.cygnus.com with SMTP; 4 Jul 2001 18:33:36 -0000 Received: from creche.cygnus.com (tq0146.peakpeak.com [207.174.177.146]) by gash2.peakpeak.com (8.9.3/8.9.3) with ESMTP id MAA32531; Wed, 4 Jul 2001 12:33:33 -0600 Received: (from tromey@localhost) by creche.cygnus.com (8.9.3/8.9.3) id MAA02744; Wed, 4 Jul 2001 12:54:35 -0600 To: Gcc Patch List Cc: Java Patch List Subject: Patch: fastjar on Windows X-Zippy: Catsup and Mustard all over the place! It's the Human Hamburger! X-Attribution: Tom Reply-To: tromey@redhat.com From: Tom Tromey Date: 04 Jul 2001 12:54:33 -0600 Message-ID: <87wv5o34pi.fsf@creche.redhat.com> Lines: 85 X-Mailer: Gnus v5.7/Emacs 20.5 I'm checking this in to the trunk. It changes fastjar to use O_BINARY when available. This is important for using fastjar on Windows. Tom Index: ChangeLog from Tom Tromey Modified from patch by Julian Hall : * jartool.c (errno): Conditionally declare. (O_BINARY): Conditionally define. (main): Use open, not creat. Use O_BINARY everywhere. (make_manifest): Use O_BINARY. (add_to_jar): Likewise. Index: jartool.c =================================================================== RCS file: /cvs/gcc/gcc/fastjar/jartool.c,v retrieving revision 1.5 diff -u -r1.5 jartool.c --- jartool.c 2001/05/03 21:40:47 1.5 +++ jartool.c 2001/07/04 18:32:24 @@ -212,8 +212,14 @@ static char version_string[] = VERSION; +#ifndef errno extern int errno; +#endif +#ifndef O_BINARY +#define O_BINARY 0 +#endif + void usage(const char*); void add_entry(struct zipentry *); void init_headers(void); @@ -370,8 +376,9 @@ /* create the jarfile */ if(action == ACTION_CREATE){ if(file){ - jarfd = creat(jarfile, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - + jarfd = open(jarfile, O_CREAT | O_BINARY | O_WRONLY | O_TRUNC, + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + if(jarfd < 0){ fprintf(stderr, "Error opening %s for writing!\n", jarfile); perror(jarfile); @@ -395,7 +402,7 @@ } else if(action == ACTION_LIST || action == ACTION_EXTRACT){ if(file){ - jarfd = open(jarfile, O_RDONLY); + jarfd = open(jarfile, O_RDONLY | O_BINARY); if(jarfd < 0){ fprintf(stderr, "Error opening %s for reading!\n", jarfile); @@ -417,7 +424,7 @@ init_headers(); if((action == ACTION_UPDATE) && file) { - if((jarfd = open(jarfile, O_RDWR)) < 0) { + if((jarfd = open(jarfile, O_RDWR | O_BINARY)) < 0) { fprintf(stderr, "Error opening %s for reading!\n", jarfile); perror(jarfile); exit(1); @@ -728,7 +735,7 @@ exit(1); } - mfd = open(mf_name, O_RDONLY); + mfd = open(mf_name, O_RDONLY | O_BINARY); if(mfd < 0){ fprintf(stderr, "Error opening %s.\n", mf_name); @@ -874,7 +881,7 @@ } else if(S_ISREG(statbuf.st_mode)){ int add_fd; - add_fd = open(file, O_RDONLY); + add_fd = open(file, O_RDONLY | O_BINARY); if(add_fd < 0){ fprintf(stderr, "Error opening %s.\n", file); return 0; From gcc-patches-return-38047-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 19:25:56 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 19206 invoked by alias); 4 Jul 2001 19:25:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 19175 invoked from network); 4 Jul 2001 19:25:54 -0000 Received: from unknown (HELO debian) (138.89.126.232) by sourceware.cygnus.com with SMTP; 4 Jul 2001 19:25:54 -0000 Received: by debian (Postfix, from userid 1000) id 9827DE15024; Wed, 4 Jul 2001 15:25:53 -0400 (EDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH]: Fix macinfo output for dwarf2, update comments. From: Daniel Berlin Date: Wed, 04 Jul 2001 15:25:53 -0400 Message-ID: <87hewsv6m6.fsf@cgsoftware.com> Lines: 120 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.5 (anise) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii We never call the debug hooks for the primary input buffer (see cb_file_change for why. This is also why we have all these tests for (!initialized) in dwarf2out_debug_*, because we have no idea which is going to start the primary source file first), so we of course, never call debug_end_source_file, and thus, were not outputting a DW_MACINFO_end_file for the end of the primary file. I also updated the comments on the dwarf2out_debug_* functions to better reflect reality. 2001-07-04 Daniel Berlin * dwarf2out.c (dwarf2out_define): Update comment. (dwarf2out_undef): Ditto. (dwarf2out_start_source_file): Ditto. (dwarf2out_end_source_file): Ditto. (dwarf2out_finish): Output DW_MACINFO_end_file for primary file, since we never call the start/end debug hook for the primary file. Index: dwarf2out.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/dwarf2out.c,v retrieving revision 1.279 diff -c -3 -p -w -B -b -r1.279 dwarf2out.c *** dwarf2out.c 2001/07/04 17:55:18 1.279 --- dwarf2out.c 2001/07/04 19:24:47 *************** dwarf2out_line (filename, line) *** 11268,11275 **** } } ! /* Record the beginning of a new source file, for later output ! of the .debug_macinfo section.*/ void dwarf2out_start_source_file (lineno, filename) --- 11268,11274 ---- } } ! /* Record the beginning of a new source file. */ void dwarf2out_start_source_file (lineno, filename) *************** dwarf2out_start_source_file (lineno, fil *** 11291,11298 **** } } ! /* Record the end of a source file, for later output ! of the .debug_macinfo section. At present, unimplemented. */ void dwarf2out_end_source_file () --- 11290,11296 ---- } } ! /* Record the end of a source file. */ void dwarf2out_end_source_file () *************** dwarf2out_end_source_file () *** 11309,11315 **** } } ! /* Called from check_newline in c-parse.y. The `buffer' parameter contains the tail part of the directive line, i.e. the part which is past the initial whitespace, #, whitespace, directive-name, whitespace part. */ --- 11307,11313 ---- } } ! /* Called from debug_define in toplev.c. The `buffer' parameter contains the tail part of the directive line, i.e. the part which is past the initial whitespace, #, whitespace, directive-name, whitespace part. */ *************** dwarf2out_define (lineno, buffer) *** 11333,11339 **** } } ! /* Called from check_newline in c-parse.y. The `buffer' parameter contains the tail part of the directive line, i.e. the part which is past the initial whitespace, #, whitespace, directive-name, whitespace part. */ --- 11331,11337 ---- } } ! /* Called from debug_undef in toplev.c. The `buffer' parameter contains the tail part of the directive line, i.e. the part which is past the initial whitespace, #, whitespace, directive-name, whitespace part. */ *************** dwarf2out_finish () *** 11564,11569 **** --- 11562,11574 ---- ASM_OUTPUT_SECTION (asm_out_file, DEBUG_LOC_SECTION); output_location_lists (die); have_location_lists = 0; + } + + /* Have to end the primary source file. */ + if (debug_info_level >= DINFO_LEVEL_VERBOSE) + { + ASM_OUTPUT_SECTION (asm_out_file, DEBUG_MACINFO_SECTION); + dw2_asm_output_data (1, DW_MACINFO_end_file, "End file"); } } -- "So I figured I'd leave the area, because I had no ties there anyway except for this girl I was seeing. We had conflicting attitudes: I really wasn't into meditating and she wasn't really into being alive. I told her I knew when I was going to die because my birth certificate has an expiration date. "-Steven Wright From gcc-patches-return-38048-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 19:43:21 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 25730 invoked by alias); 4 Jul 2001 19:43:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 25680 invoked from network); 4 Jul 2001 19:43:16 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (62.7.81.230) by sourceware.cygnus.com with SMTP; 4 Jul 2001 19:43:16 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id UAA29679; Wed, 4 Jul 2001 20:42:14 +0100 Message-ID: <3B437195.125340F4@codesourcery.com> Date: Wed, 04 Jul 2001 20:42:13 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19-6.2.7 i686) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org, jason@redhat.com Subject: dwarf2 long long patch Content-Type: multipart/mixed; boundary="------------A1A1CCDF3F1489F8EC3D45E1" This is a multi-part message in MIME format. --------------A1A1CCDF3F1489F8EC3D45E1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Jason, this patch removes a 'll' constant from the dwarf2 code that was tripping somebody up. It also makes the code more generic anyway. booted & tested on i686-pc-linux-gnu, ok? nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------A1A1CCDF3F1489F8EC3D45E1 Content-Type: application/octet-stream; name="dwarf.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dwarf.patch" MjAwMS0wNy0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIGR3YXJmMm91dC5jIChvdXRwdXRfbG9jX2xpc3QpOiBHZW5lcmF0ZSBtYXNrIHByb2dy YW1hdGljYWxseQoJYW5kIGRvbid0IHJlbHkgb24gbG9uZyBsb25nIGxpdGVyYWxzLgoKSW5k ZXg6IGR3YXJmMm91dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3Mv Z2NjL2R3YXJmMm91dC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3NwpkaWZmIC1jIC0z IC1wIC1yMS4yNzcgZHdhcmYyb3V0LmMKKioqIGR3YXJmMm91dC5jCTIwMDEvMDYvMTAgMTM6 NDc6NTUJMS4yNzcKLS0tIGR3YXJmMm91dC5jCTIwMDEvMDcvMDMgMTQ6NTE6NDYKKioqKioq KioqKioqKioqIG91dHB1dF9sb2NfbGlzdCAobGlzdF9oZWFkKQoqKiogNTk0Miw1OTY5ICoq KioKICAgIEFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbGlzdF9oZWFkLT5sbF9z eW1ib2wpOwogICAgaWYgKHN0cmNtcCAoY3Vyci0+c2VjdGlvbiwgIi50ZXh0IikgPT0gMCkK ICAgICAgewohICAgICAgIGlmIChEV0FSRjJfQUREUl9TSVpFID09IDQpCiEgICAgICAgICBk dzJfYXNtX291dHB1dF9kYXRhIChEV0FSRjJfQUREUl9TSVpFLCAweGZmZmZmZmZmLCAiTG9j YXRpb24gbGlzdCBiYXNlIGFkZHJlc3Mgc3BlY2lmaWVyIGZha2UgZW50cnkiKTsKISAgICAg ICBlbHNlIGlmIChEV0FSRjJfQUREUl9TSVpFID09IDgpCiEgCWR3Ml9hc21fb3V0cHV0X2Rh dGEgKERXQVJGMl9BRERSX1NJWkUsIDB4ZmZmZmZmZmZmZmZmZmZmZkxMLCAiTG9jYXRpb24g bGlzdCBiYXNlIGFkZHJlc3Mgc3BlY2lmaWVyIGZha2UgZW50cnkiKTsKISAgICAgICBlbHNl CiEgICAgICAgICBhYm9ydCgpOwohICAgICAgIGR3Ml9hc21fb3V0cHV0X29mZnNldCAoRFdB UkYyX0FERFJfU0laRSwgY3Vyci0+c2VjdGlvbiwgIkxvY2F0aW9uIGxpc3QgYmFzZSBhZGRy ZXNzIHNwZWNpZmllciBiYXNlIik7CiAgICAgIH0KICAgIGZvciAoY3VyciA9IGxpc3RfaGVh ZDsgY3VyciAhPSBOVUxMOyBjdXJyPWN1cnItPmR3X2xvY19uZXh0KQogICAgICB7CiAgICAg ICAgaW50IHNpemU7CiEgICAgICAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKERXQVJGMl9BRERS X1NJWkUsIGN1cnItPmJlZ2luLCBjdXJyLT5zZWN0aW9uLCAiTG9jYXRpb24gbGlzdCBiZWdp biBhZGRyZXNzICglcykiLCBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CiEgICAgICAgZHcyX2Fz bV9vdXRwdXRfZGVsdGEgKERXQVJGMl9BRERSX1NJWkUsIGN1cnItPmVuZCwgY3Vyci0+c2Vj dGlvbiwgIkxvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCVzKSIsIGxpc3RfaGVhZC0+bGxf c3ltYm9sKTsKICAgICAgICBzaXplID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHByKTsKICAg ICAgICAKICAgICAgICAvKiBPdXRwdXQgdGhlIGJsb2NrIGxlbmd0aCBmb3IgdGhpcyBsaXN0 IG9mIGxvY2F0aW9uIG9wZXJhdGlvbnMuICAqLwohICAgICAgIGR3Ml9hc21fb3V0cHV0X2Rh dGEgKGNvbnN0YW50X3NpemUgKHNpemUpLCBzaXplLCAiJXMiLCAiTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplIik7CiAgICAgICAgCiAgICAgICAgb3V0cHV0X2xvY19zZXF1ZW5jZSAoY3Vy ci0+ZXhwcik7CiAgICAgIH0KISAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKERXQVJGX09GRlNF VF9TSVpFLCAwLCAiTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICglcykiLCBsaXN0 X2hlYWQtPmxsX3N5bWJvbCk7CiEgICBkdzJfYXNtX291dHB1dF9kYXRhIChEV0FSRl9PRkZT RVRfU0laRSwgMCwgIkxvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCVzKSIsIGxpc3Rf aGVhZC0+bGxfc3ltYm9sKTsKICB9CiAgLyogT3V0cHV0IHRoZSBESUUgYW5kIGl0cyBhdHRy aWJ1dGVzLiAgQ2FsbGVkIHJlY3Vyc2l2ZWx5IHRvIGdlbmVyYXRlCiAgICAgdGhlIGRlZmlu aXRpb25zIG9mIGVhY2ggY2hpbGQgRElFLiAgKi8KLS0tIDU5NDIsNTk3NyAtLS0tCiAgICBB U01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsK ICAgIGlmIChzdHJjbXAgKGN1cnItPnNlY3Rpb24sICIudGV4dCIpID09IDApCiAgICAgIHsK ISAgICAgICBkdzJfYXNtX291dHB1dF9kYXRhIChEV0FSRjJfQUREUl9TSVpFLAohIAkJCSAg ICgoKCh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSAxKQohIAkJCSAgICAgPDwgKERXQVJGMl9B RERSX1NJWkUgKiA4IC0gMSkpIDw8IDEpIC0gMSwKISAJCQkgICAiTG9jYXRpb24gbGlzdCBi YXNlIGFkZHJlc3Mgc3BlY2lmaWVyIGZha2UgZW50cnkiKTsKISAgICAgICBkdzJfYXNtX291 dHB1dF9vZmZzZXQgKERXQVJGMl9BRERSX1NJWkUsIGN1cnItPnNlY3Rpb24sCiEgCQkJICAg ICAiTG9jYXRpb24gbGlzdCBiYXNlIGFkZHJlc3Mgc3BlY2lmaWVyIGJhc2UiKTsKICAgICAg fQogICAgZm9yIChjdXJyID0gbGlzdF9oZWFkOyBjdXJyICE9IE5VTEw7IGN1cnI9Y3Vyci0+ ZHdfbG9jX25leHQpCiAgICAgIHsKICAgICAgICBpbnQgc2l6ZTsKISAgICAgICBkdzJfYXNt X291dHB1dF9kZWx0YSAoRFdBUkYyX0FERFJfU0laRSwgY3Vyci0+YmVnaW4sIGN1cnItPnNl Y3Rpb24sCiEgCQkJICAgICJMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCVzKSIsCiEg CQkJICAgIGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsKISAgICAgICBkdzJfYXNtX291dHB1dF9k ZWx0YSAoRFdBUkYyX0FERFJfU0laRSwgY3Vyci0+ZW5kLCBjdXJyLT5zZWN0aW9uLAohIAkJ CSAgICAiTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoJXMpIiwKISAJCQkgICAgbGlzdF9o ZWFkLT5sbF9zeW1ib2wpOwogICAgICAgIHNpemUgPSBzaXplX29mX2xvY3MgKGN1cnItPmV4 cHIpOwogICAgICAgIAogICAgICAgIC8qIE91dHB1dCB0aGUgYmxvY2sgbGVuZ3RoIGZvciB0 aGlzIGxpc3Qgb2YgbG9jYXRpb24gb3BlcmF0aW9ucy4gICovCiEgICAgICAgZHcyX2FzbV9v dXRwdXRfZGF0YSAoY29uc3RhbnRfc2l6ZSAoc2l6ZSksIHNpemUsICIlcyIsCiEgCQkJICAg IkxvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZSIpOwogICAgICAgIAogICAgICAgIG91dHB1dF9s b2Nfc2VxdWVuY2UgKGN1cnItPmV4cHIpOwogICAgICB9CiEgICBkdzJfYXNtX291dHB1dF9k YXRhIChEV0FSRl9PRkZTRVRfU0laRSwgMCwKISAJCSAgICAgICAiTG9jYXRpb24gbGlzdCB0 ZXJtaW5hdG9yIGJlZ2luICglcykiLAohIAkJICAgICAgIGxpc3RfaGVhZC0+bGxfc3ltYm9s KTsKISAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKERXQVJGX09GRlNFVF9TSVpFLCAwLAohIAkJ ICAgICAgICJMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICglcykiLAohIAkJICAgICAg IGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsKICB9CiAgLyogT3V0cHV0IHRoZSBESUUgYW5kIGl0 cyBhdHRyaWJ1dGVzLiAgQ2FsbGVkIHJlY3Vyc2l2ZWx5IHRvIGdlbmVyYXRlCiAgICAgdGhl IGRlZmluaXRpb25zIG9mIGVhY2ggY2hpbGQgRElFLiAgKi8K --------------A1A1CCDF3F1489F8EC3D45E1-- From gcc-patches-return-38049-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 19:44:27 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26322 invoked by alias); 4 Jul 2001 19:44:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26278 invoked from network); 4 Jul 2001 19:44:25 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (62.7.81.230) by sourceware.cygnus.com with SMTP; 4 Jul 2001 19:44:25 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id UAA29852; Wed, 4 Jul 2001 20:42:19 +0100 Message-ID: <3B43719B.6189FE7C@codesourcery.com> Date: Wed, 04 Jul 2001 20:42:19 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19-6.2.7 i686) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org CC: shebs@apple.com Subject: [PATCH]: varray.h typo fix Content-Type: multipart/mixed; boundary="------------67E699B7EAEDE7331930024E" This is a multi-part message in MIME format. --------------67E699B7EAEDE7331930024E Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I've installed this obvious fix in varray.h. booted on i686-pc-linux-gnu and grepped the source for the zero occurrences of those two macros. Oh, yes I noticed the filenames in 2001-07-03 Stan Shebs were missing a config/ nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------67E699B7EAEDE7331930024E Content-Type: application/octet-stream; name="varray.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="varray.patch" MjAwMS0wNy0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIHZhcnJheS5oIChWQVJSQVlfVE9QX0dFTkVSSUNfUFRSKTogUmVtb3ZlIHNwdXJpb3Vz IHBhcmFtZXRlci4KCShWQVJSQVlfVE9QX0NIQVJfUFRSKTogTGlrZXdpc2UuCgpJbmRleDog dmFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9nY2MvdmFy cmF5LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjIKZGlmZiAtYyAtMyAtcCAtcjEuMjIg dmFycmF5LmgKKioqIHZhcnJheS5oCTIwMDEvMDUvMjYgMDE6MzE6MzUJMS4yMgotLS0gdmFy cmF5LmgJMjAwMS8wNy8wMyAxNDo1MToyMgoqKioqKioqKioqKioqKiogZXh0ZXJuIHZvaWQg dmFycmF5X2NoZWNrX2ZhaWxlZCBQQVJBTVMgKAoqKiogMjYwLDI2NyAqKioqCiAgI2RlZmlu ZSBWQVJSQVlfVE9QX1VMT05HKFZBKQkgICAgICAgIFZBUlJBWV9UT1AgKFZBLCB1bCkKICAj ZGVmaW5lIFZBUlJBWV9UT1BfV0lERV9JTlQoVkEpCSAgICAgICAgVkFSUkFZX1RPUCAoVkEs IGhpbnQpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1VXSURFX0lOVChWQSkJVkFSUkFZX1RPUCAo VkEsIHVoaW50KQohICNkZWZpbmUgVkFSUkFZX1RPUF9HRU5FUklDX1BUUihWQSxOKQlWQVJS QVlfVE9QIChWQSwgZ2VuZXJpYykKISAjZGVmaW5lIFZBUlJBWV9UT1BfQ0hBUl9QVFIoVkEs TikJVkFSUkFZX1RPUCAoVkEsIGNwdHIpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1JUWChWQSkJ CVZBUlJBWV9UT1AgKFZBLCBydHgpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1JUVkVDKFZBKQkg ICAgICAgIFZBUlJBWV9UT1AgKFZBLCBydHZlYykKICAjZGVmaW5lIFZBUlJBWV9UT1BfVFJF RShWQSkJCVZBUlJBWV9UT1AgKFZBLCB0cmVlKQotLS0gMjYwLDI2NyAtLS0tCiAgI2RlZmlu ZSBWQVJSQVlfVE9QX1VMT05HKFZBKQkgICAgICAgIFZBUlJBWV9UT1AgKFZBLCB1bCkKICAj ZGVmaW5lIFZBUlJBWV9UT1BfV0lERV9JTlQoVkEpCSAgICAgICAgVkFSUkFZX1RPUCAoVkEs IGhpbnQpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1VXSURFX0lOVChWQSkJVkFSUkFZX1RPUCAo VkEsIHVoaW50KQohICNkZWZpbmUgVkFSUkFZX1RPUF9HRU5FUklDX1BUUihWQSkJVkFSUkFZ X1RPUCAoVkEsIGdlbmVyaWMpCiEgI2RlZmluZSBWQVJSQVlfVE9QX0NIQVJfUFRSKFZBKQkJ VkFSUkFZX1RPUCAoVkEsIGNwdHIpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1JUWChWQSkJCVZB UlJBWV9UT1AgKFZBLCBydHgpCiAgI2RlZmluZSBWQVJSQVlfVE9QX1JUVkVDKFZBKQkgICAg ICAgIFZBUlJBWV9UT1AgKFZBLCBydHZlYykKICAjZGVmaW5lIFZBUlJBWV9UT1BfVFJFRShW QSkJCVZBUlJBWV9UT1AgKFZBLCB0cmVlKQo= --------------67E699B7EAEDE7331930024E-- From gcc-patches-return-38050-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 19:52:35 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 534 invoked by alias); 4 Jul 2001 19:52:35 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 452 invoked from network); 4 Jul 2001 19:52:28 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 4 Jul 2001 19:52:28 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id MAA22083; Wed, 4 Jul 2001 12:52:26 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f64JqQY30708; Wed, 4 Jul 2001 12:52:26 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 12:52:25 -0700 From: Richard Henderson To: Nathan Sidwell Cc: gcc-patches@gcc.gnu.org, jason@redhat.com Subject: Re: dwarf2 long long patch Message-ID: <20010704125225.A29879@redhat.com> Mail-Followup-To: Richard Henderson , Nathan Sidwell , gcc-patches@gcc.gnu.org, jason@redhat.com References: <3B437195.125340F4@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <3B437195.125340F4@codesourcery.com>; from nathan@codesourcery.com on Wed, Jul 04, 2001 at 08:42:13PM +0100 On Wed, Jul 04, 2001 at 08:42:13PM +0100, Nathan Sidwell wrote: ! ((((unsigned HOST_WIDE_INT) 1) ! << (DWARF2_ADDR_SIZE * 8 - 1)) << 1) - 1, This is equivalent to (unsigned HOST_WIDE_INT) -1. Otherwise ok. r~ From gcc-patches-return-38051-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 19:52:44 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 674 invoked by alias); 4 Jul 2001 19:52:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 601 invoked from network); 4 Jul 2001 19:52:38 -0000 Received: from unknown (HELO caip.rutgers.edu) (128.6.236.10) by sourceware.cygnus.com with SMTP; 4 Jul 2001 19:52:38 -0000 Received: (from ghazi@localhost) by caip.rutgers.edu (8.9.3/8.9.3) id PAA22765; Wed, 4 Jul 2001 15:52:25 -0400 (EDT) Date: Wed, 4 Jul 2001 15:52:25 -0400 (EDT) From: "Kaveh R. Ghazi" Message-Id: <200107041952.PAA22765@caip.rutgers.edu> To: gcc-patches@gcc.gnu.org Subject: Patch installed to fix stage1 bootstrap error in gcc.c Cc: nickc@cambridge.redhat.com Bootstrapping the trunk yields an error compiling gcc.c when using cc for stage1 on irix6.2 and solaris2.7: > "gcc.c", line 3391: error(1133): expression must be a modifiable lvalue > value[len] = DIR_SEPARATOR; > ^ > "gcc.c", line 3392: error(1133): expression must be a modifiable lvalue > value[++ len] = 0; > ^ > 2 errors detected in the compilation of "gcc.c". > make[2]: *** [gcc.o] Error 2 if you use gcc for stage1, it gives a very clear warning too. > gcc.c: In function `process_command': > gcc.c:3391: warning: assignment of read-only location > gcc.c:3392: warning: assignment of read-only location Bootstrapped on Irix6.2, and installed as obvious. --Kaveh 2001-07-01 Kaveh R. Ghazi * gcc.c (process_command): Don't assign elements of a const char*. diff -rup /tmp/foo/egcs-CVS20010701/gcc/gcc.c egcs-CVS20010701/gcc/gcc.c --- /tmp/foo/egcs-CVS20010701/gcc/gcc.c Sat Jun 30 07:30:13 2001 +++ egcs-CVS20010701/gcc/gcc.c Sun Jul 1 17:59:46 2001 @@ -3387,9 +3387,11 @@ process_command (argc, argv) if (! IS_DIR_SEPARATOR (value [len - 1]) && is_directory (value, "", 0)) { - value = strcpy (xmalloc (len + 2), value); - value[len] = DIR_SEPARATOR; - value[++ len] = 0; + char *tmp = xmalloc (len + 2); + strcpy (tmp, value); + tmp[len] = DIR_SEPARATOR; + tmp[++ len] = 0; + value = tmp; } /* As a kludge, if the arg is "[foo/]stageN/", just From gcc-patches-return-38052-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 20:16:01 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12150 invoked by alias); 4 Jul 2001 20:15:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12107 invoked from network); 4 Jul 2001 20:15:53 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (62.7.81.230) by sourceware.cygnus.com with SMTP; 4 Jul 2001 20:15:53 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id VAA30340; Wed, 4 Jul 2001 21:13:50 +0100 Message-ID: <3B4378FE.35FF93D7@codesourcery.com> Date: Wed, 04 Jul 2001 21:13:50 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19-6.2.7 i686) X-Accept-Language: en MIME-Version: 1.0 To: Richard Henderson CC: gcc-patches@gcc.gnu.org, jason@redhat.com Subject: Re: dwarf2 long long patch References: <3B437195.125340F4@codesourcery.com> <20010704125225.A29879@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Richard Henderson wrote: > > On Wed, Jul 04, 2001 at 08:42:13PM +0100, Nathan Sidwell wrote: > ! ((((unsigned HOST_WIDE_INT) 1) > ! << (DWARF2_ADDR_SIZE * 8 - 1)) << 1) - 1, > > This is equivalent to (unsigned HOST_WIDE_INT) -1. Otherwise ok. Looking at the definition of DWARF2_ADDR_SIZE, that 8 should be BITS_PER_UNIT. I don't think your invariant holds. HOST_WIDE_INT could be 64 bits and POINTER_SIZE (which is where DWARF2_ADDR_SIZE comes from, by default), could be 32, for instance. As you'll realise, there are two shifts to avoid the ill-defined case of shifting a HOST_WIDE_INT by the number of bits in a host wide int -- I should stick a comment in about that. ok with that change from 8 -> BITS_PER_UNIT + comment? nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-38053-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 20:21:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13799 invoked by alias); 4 Jul 2001 20:21:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13754 invoked from network); 4 Jul 2001 20:21:37 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 4 Jul 2001 20:21:37 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f64KHL213620; Wed, 4 Jul 2001 21:17:21 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Daniel Berlin Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH]: Fix macinfo output for dwarf2, update comments. References: <87hewsv6m6.fsf@cgsoftware.com> From: Jason Merrill In-Reply-To: <87hewsv6m6.fsf@cgsoftware.com> (Daniel Berlin's message of "Wed, 04 Jul 2001 15:25:53 -0400") Date: 04 Jul 2001 21:17:21 +0100 Message-ID: Lines: 1 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii OK. From gcc-patches-return-38054-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 20:53:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 32508 invoked by alias); 4 Jul 2001 20:53:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 32419 invoked from network); 4 Jul 2001 20:53:18 -0000 Received: from unknown (HELO shaolin.fenk.wau.nl) (137.224.129.21) by sourceware.cygnus.com with SMTP; 4 Jul 2001 20:53:18 -0000 Received: from localhost (localhost [[UNIX: localhost]]) by shaolin.fenk.wau.nl (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id WAA01005 for gcc-patches@gcc.gnu.org; Wed, 4 Jul 2001 22:53:52 +0200 From: Jan van Male Reply-To: jan.vanmale@fenk.wau.nl To: gcc-patches@gcc.gnu.org Subject: [PATCH] avoid warnings in alias.c Date: Wed, 4 Jul 2001 22:52:22 +0200 X-Mailer: KMail [version 1.0.29.2] Content-Type: text/plain MIME-Version: 1.0 Message-Id: <01070422535208.25793@shaolin> Content-Transfer-Encoding: 8bit Hi all, This patch avoids the following warnings during bootstrap. ../../gcc/gcc/alias.c: In function `base_alias_check': ../../gcc/gcc/alias.c:1310: warning: comparison between signed and unsigned ../../gcc/gcc/alias.c:1314: warning: comparison between signed and unsigned The first warning is triggered by this line: || GET_MODE_UNIT_SIZE (y_mode) < -INTVAL (XEXP (x, 1)))) The beginner project page says that it is better to leave these warnings alone unless you really know what you are doing. Since I'm a beginner I can't claim that I do :-). Here is why I think my patch is correct: The warnings were introduced by this (huge) patch: http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00872.html The relevant change is * machmode.h (mode_size, mode_unit_size): Now unsigned. which changed `mode_unit_size' from `int' to `unsigned'. However, (as is remarked in the patch message) the patch is still not finished: some warnings were introduced. This patch eliminates two of them by adding an explicit cast to `int' of GET_MODE_UNIT_SIZE. GET_MODE_UNIT_SIZE has a maximum value of 32 (according to machmode.def). This means that casting from unsigned to signed does not give any surprises. My patch restores the old situation in the comparisons that trigger a warning. This could be done in about two dozen other places. However, I would like to have some feedback before proceeding since all this seems rather simple. The warning on the beginner project page suggests that I overlooked a possible problem. The patch passes a full bootstrap and tests without regressions, please apply it when ok, since I don't have cvs write priviledges. jan Changelog: 2001-07-04 Jan van Male * alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to avoid warnings. Index: gcc/gcc/alias.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/alias.c,v retrieving revision 1.124 diff -c -3 -p -r1.124 alias.c *** alias.c 2001/07/03 01:58:34 1.124 --- alias.c 2001/07/04 18:49:10 *************** base_alias_check (x, y, x_mode, y_mode) *** 1307,1317 **** return 1; if (GET_CODE (x) == AND && (GET_CODE (XEXP (x, 1)) != CONST_INT ! || GET_MODE_UNIT_SIZE (y_mode) < -INTVAL (XEXP (x, 1)))) return 1; if (GET_CODE (y) == AND && (GET_CODE (XEXP (y, 1)) != CONST_INT ! || GET_MODE_UNIT_SIZE (x_mode) < -INTVAL (XEXP (y, 1)))) return 1; /* Differing symbols never alias. */ return 0; --- 1307,1317 ---- return 1; if (GET_CODE (x) == AND && (GET_CODE (XEXP (x, 1)) != CONST_INT ! || (int) GET_MODE_UNIT_SIZE (y_mode) < -INTVAL (XEXP (x, 1)))) return 1; if (GET_CODE (y) == AND && (GET_CODE (XEXP (y, 1)) != CONST_INT ! || (int) GET_MODE_UNIT_SIZE (x_mode) < -INTVAL (XEXP (y, 1)))) return 1; /* Differing symbols never alias. */ return 0; From gcc-patches-return-38055-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 21:02:23 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 2895 invoked by alias); 4 Jul 2001 21:02:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 2869 invoked from network); 4 Jul 2001 21:02:16 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 21:02:16 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f64L1bg26096; Wed, 4 Jul 2001 23:01:38 +0200 (MET DST) Date: Wed, 4 Jul 2001 23:01:37 +0200 (CEST) From: Gerald Pfeifer To: Rainer Orth cc: , Mike Stump , Jeff Law Subject: Re: 3.0.1 PATCH: Fixes for install.texi host/target section In-Reply-To: <15171.23609.153871.389963@xayide.TechFak.Uni-Bielefeld.DE> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 4 Jul 2001, Rainer Orth wrote: > Tested with texi2dvi and makeinfo. Ok for branch and mainline? Yes, please. > Wed Jul 4 19:59:12 2001 Rainer Orth > > * doc/install.texi (Specific): Markup, spelling and typo fixes. > Fixed sorting. > Consistently require binutils 2.11.2, not prereleases. > (Specific, decstation-*): Canonicalize as mips-dec-*. > (Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement, > always necessary. > (Specific, m68k-altos): Removed reference to README.altos, deleted. > (Specific, mips-*): Reword MIPS C compiler requirements. > (Specific, powerpc*-*-*): New, mention --with-cpu once. > (Specific, sunv5): Removed, obsolete. > +All releases of GNU binutils prior to 2.11.2 have known bugs on this > +platform. We recommend the use of GNU binutils 2.11.2 or the vendor > tools (Sun as, Sun ld). @command{as} and @command{ld} here? Thanks, Gerald PS: It would be a bit easier to review such patches if you could split them a bit. In this case, you could have committed the "Fixed sorting" part as an obvious fix first, for example. From gcc-patches-return-38056-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 21:11:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11070 invoked by alias); 4 Jul 2001 21:11:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 10987 invoked from network); 4 Jul 2001 21:11:09 -0000 Received: from unknown (HELO cse.cygnus.com) (62.30.164.148) by sourceware.cygnus.com with SMTP; 4 Jul 2001 21:11:09 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f64L6oa13672; Wed, 4 Jul 2001 22:06:50 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Nathan Sidwell Cc: gcc-patches@gcc.gnu.org Subject: Re: dwarf2 long long patch References: <3B437195.125340F4@codesourcery.com> From: Jason Merrill In-Reply-To: <3B437195.125340F4@codesourcery.com> (Nathan Sidwell's message of "Wed, 04 Jul 2001 20:42:13 +0100") Date: 04 Jul 2001 22:06:50 +0100 Message-ID: Lines: 1 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii OK. From gcc-patches-return-38057-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 21:35:11 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 21155 invoked by alias); 4 Jul 2001 21:35:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 21132 invoked from network); 4 Jul 2001 21:35:09 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 4 Jul 2001 21:35:09 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f64LXrg27190; Wed, 4 Jul 2001 23:33:54 +0200 (MET DST) Date: Wed, 4 Jul 2001 23:33:52 +0200 (CEST) From: Gerald Pfeifer To: Rich Churcher cc: "Joseph S. Myers" , Subject: Re: PATCH: faq.html (was: "FAQ patch") In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 3 Jul 2001, Rich Churcher wrote: > [To be honest, the long lines in diff output - this has always confused > me. What is it we have to avoid, again? Is it enough that my mail > client doesn't wrap long lines, or should I edit long lines prior to > invoking cvs diff? I could make sure everything in existing markup > doesn't go past 70 characters or so if necessary.] If possible, lines shouldn't be longer than about 75 characters, even if your mail client does not wrap long lines. Reasons for this include that the mailers of *others* might cause troubles if they produce patches at a later time, GNU coding standards, and that it's usually easier to read such patches in a mailer. (Of course, there are cases, like long URLs or perhaps the TOC of the FAQ where this is not feasible, but in general we prefer short lines.) > 2001-07-03 Rich Churcher > > * Add question to cover lack of export keyword I'd prefer that we enhance the corresponding item which we already have in bugs.html instead. And, if this is indeed a FAQ, just refer that one from the FAQ. If you agree, could you craft a patch to that end? If not, try to convince me (which *is* feasible, I guess). :-) Thanks, Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/ From gcc-patches-return-38058-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 21:45:13 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 24653 invoked by alias); 4 Jul 2001 21:45:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 24590 invoked from network); 4 Jul 2001 21:45:05 -0000 Received: from unknown (HELO atrey.karlin.mff.cuni.cz) (195.113.31.123) by sourceware.cygnus.com with SMTP; 4 Jul 2001 21:45:05 -0000 Received: (from hubicka@localhost) by atrey.karlin.mff.cuni.cz (8.9.3/8.9.3/Debian 8.9.3-21) id XAA17969; Wed, 4 Jul 2001 23:44:57 +0200 Date: Wed, 4 Jul 2001 23:44:57 +0200 From: Jan Hubicka To: Jeffrey Oldham Cc: jh@suse.cz, rth@redhat.com, gcc-patches@gcc.gnu.org Subject: Re: Recent Change to gcc/flow.c Causes Test Regression for 3.1 Message-ID: <20010704234457.B17607@atrey.karlin.mff.cuni.cz> References: <20010703104411.A30955@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.15i In-Reply-To: <20010703104411.A30955@codesourcery.com>; from oldham@codesourcery.com on Tue, Jul 03, 2001 at 10:44:11AM -0700 > This morning, gcc/testsuite/gcc.dg/wtr-label-1.c regressed with the > following problem: > > ~/gcc/gcc2/objdir/gcc/cc1 wtr-label-1.i > testfunc1 > /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c: In function `testfunc1': > /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c:29: Virtual array basic_block_info[1]: element 1 out of bounds > /nfs/oz/home/oldham/gcc/gcc2/gcc/testsuite/gcc.dg/wtr-label-1.c:29: confused by earlier errors, bailing out > > The problem disappears when reversing your most recent change to > gcc/flow.c, i.e., revision 1.412, which is attached. I am using > i686-pc-linux-gnu and gcc 3.1. > > Would you be willing to fix the problem? Yes, but I am away now, so I can do it after 7th. I believe I know where the problem is, so maybe I will be able to send patch before that. Honza > > Thanks, > Jeffrey D. Oldham > oldham@codesourcery.com > Index: flow.c > =================================================================== > RCS file: /cvs/gcc/gcc/gcc/flow.c,v > retrieving revision 1.411 > retrieving revision 1.412 > diff -c -p -r1.411 -r1.412 > *** flow.c 2001/07/02 16:47:57 1.411 > --- flow.c 2001/07/02 21:16:48 1.412 > *************** static bool > *** 1597,1614 **** > forwarder_block_p (bb) > basic_block bb; > { > ! rtx insn; > if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR > || !bb->succ || bb->succ->succ_next) > return false; > > ! insn = next_active_insn (bb->head); > ! if (!insn) > ! return false; > ! if (GET_CODE (insn) == CODE_LABEL > ! || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn))) > ! return true; > ! return false; > } > > /* Return nonzero if we can reach target from src by falling trought. */ > --- 1597,1615 ---- > forwarder_block_p (bb) > basic_block bb; > { > ! rtx insn = bb->head; > if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR > || !bb->succ || bb->succ->succ_next) > return false; > > ! while (insn != bb->end) > ! { > ! if (active_insn_p (insn)) > ! return false; > ! insn = NEXT_INSN (insn); > ! } > ! return (!active_insn_p (insn) > ! || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn))); > } > > /* Return nonzero if we can reach target from src by falling trought. */ > *************** try_redirect_by_replacing_jump (e, targe > *** 1699,1704 **** > --- 1700,1707 ---- > e->flags = EDGE_FALLTHRU; > else > e->flags = 0; > + e->probability = REG_BR_PROB_BASE; > + e->count = src->count; > > /* Fixup barriers. */ > barrier = next_nonnote_insn (insn); > *************** try_redirect_by_replacing_jump (e, targe > *** 1707,1712 **** > --- 1710,1729 ---- > else if (!fallthru && GET_CODE (barrier) != BARRIER) > emit_barrier_after (insn); > > + /* In case we've zapped an conditional jump, we need to kill the cc0 > + setter too if available. */ > + #ifdef HAVE_cc0 > + insn = src->end; > + if (GET_CODE (insn) == JUMP_INSN) > + insn = prev_nonnote_insn (insn); > + if (sets_cc0_p (insn)) > + { > + if (insn == src->end) > + src->end = PREV_INSN (insn); > + flow_delete_insn (insn); > + } > + #endif > + > if (e->dest != target) > redirect_edge_succ (e, target); > return true; > *************** redirect_edge_and_branch (e, target) > *** 1766,1772 **** > for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j) > if (XEXP (RTVEC_ELT (vec, j), 0) == old_label) > { > ! RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (VOIDmode, new_label); > --LABEL_NUSES (old_label); > ++LABEL_NUSES (new_label); > } > --- 1783,1789 ---- > for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j) > if (XEXP (RTVEC_ELT (vec, j), 0) == old_label) > { > ! RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (Pmode, new_label); > --LABEL_NUSES (old_label); > ++LABEL_NUSES (new_label); > } > *************** redirect_edge_and_branch (e, target) > *** 1815,1820 **** > --- 1832,1839 ---- > if (s) > { > s->flags |= e->flags; > + s->probability += e->probability; > + s->count += e->count; > remove_edge (e); > } > else From gcc-patches-return-38059-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 21:57:41 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1994 invoked by alias); 4 Jul 2001 21:57:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1888 invoked from network); 4 Jul 2001 21:57:37 -0000 Received: from unknown (HELO atrey.karlin.mff.cuni.cz) (195.113.31.123) by sourceware.cygnus.com with SMTP; 4 Jul 2001 21:57:37 -0000 Received: (from hubicka@localhost) by atrey.karlin.mff.cuni.cz (8.9.3/8.9.3/Debian 8.9.3-21) id XAA18940; Wed, 4 Jul 2001 23:57:36 +0200 Date: Wed, 4 Jul 2001 23:57:35 +0200 From: Jan Hubicka To: Graham Stott Cc: Richard Henderson , Jan Hubicka , gcc-patches@gcc.gnu.org, patches@x86-64.org, gcc@gcc.gnu.org Subject: Re: [patches] Re: unconditional pre-reload splitter Message-ID: <20010704235735.C17607@atrey.karlin.mff.cuni.cz> References: <20010625135229.S7932@atrey.karlin.mff.cuni.cz> <20010625090633.B13183@redhat.com> <3B42F01C.347E8191@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.15i In-Reply-To: <3B42F01C.347E8191@redhat.com>; from grahams@redhat.com on Wed, Jul 04, 2001 at 11:29:48AM +0100 > Jan did you intended to do the spliting when not optimizing if so > then the register use info needs to get updated. Yes, I did. It should simplify writting md files, as you would not need to worry about two separate compilation modes. > > The easiest way is get rid of the register_life_up_to_date flag > and always call recompute_reg_usage. Is that enought to do so after 7th? I am away now. Honza > > Graham From gcc-patches-return-38060-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Wed Jul 04 22:04:19 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 5145 invoked by alias); 4 Jul 2001 22:04:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5119 invoked from network); 4 Jul 2001 22:04:18 -0000 Received: from unknown (HELO hxi?exch01.hxi.com) (63.107.233.166) by sourceware.cygnus.com with SMTP; 4 Jul 2001 22:04:18 -0000 Received: by hxi_exch01.hxi.com with Internet Mail Service (5.5.2653.19) id ; Wed, 4 Jul 2001 17:57:51 -0400 Message-ID: <879EA880A0FED411996B00B0D0B082EC0D3853@hxi_exch01.hxi.com> From: Kazu Hirata To: "'gcc-patches@gcc.gnu.org'" Subject: [comitted patch] Fix a typo in the h8300 port. Date: Wed, 4 Jul 2001 17:57:51 -0400 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" Hi, I comitted the attached obvious patch to both the branch and the mainline. Kazu Hirata 2001-07-04 Kazu Hirata * config/h8300/h8300.c (get_shift_alg): Remove an extra operand from shll. Index: h8300.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/h8300/h8300.c,v retrieving revision 1.53.2.2 diff -u -r1.53.2.2 h8300.c --- h8300.c 2001/05/12 20:32:43 1.53.2.2 +++ h8300.c 2001/07/04 21:54:24 @@ -2238,7 +2238,7 @@ { if (count == 15 && shift_type == SHIFT_ASHIFTRT) { - info->special = "shll\t%t0,%t0\n\tsubx\t%t0,%t0\n\tmov.b\t%t0,%s0"; + info->special = "shll\t%t0\n\tsubx\t%t0,%t0\n\tmov.b\t%t0,%s0"; info->cc_valid_p = 0; return SHIFT_SPECIAL; } From gcc-patches-return-38061-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 02:17:19 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8412 invoked by alias); 5 Jul 2001 02:17:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8248 invoked from network); 5 Jul 2001 02:17:14 -0000 Received: from unknown (HELO mail.cablespeed.com) (206.112.192.76) by sourceware.cygnus.com with SMTP; 5 Jul 2001 02:17:14 -0000 Received: from hotmail.com (c207-202-220-215.sea1.cablespeed.com [207.202.220.215]) by mail.cablespeed.com (8.9.3/8.9.3) with SMTP id TAA29771 for ; Wed, 4 Jul 2001 19:17:13 -0700 Message-Id: <200107050217.TAA29771@mail.cablespeed.com> From: "Kirk" To: Subject: Good for a laugh! Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Date: Wed, 4 Jul 2001 19:16:14 -0700 Content-Transfer-Encoding: 8bit Thought you'd like to take a break and laugh a little. The following site is updated daily and has funny news articles, quotes, and sections like Dog Thoughts and Headlines. It even has a Webcam! I'm sure you'll find something to enjoy. http://www.laundryday.com Spread the smiles. P.S. Please do not respond to this email. It's a one time mailing. :-) From gcc-patches-return-38062-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 04:59:43 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 28032 invoked by alias); 5 Jul 2001 04:59:39 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27979 invoked from network); 5 Jul 2001 04:59:37 -0000 Received: from unknown (HELO mail.kdt.de) (195.8.224.4) by sourceware.cygnus.com with SMTP; 5 Jul 2001 04:59:37 -0000 Received: from arthur.inka.de (arthur.kdt.de [195.8.250.5]) by mail.kdt.de (8.11.1/8.11.0) with ESMTP id f654xTX06347; Thu, 5 Jul 2001 06:59:29 +0200 Received: from gromit.moeb ([192.168.27.3] ident=postfix) by arthur.inka.de with esmtp (Exim 3.30 #1) id 15I1EW-00068G-00; Thu, 05 Jul 2001 06:59:20 +0200 Received: by gromit.moeb (Postfix, from userid 207) id B07271EA44; Thu, 5 Jul 2001 06:59:18 +0200 (CEST) To: "Joseph S. Myers" Cc: Vladimir A Merzliakov , , , gcc-patches@gcc.gnu.org Subject: Re: Bootstrap failure: doc/include/gpl.texi:1: Node `Copying' previously defined at line 4244. References: From: Andreas Jaeger Date: Thu, 05 Jul 2001 06:59:18 +0200 In-Reply-To: ("Joseph S. Myers"'s message of "Wed, 4 Jul 2001 22:41:38 +0100 (BST)") Message-ID: Lines: 435 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.4 (Academic Rigor) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii "Joseph S. Myers" writes: > On Thu, 5 Jul 2001, Vladimir A Merzliakov wrote: > >> > What makeinfo version? It works for me with makeinfo 4.0, mainline >> > (building outside source tree) and branch (building both in and out of >> > source tree), and for the automated regression tester. >> >> I also have this problem with bootstrupt current GCC3.1 CVS >> >> brain, ~/pkg/build/gcc > makeinfo --version >> makeinfo (GNU texinfo) 4.0 > > The problem appears to be nathan's patch (revision 1.27 of gcc.texi) which > added the GPL section again to gcc.texi. Why did you do this? Did "cvs > diff" not show this bogus change in the patch you were about to commit? Here's a patch to remove the GPL section again that was added accidentally. Now makinfo works again. Ok to commit? Andreas 2001-07-05 Andreas Jaeger * doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL section. Index: doc/gcc.texi =================================================================== RCS file: /cvs/gcc/egcs/gcc/doc/gcc.texi,v retrieving revision 1.27 diff -u -r1.27 gcc.texi --- gcc.texi 2001/07/04 20:06:27 1.27 +++ gcc.texi 2001/07/05 04:57:47 @@ -4241,393 +4241,6 @@ major components of the system. The system as a whole is more or less the GNU system. -@node Copying -@unnumbered GNU GENERAL PUBLIC LICENSE -@center Version 2, June 1991 - -@display -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end iftex -@ifnottex -@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -@end ifnottex - -@enumerate 0 -@item -This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The ``Program'', below, -refers to any such program or work, and a ``work based on the Program'' -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term ``modification''.) Each licensee is addressed as ``you''. - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -@item -You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -@item -You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -@enumerate a -@item -You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -@item -You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -@item -If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) -@end enumerate - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -@item -You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -@enumerate a -@item -Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -@item -Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -@item -Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) -@end enumerate - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -@item -You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -@item -If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -@item -If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifnottex -@center NO WARRANTY -@end ifnottex - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifnottex -@center END OF TERMS AND CONDITIONS -@end ifnottex - -@page -@unnumberedsec How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the ``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) @var{yyyy} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands @samp{show w} and @samp{show c} should show -the appropriate parts of the General Public License. Of course, the -commands you use may be called something other than @samp{show w} and -@samp{show c}; they could even be mouse-clicks or menu items---whatever -suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here is a sample; alter the names: - -@smallexample -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end smallexample - @include gpl.texi @c --------------------------------------------------------------------- -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj From gcc-patches-return-38063-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 05:59:52 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12659 invoked by alias); 5 Jul 2001 05:59:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12622 invoked from network); 5 Jul 2001 05:59:48 -0000 Received: from unknown (HELO dis.dis.com) (64.7.66.235) by sourceware.cygnus.com with SMTP; 5 Jul 2001 05:59:48 -0000 Received: (from mklein@localhost) by dis.dis.com (8.11.3/8.11.3) id f655xmc00908 for gcc-patches@gcc.gnu.org; Wed, 4 Jul 2001 22:59:48 -0700 (PDT) Date: Wed, 4 Jul 2001 22:59:48 -0700 (PDT) From: Mark Klein Message-Id: <200107050559.f655xmc00908@dis.dis.com> To: gcc-patches@gcc.gnu.org Subject: [PATCH] Add ffs() to libiberty. Hi! I've found a couple of instances where ffs() is required in some GNU software, most recently in gas. In those instances, I don't see that it is optional code, so I figured it was time to add it. Attached is a patch to add it to libiberty. I originally sent this to binutils but was instructed to send the patch here. Regards, M. Index: ChangeLog =================================================================== RCS file: /cvs/src/src/libiberty/ChangeLog,v retrieving revision 1.87 diff -d -r1.87 ChangeLog 0a1,6 > 2001-07-4 Mark Klein > > * Makefile.in: Add ffs.c dependency. > * configure.in: Add ffs.c. > * ffs.c: New file. > Index: Makefile.in =================================================================== RCS file: /cvs/src/src/libiberty/Makefile.in,v retrieving revision 1.22 diff -d -r1.22 Makefile.in 125c125 < cp-demangle.c dyn-string.c fdmatch.c fnmatch.c getcwd.c \ --- > cp-demangle.c dyn-string.c fdmatch.c fnmatch.c ffs.c getcwd.c \ Index: configure =================================================================== RCS file: /cvs/src/src/libiberty/configure,v retrieving revision 1.12 diff -d -r1.12 configure 1331a1332 > funcs="$funcs ffs" 1703c1704 < for ac_func in sysconf times sbrk gettimeofday --- > for ac_func in sysconf times sbrk gettimeofday ffs Index: configure.in =================================================================== RCS file: /cvs/src/src/libiberty/configure.in,v retrieving revision 1.12 diff -d -r1.12 configure.in 89a90 > funcs="$funcs ffs" 137c138 < AC_CHECK_FUNCS(sysconf times sbrk gettimeofday) --- > AC_CHECK_FUNCS(sysconf times sbrk gettimeofday ffs) ffs.c: /* ffs -- Find the first bit set in the parameter NAME ffs -- Find the first bit set in the parameter SYNOPSIS int ffs (int valu) DESCRIPTION Find the first bit set in the parameter. Bits are numbered from right to left, starting with bit 1. */ int ffs (valu) register int valu; { register int bit; if (valu == 0) return 0; for (bit = 1; !(valu & 1); bit++) valu >>= 1; return bit; } From gcc-patches-return-38064-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 06:01:43 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13444 invoked by alias); 5 Jul 2001 06:01:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13390 invoked from network); 5 Jul 2001 06:01:37 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sourceware.cygnus.com with SMTP; 5 Jul 2001 06:01:37 -0000 Received: from dot.cygnus.com (dot.cygnus.com [205.180.230.224]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id XAA23527; Wed, 4 Jul 2001 23:01:36 -0700 (PDT) Received: (from rth@localhost) by dot.cygnus.com (8.11.0/8.11.0) id f6561ZE28699; Wed, 4 Jul 2001 23:01:35 -0700 X-Authentication-Warning: dot.cygnus.com: rth set sender to rth@redhat.com using -f Date: Wed, 4 Jul 2001 23:01:35 -0700 From: Richard Henderson To: Nathan Sidwell Cc: gcc-patches@gcc.gnu.org, jason@redhat.com Subject: Re: dwarf2 long long patch Message-ID: <20010704230135.A28687@redhat.com> Mail-Followup-To: Richard Henderson , Nathan Sidwell , gcc-patches@gcc.gnu.org, jason@redhat.com References: <3B437195.125340F4@codesourcery.com> <20010704125225.A29879@redhat.com> <3B4378FE.35FF93D7@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <3B4378FE.35FF93D7@codesourcery.com>; from nathan@codesourcery.com on Wed, Jul 04, 2001 at 09:13:50PM +0100 On Wed, Jul 04, 2001 at 09:13:50PM +0100, Nathan Sidwell wrote: > I don't think your invariant holds. HOST_WIDE_INT could be 64 bits and > POINTER_SIZE (which is where DWARF2_ADDR_SIZE comes from, by default), > could be 32, for instance. So? The actual width is controled by the size argument to dw2_asm_output_data. You want to write a field of all bits set. So give dw2_asm_output_data a 64-bit word of all ones and we write out the low 32 of them. r~ From gcc-patches-return-38065-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 06:48:10 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 693 invoked by alias); 5 Jul 2001 06:48:10 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 525 invoked from network); 5 Jul 2001 06:48:09 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 5 Jul 2001 06:48:09 -0000 Received: from sossusvlei.cs.tu-berlin.de (rl@sossusvlei.cs.tu-berlin.de [130.149.19.33]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id IAA07877 for ; Thu, 5 Jul 2001 08:43:56 +0200 (MET DST) Received: (from rl@localhost) by sossusvlei.cs.tu-berlin.de (8.9.3/8.9.3) id IAA17208; Thu, 5 Jul 2001 08:43:55 +0200 (MET DST) Date: Thu, 5 Jul 2001 08:43:54 +0200 (MET DST) From: Roman Lechtchinsky X-Sender: rl@sossusvlei To: gcc-patches@gcc.gnu.org Subject: [patch] Introduce __SHRT_MAX__ Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, this patch introduces a new preprocessor symbol, __SHRT_MAX__, and defines SHRT_MAX and friends in terms of it. This is necessary for the Cray T3E port as shorts are 32 bits there. In fact, this is more or less identical to what Joseph Myers suggested in http://gcc.gnu.org/ml/gcc/2001-06/msg01549.html so the code should actually be attributed to him (the only difference is that __SHRT_MAX__ defaults to 32767 for backward compatibility). I hope this localized change is acceptable until the new glimits.h proposed by Joseph has been installed. Bootstrapped and regtested on sparc-sun-solaris2.7 with http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01619.html. Bye Roman 2001-07-03 Roman Lechtchinsky * glimits.h (__SHRT_MAX__): New. (SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX. (SHRT_MAX): Define in terms of __SHRT_MAX__. Index: glimits.h =================================================================== RCS file: /cvs/gcc/gcc/gcc/glimits.h,v retrieving revision 1.11 diff -c -3 -p -r1.11 glimits.h *** glimits.h 2001/06/26 16:56:06 1.11 --- glimits.h 2001/07/05 06:29:31 *************** *** 37,48 **** #define CHAR_MAX 127 #endif /* Minimum and maximum values a `signed short int' can hold. */ #undef SHRT_MIN ! /* For the sake of 16 bit hosts, we may not use -32768 */ ! #define SHRT_MIN (-32767-1) #undef SHRT_MAX ! #define SHRT_MAX 32767 /* Minimum and maximum values a `signed int' can hold. */ #ifndef __INT_MAX__ --- 37,51 ---- #define CHAR_MAX 127 #endif + #ifndef __SHRT_MAX__ + #define __SHRT_MAX__ 32767 + #endif + /* Minimum and maximum values a `signed short int' can hold. */ #undef SHRT_MIN ! #define SHRT_MIN (-SHRT_MAX-1) #undef SHRT_MAX ! #define SHRT_MAX __SHRT_MAX__ /* Minimum and maximum values a `signed int' can hold. */ #ifndef __INT_MAX__ *************** *** 55,64 **** /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ #undef USHRT_MAX ! #if INT_MAX < 65535 ! #define USHRT_MAX 65535U #else ! #define USHRT_MAX 65535 #endif /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ --- 58,67 ---- /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ #undef USHRT_MAX ! #if __SHRT_MAX__ == __INT_MAX__ ! #define USHRT_MAX (SHRT_MAX * 2U + 1U) #else ! #define USHRT_MAX (SHRT_MAX * 2 + 1) #endif /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ From gcc-patches-return-38066-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 06:49:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 3377 invoked by alias); 5 Jul 2001 06:49:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3326 invoked from network); 5 Jul 2001 06:49:01 -0000 Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12) by sourceware.cygnus.com with SMTP; 5 Jul 2001 06:49:01 -0000 Received: from deneb (deneb [128.130.111.2]) by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f656m8g13239; Thu, 5 Jul 2001 08:48:13 +0200 (MET DST) Date: Thu, 5 Jul 2001 08:48:08 +0200 (CEST) From: Gerald Pfeifer To: Andreas Jaeger cc: "Joseph S. Myers" , Vladimir A Merzliakov , , , Subject: Re: Bootstrap failure: doc/include/gpl.texi:1: Node `Copying' previously defined at line 4244. In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 5 Jul 2001, Andreas Jaeger wrote: > Here's a patch to remove the GPL section again that was added > accidentally. Now makinfo works again. > > Ok to commit? > Andreas > > 2001-07-05 Andreas Jaeger > > * doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL > section. I'm in a hurry and cannot check in detail, but this looks as if you could/should apply it under the obvious rule?? Gerald From gcc-patches-return-38067-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 06:52:05 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 4320 invoked by alias); 5 Jul 2001 06:52:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4260 invoked from network); 5 Jul 2001 06:52:01 -0000 Received: from unknown (HELO Cantor.suse.de) (213.95.15.193) by sourceware.cygnus.com with SMTP; 5 Jul 2001 06:52:01 -0000 Received: from Hermes.suse.de (Hermes.suse.de [213.95.15.136]) by Cantor.suse.de (Postfix) with ESMTP id CFA331E0FD; Thu, 5 Jul 2001 08:52:00 +0200 (MEST) X-Authentication-Warning: gee.suse.de: aj set sender to aj@suse.de using -f To: Gerald Pfeifer Cc: "Joseph S. Myers" , Vladimir A Merzliakov , , , Subject: Re: Bootstrap failure: doc/include/gpl.texi:1: Node `Copying' previously defined at line 4244. References: From: Andreas Jaeger Date: Thu, 05 Jul 2001 08:51:55 +0200 In-Reply-To: (Gerald Pfeifer's message of "Thu, 5 Jul 2001 08:48:08 +0200 (CEST)") Message-ID: Lines: 27 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.1 (Cuyahoga Valley) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Gerald Pfeifer writes: > On Thu, 5 Jul 2001, Andreas Jaeger wrote: >> Here's a patch to remove the GPL section again that was added >> accidentally. Now makinfo works again. >> >> Ok to commit? >> Andreas >> >> 2001-07-05 Andreas Jaeger >> >> * doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL >> section. > > I'm in a hurry and cannot check in detail, but this looks as if you > could/should apply it under the obvious rule?? It seems so - but I'm reverting parts of Nathan commit here and don't like to do this in general. Ok, I'll commit this now, Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj From gcc-patches-return-38068-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 08:20:09 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 13051 invoked by alias); 5 Jul 2001 08:20:08 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 13007 invoked from network); 5 Jul 2001 08:20:06 -0000 Received: from unknown (HELO mail.cs.tu-berlin.de) (130.149.17.13) by sourceware.cygnus.com with SMTP; 5 Jul 2001 08:20:06 -0000 Received: from sossusvlei.cs.tu-berlin.de (rl@sossusvlei.cs.tu-berlin.de [130.149.19.33]) by mail.cs.tu-berlin.de (8.9.3/8.9.3) with ESMTP id KAA18107; Thu, 5 Jul 2001 10:16:03 +0200 (MET DST) Received: (from rl@localhost) by sossusvlei.cs.tu-berlin.de (8.9.3/8.9.3) id KAA07234; Thu, 5 Jul 2001 10:16:01 +0200 (MET DST) Date: Thu, 5 Jul 2001 10:16:01 +0200 (MET DST) From: Roman Lechtchinsky X-Sender: rl@sossusvlei To: Brad Lucier cc: gcc-bugs@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: 3.1 Bootstrap failure on sparc-solaris2.8 In-Reply-To: <200107041307.f64D7ve16713@banach.math.purdue.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII > > > The error is > > > > > > __GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include -DL_floatdisf -c ../../gcc/libgcc2.c -o libgcc/./_floatdisf.o > > > ../../gcc/libgcc2.c: In function `__floatdisf': > > > ../../gcc/libgcc2.c:1129: Internal compiler error in subreg_highpart_offset, at emit-rtl.c:1180 > > > > See http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01619.html which fixes > > this and still hasn't been reviewed (just a shameless plug :-). > > This patch no longer applies cleanly to the 3.1 tree; perhaps you > can update it and resubmit it. My understanding is that patches > that fix bootstrap failures are given higher priority recently. I have updated the patch but unfortunately I can't test it because make bootstrap now aborts with ./xgcc -B./ -B/usr/local/sparc-sun-solaris2.7/bin/ -isystem /usr/local/sparc-sun-solaris2.7/include -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -fPIC -g1 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../../cvs/gcc/gcc -I../../../cvs/gcc/gcc/. -I../../../cvs/gcc/gcc/config -I../../../cvs/gcc/gcc/../include -DL_clear_cache -c ../../../cvs/gcc/gcc/libgcc2.c -o libgcc/./_clear_cache.o cc1: warning: changing search order for system directory "include" cc1: warning: as it has already been specified as a system directory ../../../cvs/gcc/gcc/libgcc2.c: In function `__clear_cache': ../../../cvs/gcc/gcc/libgcc2.c:2467: Virtual array basic_block_info[1]: element 1 out of bounds ../../../cvs/gcc/gcc/libgcc2.c:2467: confused by earlier errors, bailing out The problem is caused by this line in try_optimize_cfg: c = BASIC_BLOCK (i ? i - 1 : i + 1); This doesn't work because there is only one basic block so i+1 is out of bounds. I'll try to understand what's going on here if I have the time which is not too probable :-( Bye Roman From gcc-patches-return-38069-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 09:11:40 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 1764 invoked by alias); 5 Jul 2001 09:11:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 1652 invoked from network); 5 Jul 2001 09:11:16 -0000 Received: from unknown (HELO dire.bris.ac.uk) (137.222.10.60) by sourceware.cygnus.com with SMTP; 5 Jul 2001 09:11:16 -0000 Received: from cs.bris.ac.uk (actually host lunaleka.cs.bris.ac.uk) by dire.bris.ac.uk with SMTP-PRIV with ESMTP; Thu, 5 Jul 2001 10:11:07 +0100 Received: from manao.cs.bris.ac.uk (manao [137.222.102.67]) by cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id KAA02540; Thu, 5 Jul 2001 10:09:51 +0100 (BST) Received: from acm.org by manao.cs.bris.ac.uk (8.9.3) id KAA17044; Thu, 5 Jul 2001 10:09:50 +0100 (BST) Message-ID: <3B442EDE.F23C0CCB@acm.org> Date: Thu, 05 Jul 2001 10:09:50 +0100 From: Nathan Sidwell Reply-To: nathan@compsci.bristol.ac.uk X-Mailer: Mozilla 4.75 [en] (X11; U; SunOS 5.7 sun4u) X-Accept-Language: en MIME-Version: 1.0 To: Andreas Jaeger CC: Gerald Pfeifer , "Joseph S. Myers" , Vladimir A Merzliakov , nathan , gcc-patches Subject: Re: Bootstrap failure: doc/include/gpl.texi:1: Node `Copying' previously defined at line 4244. References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Andreas Jaeger wrote: > Ok, I'll commit this now, > Andreas Thanks for taking care of that Andreas, I flubbed merging my patch in, sorry. nathan -- Dr Nathan Sidwell :: Computer Science Department :: Bristol University Never hand someone a gun unless you are sure where they will point it nathan@acm.org http://www.cs.bris.ac.uk/~nathan/ nathan@cs.bris.ac.uk From gcc-patches-return-38070-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 09:39:55 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 26648 invoked by alias); 5 Jul 2001 09:39:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26316 invoked from network); 5 Jul 2001 09:39:51 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (137.222.102.57) by sourceware.cygnus.com with SMTP; 5 Jul 2001 09:39:51 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id KAA15369; Thu, 5 Jul 2001 10:39:54 +0100 Message-ID: <3B4435E9.D197AD84@codesourcery.com> Date: Thu, 05 Jul 2001 10:39:53 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19-6.2.7 i686) X-Accept-Language: en MIME-Version: 1.0 To: Richard Henderson CC: gcc-patches@gcc.gnu.org, jason@redhat.com Subject: Re: dwarf2 long long patch References: <3B437195.125340F4@codesourcery.com> <20010704125225.A29879@redhat.com> <3B4378FE.35FF93D7@codesourcery.com> <20010704230135.A28687@redhat.com> Content-Type: multipart/mixed; boundary="------------16E3B698C13D2E0EB497EAA7" This is a multi-part message in MIME format. --------------16E3B698C13D2E0EB497EAA7 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Richard Henderson wrote: > So? The actual width is controled by the size argument to > dw2_asm_output_data. You want to write a field of all bits > set. So give dw2_asm_output_data a 64-bit word of all ones > and we write out the low 32 of them. Oh, yes didn't see that behaviour. This is what I've installed. dw2_asm_output_data uses 8 where I think it should be BITS_PER_UNIT - separate patch coming up. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org --------------16E3B698C13D2E0EB497EAA7 Content-Type: application/octet-stream; name="dwarf.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dwarf.patch" MjAwMS0wNy0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4K CgkqIGR3YXJmMm91dC5jIChvdXRwdXRfbG9jX2xpc3QpOiBVc2UgYW4gYWxsIG9uZXMgbWFz ayBmb3IKCS50ZXh0IGFzbSBvdXRwdXQgYW5kIGRvbid0IHJlbHkgb24gbG9uZyBsb25nCgls aXRlcmFscy4gUmVmb3JtYXQgc29tZSBsb25nIGxpbmVzLgoKSW5kZXg6IGR3YXJmMm91dC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2R3YXJmMm91dC5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI4MApkaWZmIC1jIC0zIC1wIC1yMS4yODAgZHdh cmYyb3V0LmMKKioqIGR3YXJmMm91dC5jCTIwMDEvMDcvMDUgMDI6MDg6MTUJMS4yODAKLS0t IGR3YXJmMm91dC5jCTIwMDEvMDcvMDUgMDk6MjU6MTMKKioqKioqKioqKioqKioqIG91dHB1 dF9sb2NfbGlzdCAobGlzdF9oZWFkKQoqKiogNTk0Niw1OTczICoqKioKICAgIEFTTV9PVVRQ VVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbGlzdF9oZWFkLT5sbF9zeW1ib2wpOwogICAgaWYg KHN0cmNtcCAoY3Vyci0+c2VjdGlvbiwgIi50ZXh0IikgPT0gMCkKICAgICAgewohICAgICAg IGlmIChEV0FSRjJfQUREUl9TSVpFID09IDQpCiEgCWR3Ml9hc21fb3V0cHV0X2RhdGEgKERX QVJGMl9BRERSX1NJWkUsIDB4ZmZmZmZmZmYsICJMb2NhdGlvbiBsaXN0IGJhc2UgYWRkcmVz cyBzcGVjaWZpZXIgZmFrZSBlbnRyeSIpOwohICAgICAgIGVsc2UgaWYgKERXQVJGMl9BRERS X1NJWkUgPT0gOCkKISAJZHcyX2FzbV9vdXRwdXRfZGF0YSAoRFdBUkYyX0FERFJfU0laRSwg MHhmZmZmZmZmZmZmZmZmZmZmTEwsICJMb2NhdGlvbiBsaXN0IGJhc2UgYWRkcmVzcyBzcGVj aWZpZXIgZmFrZSBlbnRyeSIpOwohICAgICAgIGVsc2UKISAJYWJvcnQoKTsKISAgICAgICBk dzJfYXNtX291dHB1dF9vZmZzZXQgKERXQVJGMl9BRERSX1NJWkUsIGN1cnItPnNlY3Rpb24s ICJMb2NhdGlvbiBsaXN0IGJhc2UgYWRkcmVzcyBzcGVjaWZpZXIgYmFzZSIpOwogICAgICB9 CiAgICBmb3IgKGN1cnIgPSBsaXN0X2hlYWQ7IGN1cnIgIT0gTlVMTDsgY3Vycj1jdXJyLT5k d19sb2NfbmV4dCkKICAgICAgewogICAgICAgIGludCBzaXplOwohICAgICAgIGR3Ml9hc21f b3V0cHV0X2RlbHRhIChEV0FSRjJfQUREUl9TSVpFLCBjdXJyLT5iZWdpbiwgY3Vyci0+c2Vj dGlvbiwgIkxvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoJXMpIiwgbGlzdF9oZWFkLT5s bF9zeW1ib2wpOwohICAgICAgIGR3Ml9hc21fb3V0cHV0X2RlbHRhIChEV0FSRjJfQUREUl9T SVpFLCBjdXJyLT5lbmQsIGN1cnItPnNlY3Rpb24sICJMb2NhdGlvbiBsaXN0IGVuZCBhZGRy ZXNzICglcykiLCBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CiAgICAgICAgc2l6ZSA9IHNpemVf b2ZfbG9jcyAoY3Vyci0+ZXhwcik7CiAgICAgICAgCiAgICAgICAgLyogT3V0cHV0IHRoZSBi bG9jayBsZW5ndGggZm9yIHRoaXMgbGlzdCBvZiBsb2NhdGlvbiBvcGVyYXRpb25zLiAgKi8K ISAgICAgICBkdzJfYXNtX291dHB1dF9kYXRhIChjb25zdGFudF9zaXplIChzaXplKSwgc2l6 ZSwgIiVzIiwgIkxvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZSIpOwogICAgICAgIAogICAgICAg IG91dHB1dF9sb2Nfc2VxdWVuY2UgKGN1cnItPmV4cHIpOwogICAgICB9CiEgICBkdzJfYXNt X291dHB1dF9kYXRhIChEV0FSRl9PRkZTRVRfU0laRSwgMCwgIkxvY2F0aW9uIGxpc3QgdGVy bWluYXRvciBiZWdpbiAoJXMpIiwgbGlzdF9oZWFkLT5sbF9zeW1ib2wpOwohICAgZHcyX2Fz bV9vdXRwdXRfZGF0YSAoRFdBUkZfT0ZGU0VUX1NJWkUsIDAsICJMb2NhdGlvbiBsaXN0IHRl cm1pbmF0b3IgZW5kICglcykiLCBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CiAgfQogIC8qIE91 dHB1dCB0aGUgRElFIGFuZCBpdHMgYXR0cmlidXRlcy4gIENhbGxlZCByZWN1cnNpdmVseSB0 byBnZW5lcmF0ZQogICAgIHRoZSBkZWZpbml0aW9ucyBvZiBlYWNoIGNoaWxkIERJRS4gICov Ci0tLSA1OTQ2LDU5ODAgLS0tLQogICAgQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxl LCBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CiAgICBpZiAoc3RyY21wIChjdXJyLT5zZWN0aW9u LCAiLnRleHQiKSA9PSAwKQogICAgICB7CiEgICAgICAgLyogZHcyX2FzbV9vdXRwdXRfZGF0 YSB3aWxsIG1hc2sgb2ZmIGFueSBleHRyYSBiaXRzIGluIHRoZSB+MC4gICovCiEgICAgICAg ZHcyX2FzbV9vdXRwdXRfZGF0YSAoRFdBUkYyX0FERFJfU0laRSwgfih1bnNpZ25lZCBIT1NU X1dJREVfSU5UKTAsCiEgCQkJICAgIkxvY2F0aW9uIGxpc3QgYmFzZSBhZGRyZXNzIHNwZWNp ZmllciBmYWtlIGVudHJ5Iik7CiEgICAgICAgZHcyX2FzbV9vdXRwdXRfb2Zmc2V0IChEV0FS RjJfQUREUl9TSVpFLCBjdXJyLT5zZWN0aW9uLAohIAkJCSAgICAgIkxvY2F0aW9uIGxpc3Qg YmFzZSBhZGRyZXNzIHNwZWNpZmllciBiYXNlIik7CiAgICAgIH0KICAgIGZvciAoY3VyciA9 IGxpc3RfaGVhZDsgY3VyciAhPSBOVUxMOyBjdXJyPWN1cnItPmR3X2xvY19uZXh0KQogICAg ICB7CiAgICAgICAgaW50IHNpemU7CiEgICAgICAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKERX QVJGMl9BRERSX1NJWkUsIGN1cnItPmJlZ2luLCBjdXJyLT5zZWN0aW9uLAohIAkJCSAgICAi TG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICglcykiLAohIAkJCSAgICBsaXN0X2hlYWQt PmxsX3N5bWJvbCk7CiEgICAgICAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKERXQVJGMl9BRERS X1NJWkUsIGN1cnItPmVuZCwgY3Vyci0+c2VjdGlvbiwKISAJCQkgICAgIkxvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCVzKSIsCiEgCQkJICAgIGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsK ICAgICAgICBzaXplID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHByKTsKICAgICAgICAKICAg ICAgICAvKiBPdXRwdXQgdGhlIGJsb2NrIGxlbmd0aCBmb3IgdGhpcyBsaXN0IG9mIGxvY2F0 aW9uIG9wZXJhdGlvbnMuICAqLwohICAgICAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKGNvbnN0 YW50X3NpemUgKHNpemUpLCBzaXplLCAiJXMiLAohIAkJCSAgICJMb2NhdGlvbiBleHByZXNz aW9uIHNpemUiKTsKICAgICAgICAKICAgICAgICBvdXRwdXRfbG9jX3NlcXVlbmNlIChjdXJy LT5leHByKTsKICAgICAgfQohICAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoRFdBUkZfT0ZGU0VU X1NJWkUsIDAsCiEgCQkgICAgICAgIkxvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAo JXMpIiwKISAJCSAgICAgICBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CiEgICBkdzJfYXNtX291 dHB1dF9kYXRhIChEV0FSRl9PRkZTRVRfU0laRSwgMCwKISAJCSAgICAgICAiTG9jYXRpb24g bGlzdCB0ZXJtaW5hdG9yIGVuZCAoJXMpIiwKISAJCSAgICAgICBsaXN0X2hlYWQtPmxsX3N5 bWJvbCk7CiAgfQogIC8qIE91dHB1dCB0aGUgRElFIGFuZCBpdHMgYXR0cmlidXRlcy4gIENh bGxlZCByZWN1cnNpdmVseSB0byBnZW5lcmF0ZQogICAgIHRoZSBkZWZpbml0aW9ucyBvZiBl YWNoIGNoaWxkIERJRS4gICovCg== --------------16E3B698C13D2E0EB497EAA7-- From gcc-patches-return-38071-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 10:01:30 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 3457 invoked by alias); 5 Jul 2001 10:01:25 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3355 invoked from network); 5 Jul 2001 10:01:20 -0000 Received: from unknown (HELO uha.cs.bris.ac.uk) (137.222.102.57) by sourceware.cygnus.com with SMTP; 5 Jul 2001 10:01:20 -0000 Received: from codesourcery.com (IDENT:nathan@localhost.localdomain [127.0.0.1]) by uha.cs.bris.ac.uk (8.9.3/8.9.3) with ESMTP id LAA17791; Thu, 5 Jul 2001 11:01:21 +0100 Message-ID: <3B443AF0.D7E9A7DE@codesourcery.com> Date: Thu, 05 Jul 2001 11:01:20 +0100 From: Nathan Sidwell Organization: Codesourcery LLC X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19-6.2.7 i686) X-Accept-Language: en MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org CC: aoliva@redhat.com, dj@redhat.com Subject: -B foo does -isystem foo/include Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, this is a chase up of http://gcc.gnu.org/ml/gcc-patches/2001-06/threads.html#01844 and its continuation in july at, http://gcc.gnu.org/ml/gcc-patches/2001-07/threads.html#00039 Which way do we want to resolve this? a) the patch which removes the -isystem from gcc's Makefile b) a patch which stopped -B foo searching in foo/include (and adjusted the docs). I have no preference for either choice, I just think it should be fixed. Let me know which way. nathan -- Dr Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC 'But that's a lie.' - 'Yes it is. What's your point?' nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org From gcc-patches-return-38072-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 12:33:20 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 12872 invoked by alias); 5 Jul 2001 12:33:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 12248 invoked from network); 5 Jul 2001 12:31:56 -0000 Received: from unknown (HELO cse.cygnus.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 5 Jul 2001 12:31:56 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f65CUoe15302; Thu, 5 Jul 2001 13:30:50 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f Original-Sender: jason@localhost.localdomain To: Nathan Sidwell Cc: gcc-patches@gcc.gnu.org Subject: Re: Unreviewd -frepo patch References: <3B3C77E9.B59BA9E5@codesourcery.com> From: Jason Merrill In-Reply-To: <3B3C77E9.B59BA9E5@codesourcery.com> (Nathan Sidwell's message of "Fri, 29 Jun 2001 13:43:21 +0100") Date: 29 Jun 2001 16:25:57 +0100 Message-ID: Lines: 1 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii OK. From gcc-patches-return-38073-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 13:04:04 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 8118 invoked by alias); 5 Jul 2001 13:04:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 8094 invoked from network); 5 Jul 2001 13:04:02 -0000 Received: from unknown (HELO gemma.TechFak.Uni-Bielefeld.DE) (129.70.136.103) by sourceware.cygnus.com with SMTP; 5 Jul 2001 13:04:02 -0000 Received: from xayide.TechFak.Uni-Bielefeld.DE (xayide.TechFak.Uni-Bielefeld.DE [129.70.137.35]) by gemma.TechFak.Uni-Bielefeld.DE (8.9.1/8.9.1/TechFak/pk+ro20000427) with ESMTP id PAA01099; Thu, 5 Jul 2001 15:04:00 +0200 (MET DST) Received: by xayide.TechFak.Uni-Bielefeld.DE (8.10.2+Sun/pk19971205) id f65D3xX00590; Thu, 5 Jul 2001 15:03:59 +0200 (MEST) From: Rainer Orth Message-ID: <15172.26046.233597.214390@xayide.TechFak.Uni-Bielefeld.DE> Date: Thu, 5 Jul 2001 15:03:58 +0200 (MEST) To: Gerald Pfeifer Cc: Subject: Re: 3.0.1 PATCH: Fixes for install.texi host/target section In-Reply-To: References: <15171.23609.153871.389963@xayide.TechFak.Uni-Bielefeld.DE> X-Mailer: VM 6.62 under Emacs 19.34.1 Mime-Version: 1.0 (generated by tm-edit 7.106) Content-Type: text/plain; charset=US-ASCII Gerald Pfeifer writes: > > Tested with texi2dvi and makeinfo. Ok for branch and mainline? > > Yes, please. Thanks, installed. > @command{as} and @command{ld} here? Indeed, fixed (together with three other instances). > PS: It would be a bit easier to review such patches if you could split > them a bit. In this case, you could have committed the "Fixed sorting" > part as an obvious fix first, for example. Ok, will do. I'll have to keep intermediate copies around to be able to provide clean diffs containing only a single set of changes. Rainer ----------------------------------------------------------------------------- Rainer Orth, Faculty of Technology, Bielefeld University Email: ro@TechFak.Uni-Bielefeld.DE From gcc-patches-return-38074-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 13:20:16 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 16699 invoked by alias); 5 Jul 2001 13:20:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 16633 invoked from network); 5 Jul 2001 13:20:14 -0000 Received: from unknown (HELO usc.edu) (128.125.253.136) by sourceware.cygnus.com with SMTP; 5 Jul 2001 13:20:14 -0000 Received: from milly.usc.edu (lerdsuwa@milly.usc.edu [128.125.71.8]) by usc.edu (8.9.3.1/8.9.3/usc) with ESMTP id GAA06994 for ; Thu, 5 Jul 2001 06:20:12 -0700 (PDT) Received: from localhost (lerdsuwa@localhost) by milly.usc.edu (8.9.3.1/8.9.3/usc) with ESMTP id GAA18826 for ; Thu, 5 Jul 2001 06:20:11 -0700 (PDT) X-Authentication-Warning: milly.usc.edu: lerdsuwa owned process doing -bs Date: Thu, 5 Jul 2001 06:20:10 -0700 (PDT) From: Kriang Lerdsuwanakij To: gcc-patches@gcc.gnu.org Subject: [C++ PATCH] Template template parm: Remove obsoleted code Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi The included patch remove some obsoleted code that was previously required for dealing with obstack memory management. Some template template parameter node needed to be copied from other obstack to permanent obstack. The new garbage collection scheme eliminate the need for this. So I rearrange the "copy_template_template_parm" function to remove the functionality and rename it to "bind_template_template_parm" to reflect the sole functionality left. Tested with i686-pc-linux-gnu with no regressions. OK to commit to the main trunk? --Kriang 2001-07-05 Kriang Lerdsuwanakij * cp-tree.h (copy_template_template_parm): Rename to ... (bind_template_template_parm): ... here. * tree.c (copy_template_template_parm): Rename to ... (bind_template_template_parm): ... here. Remove the case when NEWARGS is NULL_TREE. (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and BOUND_TEMPLATE_TEMPLATE_PARM. * pt.c (lookup_template_class): Adjust. diff -cprN gcc-main-save/gcc/cp/cp-tree.h gcc-main-new/gcc/cp/cp-tree.h *** gcc-main-save/gcc/cp/cp-tree.h Fri Jun 29 21:10:31 2001 --- gcc-main-new/gcc/cp/cp-tree.h Thu Jul 5 19:43:02 2001 *************** extern int promotes_to_aggr_type PARAMS *** 4354,4360 **** extern int is_aggr_type_2 PARAMS ((tree, tree)); extern const char *lang_printable_name PARAMS ((tree, int)); extern tree build_exception_variant PARAMS ((tree, tree)); ! extern tree copy_template_template_parm PARAMS ((tree, tree)); extern tree array_type_nelts_total PARAMS ((tree)); extern tree array_type_nelts_top PARAMS ((tree)); extern tree break_out_target_exprs PARAMS ((tree)); --- 4354,4360 ---- extern int is_aggr_type_2 PARAMS ((tree, tree)); extern const char *lang_printable_name PARAMS ((tree, int)); extern tree build_exception_variant PARAMS ((tree, tree)); ! extern tree bind_template_template_parm PARAMS ((tree, tree)); extern tree array_type_nelts_total PARAMS ((tree)); extern tree array_type_nelts_top PARAMS ((tree)); extern tree break_out_target_exprs PARAMS ((tree)); diff -cprN gcc-main-save/gcc/cp/pt.c gcc-main-new/gcc/cp/pt.c *** gcc-main-save/gcc/cp/pt.c Thu Jun 14 19:59:36 2001 --- gcc-main-new/gcc/cp/pt.c Thu Jul 5 19:43:27 2001 *************** lookup_template_class (d1, arglist, in_d *** 3912,3919 **** if (arglist2 == error_mark_node) return error_mark_node; ! parm = copy_template_template_parm (TREE_TYPE (template), arglist2); ! TYPE_SIZE (parm) = 0; return parm; } else --- 3912,3918 ---- if (arglist2 == error_mark_node) return error_mark_node; ! parm = bind_template_template_parm (TREE_TYPE (template), arglist2); return parm; } else diff -cprN gcc-main-save/gcc/cp/tree.c gcc-main-new/gcc/cp/tree.c *** gcc-main-save/gcc/cp/tree.c Wed May 23 02:41:55 2001 --- gcc-main-new/gcc/cp/tree.c Thu Jul 5 19:43:27 2001 *************** build_exception_variant (type, raises) *** 1112,1158 **** return v; } ! /* Given a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM ! node T, create a new one together with its ! lang_specific field and its corresponding *_DECL node. ! If NEWARGS is not NULL_TREE, this parameter is bound with new set of arguments. */ tree ! copy_template_template_parm (t, newargs) tree t; tree newargs; { tree decl = TYPE_NAME (t); tree t2; ! if (newargs == NULL_TREE) ! { ! t2 = make_aggr_type (TREE_CODE (t)); ! decl = copy_decl (decl); ! /* No need to copy these. */ ! TEMPLATE_TYPE_PARM_INDEX (t2) = TEMPLATE_TYPE_PARM_INDEX (t); ! TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2) ! = TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t); ! } ! else ! { ! t2 = make_aggr_type (BOUND_TEMPLATE_TEMPLATE_PARM); ! decl = build_decl (TYPE_DECL, DECL_NAME (decl), NULL_TREE); ! ! /* These nodes have to be created to reflect new TYPE_DECL and template ! arguments. */ ! TEMPLATE_TYPE_PARM_INDEX (t2) = copy_node (TEMPLATE_TYPE_PARM_INDEX (t)); ! TEMPLATE_PARM_DECL (TEMPLATE_TYPE_PARM_INDEX (t2)) = decl; ! TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2) ! = tree_cons (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL (t), ! newargs, NULL_TREE); ! } TREE_TYPE (decl) = t2; TYPE_NAME (t2) = decl; TYPE_STUB_DECL (t2) = decl; return t2; } --- 1112,1144 ---- return v; } ! /* Given a TEMPLATE_TEMPLATE_PARM node T, create a new ! BOUND_TEMPLATE_TEMPLATE_PARM bound with NEWARGS as its template arguments. */ tree ! bind_template_template_parm (t, newargs) tree t; tree newargs; { tree decl = TYPE_NAME (t); tree t2; ! t2 = make_aggr_type (BOUND_TEMPLATE_TEMPLATE_PARM); ! decl = build_decl (TYPE_DECL, DECL_NAME (decl), NULL_TREE); ! /* These nodes have to be created to reflect new TYPE_DECL and template ! arguments. */ ! TEMPLATE_TYPE_PARM_INDEX (t2) = copy_node (TEMPLATE_TYPE_PARM_INDEX (t)); ! TEMPLATE_PARM_DECL (TEMPLATE_TYPE_PARM_INDEX (t2)) = decl; ! TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO (t2) ! = tree_cons (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL (t), ! newargs, NULL_TREE); TREE_TYPE (decl) = t2; TYPE_NAME (t2) = decl; TYPE_STUB_DECL (t2) = decl; + TYPE_SIZE (t2) = 0; return t2; } *************** copy_tree_r (tp, walk_subtrees, data) *** 1564,1573 **** if (TREE_CODE (*tp) == SCOPE_STMT) SCOPE_STMT_BLOCK (*tp) = NULL_TREE; } - else if (code == TEMPLATE_TEMPLATE_PARM - || code == BOUND_TEMPLATE_TEMPLATE_PARM) - /* These must be copied specially. */ - *tp = copy_template_template_parm (*tp, NULL_TREE); else if (TREE_CODE_CLASS (code) == 't') /* There's no need to copy types, or anything beneath them. */ *walk_subtrees = 0; --- 1550,1555 ---- From gcc-patches-return-38075-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 15:30:56 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 7594 invoked by alias); 5 Jul 2001 15:30:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 7514 invoked from network); 5 Jul 2001 15:30:52 -0000 Received: from unknown (HELO cse.cygnus.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 5 Jul 2001 15:30:52 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f65FTdm25266; Thu, 5 Jul 2001 16:29:39 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Gcc Patch List Subject: C++ PATCH to synthesized copy constructors From: Jason Merrill Date: 05 Jul 2001 16:29:39 +0100 Message-ID: Lines: 182 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= While looking at the named return value optimization, I noticed that g++.mike/p2846.C was broken in an unexpected way; the synthesized B copy constructor was calling the A constructor that takes a const B&, rather than the A copy constructor. This was also broken in 2.95. Applied to trunk. 2001-07-05 Jason Merrill * cvt.c (convert_lvalue): New fn. * cp-tree.h: Declare it. * method.c (do_build_assign_ref): Use it. (do_build_copy_constructor): Convert parm to base types before calling base constructors. --=-=-= Content-Type: text/x-patch Content-Disposition: inline *** cvt.c.~1~ Fri May 18 10:18:57 2001 --- cvt.c Thu Jul 5 15:06:25 2001 *************** convert_from_reference (val) *** 597,602 **** --- 597,616 ---- return build_indirect_ref (val, NULL); return val; } + + /* Implicitly convert the lvalue EXPR to another lvalue of type TOTYPE, + preserving cv-qualification. */ + + tree + convert_lvalue (totype, expr) + tree totype, expr; + { + totype = cp_build_qualified_type (totype, TYPE_QUALS (TREE_TYPE (expr))); + totype = build_reference_type (totype); + expr = convert_to_reference (totype, expr, CONV_IMPLICIT, LOOKUP_NORMAL, + NULL_TREE); + return convert_from_reference (expr); + } /* Call this when we know (for any reason) that expr is not, in fact, zero. This routine is like convert_pointer_to, but it pays *** cp-tree.h.~1~ Mon Jul 2 16:06:05 2001 --- cp-tree.h Tue Jul 3 18:04:22 2001 *************** extern tree get_primary_binfo *** 3735,3740 **** --- 3735,3741 ---- /* in cvt.c */ extern tree convert_to_reference PARAMS ((tree, tree, int, int, tree)); extern tree convert_from_reference PARAMS ((tree)); + extern tree convert_lvalue PARAMS ((tree, tree)); extern tree convert_pointer_to_real PARAMS ((tree, tree)); extern tree convert_pointer_to PARAMS ((tree, tree)); extern tree ocp_convert PARAMS ((tree, tree, int, int)); *** method.c.~1~ Wed Jun 6 22:55:10 2001 --- method.c Thu Jul 5 15:05:01 2001 *************** do_build_copy_constructor (fndecl) *** 557,581 **** int cvquals = CP_TYPE_QUALS (TREE_TYPE (parm)); int i; ! /* Initialize all the base-classes. */ for (t = CLASSTYPE_VBASECLASSES (current_class_type); t; t = TREE_CHAIN (t)) ! base_init_list ! = tree_cons (BINFO_TYPE (TREE_VALUE (t)), parm, ! base_init_list); for (i = 0; i < n_bases; ++i) { t = TREE_VEC_ELT (binfos, i); if (TREE_VIA_VIRTUAL (t)) continue; ! base_init_list ! = tree_cons (BINFO_TYPE (t), parm, base_init_list); } for (; fields; fields = TREE_CHAIN (fields)) { ! tree init, t; tree field = fields; if (TREE_CODE (field) != FIELD_DECL) --- 557,587 ---- int cvquals = CP_TYPE_QUALS (TREE_TYPE (parm)); int i; ! /* Initialize all the base-classes with the parameter converted to ! their type so that we get their copy constructor and not another ! constructor that takes current_class_type. */ for (t = CLASSTYPE_VBASECLASSES (current_class_type); t; t = TREE_CHAIN (t)) ! { ! tree type = BINFO_TYPE (TREE_VALUE (t)); ! base_init_list = tree_cons (type, convert_lvalue (type, parm), ! base_init_list); ! } ! for (i = 0; i < n_bases; ++i) { t = TREE_VEC_ELT (binfos, i); if (TREE_VIA_VIRTUAL (t)) continue; ! t = BINFO_TYPE (t); ! base_init_list = tree_cons (t, convert_lvalue (t, parm), ! base_init_list); } for (; fields; fields = TREE_CHAIN (fields)) { ! tree init; tree field = fields; if (TREE_CODE (field) != FIELD_DECL) *************** do_build_assign_ref (fndecl) *** 645,656 **** for (i = 0; i < n_bases; ++i) { tree basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i)); ! tree p = build_qualified_type (basetype, cvquals); ! ! p = convert_to_reference ! (build_reference_type (p), parm, ! CONV_IMPLICIT, LOOKUP_COMPLAIN, NULL_TREE); ! p = convert_from_reference (p); p = build_member_call (basetype, ansi_assopname (NOP_EXPR), build_tree_list (NULL_TREE, p)); finish_expr_stmt (p); --- 651,657 ---- for (i = 0; i < n_bases; ++i) { tree basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i)); ! tree p = convert_lvalue (basetype, parm); p = build_member_call (basetype, ansi_assopname (NOP_EXPR), build_tree_list (NULL_TREE, p)); finish_expr_stmt (p); *** testsuite/g++.old-deja/g++.mike/p2846.C.~1~ Thu Dec 17 21:20:29 1998 --- testsuite/g++.old-deja/g++.mike/p2846.C Tue Jul 3 17:48:58 2001 *************** extern "C" void exit(int); *** 6,11 **** --- 6,13 ---- class A; class B; + int c; + class A { public: *************** public: *** 30,35 **** --- 32,38 ---- virtual ~B(void){} void print(void) const { + ++c; printf("B::print\n"); } *************** int main () *** 50,55 **** { A titi; A toto = titi.compute(); ! printf("PASS\n"); ! return 0; } --- 53,66 ---- { A titi; A toto = titi.compute(); ! if (c != 1) ! { ! printf ("FAIL\n"); ! return 1; ! } ! else ! { ! printf("PASS\n"); ! return 0; ! } } --=-=-=-- From gcc-patches-return-38076-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 15:37:50 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 11265 invoked by alias); 5 Jul 2001 15:37:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 11213 invoked from network); 5 Jul 2001 15:37:46 -0000 Received: from unknown (HELO cse.cygnus.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 5 Jul 2001 15:37:46 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f65FaUn25276; Thu, 5 Jul 2001 16:36:30 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Gcc Patch List Subject: C++ PATCH to NRV optimization From: Jason Merrill Date: 05 Jul 2001 16:36:30 +0100 Message-ID: Lines: 80 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= It seems I didn't test my earlier patch well enough; it never actually had any effect. This turned out to be because TYPE_USER_ALIGN is set for all structs, which propagates to all objects of class type. This seems rather broken to me; I don't see any reason why it should be set automatically in finalize_record_size, nor do I think DECL_USER_ALIGN should be set if TYPE_USER_ALIGN is set on the type of a _DECL. But I'm not going to go into that now. This patch avoids that issue by just checking that the alignment matches, and also fixes a bug whereby we were inappropriately destroying the return value at the end of the function. g++.mike/p2846.C caught this bug. (Gaby: I haven't had a chance to look at your patch yet. Soon.) 2001-07-05 Jason Merrill * typeck.c (check_return_expr): Check DECL_ALIGN instead of DECL_USER_ALIGN. Check flag_elide_constructors instead of optimize. * semantics.c (cp_expand_stmt): Don't destroy the named return value. --=-=-= Content-Type: text/x-patch Content-Disposition: inline *** typeck.c.~1~ Mon Jul 2 16:20:20 2001 --- typeck.c Mon Jul 2 16:06:06 2001 *************** check_return_expr (retval) *** 6684,6690 **** returned expression uses the chosen variable somehow. And people expect this restriction, anyway. (jason 2000-11-19) */ ! if (fn_returns_value_p && optimize) { if (retval != NULL_TREE && (current_function_return_value == NULL_TREE --- 6684,6690 ---- returned expression uses the chosen variable somehow. And people expect this restriction, anyway. (jason 2000-11-19) */ ! if (fn_returns_value_p && flag_elide_constructors) { if (retval != NULL_TREE && (current_function_return_value == NULL_TREE *************** check_return_expr (retval) *** 6692,6698 **** && TREE_CODE (retval) == VAR_DECL && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) ! && ! DECL_USER_ALIGN (retval) && same_type_p (TREE_TYPE (retval), TREE_TYPE (TREE_TYPE (current_function_decl)))) current_function_return_value = retval; --- 6692,6699 ---- && TREE_CODE (retval) == VAR_DECL && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) ! && (DECL_ALIGN (retval) ! == DECL_ALIGN (DECL_RESULT (current_function_decl))) && same_type_p (TREE_TYPE (retval), TREE_TYPE (TREE_TYPE (current_function_decl)))) current_function_return_value = retval; *** semantics.c.~1~ Mon Jul 2 16:06:06 2001 --- semantics.c Thu Jul 5 14:04:33 2001 *************** cp_expand_stmt (t) *** 2156,2162 **** switch (TREE_CODE (t)) { case CLEANUP_STMT: ! genrtl_decl_cleanup (CLEANUP_DECL (t), CLEANUP_EXPR (t)); break; case CTOR_STMT: --- 2156,2164 ---- switch (TREE_CODE (t)) { case CLEANUP_STMT: ! /* Don't destroy the chosen named return value. */ ! if (CLEANUP_DECL (t) != current_function_return_value) ! genrtl_decl_cleanup (CLEANUP_DECL (t), CLEANUP_EXPR (t)); break; case CTOR_STMT: --=-=-=-- From gcc-patches-return-38077-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 15:46:00 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 18779 invoked by alias); 5 Jul 2001 15:45:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 18683 invoked from network); 5 Jul 2001 15:45:57 -0000 Received: from unknown (HELO cse.cygnus.com) (195.224.55.237) by sourceware.cygnus.com with SMTP; 5 Jul 2001 15:45:57 -0000 Received: (from jason@localhost) by cse.cygnus.com (8.11.2/8.11.2) id f65FdXs25300; Thu, 5 Jul 2001 16:39:33 +0100 X-Authentication-Warning: localhost.localdomain: jason set sender to jason_merrill@redhat.com using -f To: Kriang Lerdsuwanakij Cc: gcc-patches@gcc.gnu.org Subject: Re: [C++ PATCH] Template template parm: Remove obsoleted code References: From: Jason Merrill In-Reply-To: (Kriang Lerdsuwanakij's message of "Thu, 5 Jul 2001 06:20:10 -0700 (PDT)") Date: 05 Jul 2001 16:39:33 +0100 Message-ID: Lines: 1 User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii OK. From gcc-patches-return-38078-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Thu Jul 05 16:06:51 2001 Return-Path: Delivered-To: listarch-gcc-patches@gcc.gnu.org Received: (qmail 30441 invoked by alias); 5 Jul 2001 16:06:50 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30400 invoked from network); 5 Jul 2001 16:06:47 -0000 Received: from unknown (HELO new-smtp2.ihug.com.au) (203.109.250.28) by sourceware.cygnus.com with SMTP; 5 Jul 2001 16:06:47 -0000 Received: from ihug.com.au (IDENT:root@p30-max9.syd.ihug.com.au [203.173.156.222]) by new-smtp2.ihug.com.au (8.9.3/8.9.3) with ESMTP id CAA14115; Fri, 6 Jul 2001 02:05:52 +1000 X-Authentication-Warning: new-smtp2.ihug.com.au: Host IDENT:root@p30-max9.syd.ihug.com.au [203.173.156.222] claimed to be ihug.com.au Received: (from rich@localhost) by ihug.com.au (8.11.0/8.11.0) id f65GFjL09508; Fri, 6 Jul 2001 02:15:45 +1000 To: Cc: Gerald Pfeifer Subject: PATCH: faq.html, bugs.html References: From: Rich Churcher Date: 06 Jul 2001 02:15:44 +1000 In-Reply-To: Message-ID: Lines: 70 User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Gerald Pfeifer writes: > On Thu, 5 Jul 2001 churcher@ihug.com.au wrote: > > 1. Would you like all three of the other questions in the "bugs and > > non-bugs" section moved out of the FAQ and into bugs.html? > > Glad you're asking. :-) Yes. > > > 2. In bugs.html I find the use of the definition list (
    ) to be rather > > difficult to read. May I suggest the following: > > You mean, formatting the HTML source differently? Personally, I find it > easier to read what we currently have, but for example you could add some > comment > > +