From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25061 invoked by alias); 16 Jul 2002 08:41:43 -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 25041 invoked by uid 61); 16 Jul 2002 08:41:43 -0000 Date: Tue, 16 Jul 2002 01:41:00 -0000 Message-ID: <20020716084143.25040.qmail@sources.redhat.com> To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, lprimak@hope.nyc.ny.us, nobody@gcc.gnu.org From: nathan@gcc.gnu.org Reply-To: nathan@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, lprimak@hope.nyc.ny.us, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c++/7322: Code to Compute Numeric Limits "runs away" when -O used X-SW-Source: 2002-07/txt/msg00485.txt.bz2 List-Id: Synopsis: Code to Compute Numeric Limits "runs away" when -O used State-Changed-From-To: open->closed State-Changed-By: nathan State-Changed-When: Tue Jul 16 01:41:42 2002 State-Changed-Why: The code is ill formed. There are tests such as if (T (max + 1) > max) where max & T are signed types. [5]/5 says that if the result is not in the range if representable values, the behaviour is undefined. gcc implements modulo arithmetic for unsigned types, and undefined behaviour for signed types. The optimized therefore knows that max + 1 must always be greater than max. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7322