From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15359 invoked by alias); 26 Mar 2002 18:18:50 -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 15302 invoked by uid 61); 26 Mar 2002 18:18:50 -0000 Date: Tue, 26 Mar 2002 10:18:00 -0000 Message-ID: <20020326181850.15297.qmail@sources.redhat.com> To: djohnson@osc.edu, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org From: jakub@gcc.gnu.org Reply-To: jakub@gcc.gnu.org, djohnson@osc.edu, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c++/6056: ICE on legal code with when optimizations higher that -O (ia64 only) X-SW-Source: 2002-03/txt/msg00994.txt.bz2 List-Id: Synopsis: ICE on legal code with when optimizations higher that -O (ia64 only) State-Changed-From-To: open->analyzed State-Changed-By: jakub State-Changed-When: Tue Mar 26 10:18:49 2002 State-Changed-Why: It is actually code with undefined behaviour (because it does invalid type punning), but no matter what gcc probably shouldn't ICE on it. Simplified into: extern unsigned long d[]; unsigned long foo (unsigned char *x, int y) { unsigned long a = 0, c = 0; unsigned short *e = (unsigned short *) &a; int i, b; for (i = 0; i < y; i++) c = (c << 1) ^ d[i & 3]; if (i & 3) a ^= c; a *= 1879048201; e[0] += e[1]; return a; } at -O2. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6056