From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18370 invoked by alias); 30 Dec 2002 03:16:00 -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 18356 invoked by uid 71); 30 Dec 2002 03:16:00 -0000 Date: Sun, 29 Dec 2002 19:16:00 -0000 Message-ID: <20021230031600.18355.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Segher Boessenkool Subject: Re: optimization/7726: Fails to produce the correct implementation-dependantoutput for loop optimization under x86 -> optimizes away a loop that shouldcomplete Reply-To: Segher Boessenkool X-SW-Source: 2002-12/txt/msg01403.txt.bz2 List-Id: The following reply was made to PR optimization/7726; it has been noted by GNATS. From: Segher Boessenkool To: Falk Hueffner Cc: bangerth@dealii.org, carlos@baldric.uwo.ca, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: optimization/7726: Fails to produce the correct implementation-dependantoutput for loop optimization under x86 -> optimizes away a loop that shouldcomplete Date: Sun, 29 Dec 2002 13:22:39 +0100 Falk Hueffner wrote: > > On 6 Dec 2002 bangerth@dealii.org wrote: > > > Hm, the code goes into an endless loop on my system also without > > optimization and with all the compilers I have (i.e. gcc2.95, 3.0, > > 3.2, 3.2.2pre, 3.3pre, and icc7). Are you sure that the overflow you > > are exploiting is really defined in ISO C? > > Reading the value of a union member other than the last one stored into is > undefined (at least in C99), Implementation defined, actually... > so it could be easily argued that this is not > a bug. However, gcc seems to support this in some other places (see the > info entry about aliasing). So IMHO this should either be "fixed", or it > should be documented exactly which union type punning tricks are OK. ...and implementation defined bahaviour should be documented. And it is, even: there is some discussion of this in the manual, under "-fstrict-aliasing", stating that with GCC, type-punning via unions is explicitly allowed. Segher