From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19073 invoked by alias); 1 Mar 2002 23:16:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 19031 invoked by uid 71); 1 Mar 2002 23:16:01 -0000 Date: Fri, 01 Mar 2002 15:16:00 -0000 Message-ID: <20020301231601.19030.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Neil Booth Subject: Re: preprocessor/5806: The preprocessor evaluates expression s in 64-bit, violating IS C++ 16.1.4 Reply-To: Neil Booth X-SW-Source: 2002-03/txt/msg00014.txt.bz2 List-Id: The following reply was made to PR preprocessor/5806; it has been noted by GNATS. From: Neil Booth To: Zack Weinberg Cc: eric_dana@bmc.com, gcc-gnats@gcc.gnu.org, dick_schoeller@bmc.com Subject: Re: preprocessor/5806: The preprocessor evaluates expression s in 64-bit, violating IS C++ 16.1.4 Date: Fri, 1 Mar 2002 23:13:14 +0000 Zack Weinberg wrote:- > The preprocessor ought to do this only in C99 mode; in C++ and > presumably also C89 mode (I don't have a copy of C89 to check) it > should use long/unsigned long, which may be 32 bits wide on some > targets. Unfortunately, doing this properly requires substantial > changes to GCC, which are planned, but not currently practical. > (We're already not quite compliant; preprocessor arithmetic uses the > _host's_ idea of intmax_t, not the target's.) > > Neil - as a stopgap, it occurs to me that we could mask intermediate > values down to 32 bits when in C89/C++ mode and sizeof(target unsigned > long) == 4. Thoughts? Sounds OK to me. Like you, I have the C++ and C99 standards, but no C89 lying around. I do believe that the C++ preprocessor section was copied almost verbatim (with some changes for bool and true / false) from C89 though. Neil.