From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7488 invoked by alias); 7 Oct 2002 10:26:04 -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 7474 invoked by uid 71); 7 Oct 2002 10:26:03 -0000 Date: Mon, 07 Oct 2002 03:26:00 -0000 Message-ID: <20021007102603.7473.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Neil Booth Subject: Re: preprocessor/8139: Bad new INT64_C macro Reply-To: Neil Booth X-SW-Source: 2002-10/txt/msg00248.txt.bz2 List-Id: The following reply was made to PR preprocessor/8139; it has been noted by GNATS. From: Neil Booth To: Philippe RIBET Cc: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org Subject: Re: preprocessor/8139: Bad new INT64_C macro Date: Mon, 7 Oct 2002 11:17:48 +0100 Philippe RIBET wrote:- > >What is the new definition? What is this macro? > > Old macro was: > > # if __WORDSIZE == 64 > # define INT64_C(c) c ## L > # else > # define INT64_C(c) c ## LL > # endif > > New macro is: > #define INT64_C(val) (INT_LEAST64_MAX-INT_LEAST64_MAX+(val)) But what is defining this macro? GCC, or your system? I don't think it really matters, though. Remember that with the new macro the token does not have L or LL appended, and therefore has type int (before promotions) in an arithmetic expression. This is what is causing the warning - the integer is too big. You should probably add L or LL as appropriate to your constants. Neil.