From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15250 invoked by alias); 25 May 2004 01:01:39 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 15243 invoked by uid 48); 25 May 2004 01:01:38 -0000 Date: Tue, 25 May 2004 22:19:00 -0000 From: "flash at pobox dot com" To: gcc-bugs@gcc.gnu.org Message-ID: <20040525010134.15642.flash@pobox.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug preprocessor/15642] New: NAN Is Not a Constant Because __APPLE_CC__ is Not Defined (OK in Apple 3.3.0) X-Bugzilla-Reason: CC X-SW-Source: 2004-05/txt/msg02839.txt.bz2 List-Id: The following code give "error: initializer element is not constant" with gcc 3.4.0 in C99 mode on OSX 10.3.3. It compiled as expected with gcc 3.3 from Apple's X-Code 1.2. Section 7.12[5] of the C99 spec says that NAN expands to a constant expression. #include const volatile static float arg2_float_23 = NAN; Similar results when I hard-coded the path to the 3.4.0 version of math.h; session below, and I'll attach the preprocessed file, which did indeed fail to define NAN as a constant. The problem seems to be that __APPLE_CC__ is no longer defined in 3.4.0 (though __APPLE__ still is); but the math.h with 3.4.0 (built from the gnu sources) still depends on it: #if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345) #define NAN __builtin_nanf("0x7fc00000") /* Constant expression, can be used as initializer. */ #else #define NAN __nan( ) #endif Adding "-D__APPLE_CC__=1642" to the command line worked around the problem. Here are the diffs between the predefined macros in the two versions; the other ones look fairly innocuous, except perhaps for __GXX_ABI_VERSION, which I don't understand. 3d2 < #define __APPLE_CC__ 1640 10a10,11 > #define __DBL_HAS_INFINITY__ 1 > #define __DBL_HAS_QUIET_NAN__ 1 24a26,27 > #define __FLT_HAS_INFINITY__ 1 > #define __FLT_HAS_QUIET_NAN__ 1 33c36 < #define __GNUC_MINOR__ 3 --- > #define __GNUC_MINOR__ 4 36c39 < #define __GXX_ABI_VERSION 102 --- > #define __GXX_ABI_VERSION 1002 40a44,45 > #define __LDBL_HAS_INFINITY__ 1 > #define __LDBL_HAS_QUIET_NAN__ 1 63c68 < #define __VERSION__ "3.3 20030304 (Apple Computer, Inc. build 1640)" --- > #define __VERSION__ "3.4.0" - - - /usr/local/gcc34/bin/gcc -std=c99 -pedantic -lmx -funsigned-char -v -save-temps -c ../c/noerror/ bugfiles/gcc_bugfiles/warn/NAN_not_const-full-path.c Reading specs from /usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/specs Configured with: configure --prefix=/usr/local/gcc34 Thread model: posix gcc version 3.4.0 /usr/local/gcc34/libexec/gcc/powerpc-apple-darwin7.3.0/3.4.0/cc1 -E -quiet -v -D__DYNAMIC__ ../ c/noerror/bugfiles/gcc_bugfiles/warn/NAN_not_const-full-path.c -fPIC -std=c99 -pedantic -funsigned-char -o NAN_not_const-full-path.i ignoring nonexistent directory "/usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/../../../../ powerpc-apple-darwin7.3.0/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/local/gcc34/include /usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/include /usr/include End of search list. /usr/local/gcc34/libexec/gcc/powerpc-apple-darwin7.3.0/3.4.0/cc1 -fpreprocessed NAN_not_const- full-path.i -fPIC -quiet -dumpbase NAN_not_const-full-path.c -auxbase NAN_not_const-full-path -pedantic -std=c99 -version -funsigned-char -o NAN_not_const-full-path.s GNU C version 3.4.0 (powerpc-apple-darwin7.3.0) compiled by GNU C version 3.3 20030304 (Apple Computer, Inc. build 1495). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ../c/noerror/bugfiles/gcc_bugfiles/warn/NAN_not_const-full-path.c:2: error: initializer element is not constant -- Summary: NAN Is Not a Constant Because __APPLE_CC__ is Not Defined (OK in Apple 3.3.0) Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: preprocessor AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: flash at pobox dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: powerpc-apple-darwin7.3.0/3.4.0 GCC host triplet: powerpc-apple-darwin7.3.0/3.4.0 (-- prefix=/usr/local/gcc34) GCC target triplet: powerpc-apple-darwin7.3.0/3.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15642