From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12432 invoked by alias); 2 Jan 2012 12:13:57 -0000 Received: (qmail 12422 invoked by uid 22791); 2 Jan 2012 12:13:55 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_LC,TW_XL X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Jan 2012 12:13:43 +0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/51730] New: [4.7 Regression] autoconf 2.60 through 2.67 stdbool.h check fails with GCC 4.7 Date: Mon, 02 Jan 2012 12:13:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-01/txt/msg00091.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51730 Bug #: 51730 Summary: [4.7 Regression] autoconf 2.60 through 2.67 stdbool.h check fails with GCC 4.7 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned@gcc.gnu.org ReportedBy: jakub@gcc.gnu.org CC: jsm28@gcc.gnu.org During a distro mass rebuild, I found that many packages still have configure generated with autoconf 2.60 through 2.67, and these autoconf contain a not strictly valid C: /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 reported by James Lemley on 2005-10-05; see http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html This test is not quite right, since xlc is allowed to reject this program, as the initializer for xlcbug is not one of the forms that C requires support for. However, doing the test right would require a runtime test, and that would make cross-compilation harder. Let us hope that IBM fixes the xlc bug, and also adds support for this kind of constant expression. In the meantime, this test will reject xlc, which is OK, since our stdbool.h substitute should suffice. We also test this with GCC, where it should work, to detect more quickly whether someone messes up the test in the future. */ char digs[] = "0123456789"; int xlcbug = 1 / (&(digs + 5)[-2 + (_Bool) 1] == &digs[4] ? 1 : -1); check. Until http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172958 GCC has been accepting this though, and I suppose we don't want to fold array refs that way when generating code. Would it be possible to fold it that way (try harder) just when we know we are not going to generate code based on it (or when we know we'd error out otherwise)? I know it sounds like an ugly hack, unfortunately autoconf 2.6[0-7] generated configure scripts are going to be around for many years and the stdbool.h checks would fail in hundreds of packages.