From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23202 invoked by alias); 11 Dec 2001 03:12:29 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 23174 invoked from network); 11 Dec 2001 03:12:26 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sources.redhat.com with SMTP; 11 Dec 2001 03:12:26 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA21842; Mon, 10 Dec 01 22:06:50 EST Date: Mon, 10 Dec 2001 19:14:00 -0000 From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10112110306.AA21842@vlsi1.ultra.nyu.edu> To: dalej@apple.com Subject: Re: Cc: gcc@gcc.gnu.org X-SW-Source: 2001-12/txt/msg00569.txt.bz2 The improved memory aliasing stuff is interesting, but I see the following case still isn't done optimally. The store to u.i[0] is loop invariant, and is not so recognized. Is there enough info there now to figure this out, do you think? union {double d; int i[2]; } u; float s=0.0; while (count--) { u.i[0] = 0x4330; u.i[1] = *i++; s += u.d; } Perhaps, but it will be hard. What you'd need in this case is a tree corresponding to were the variable case "ends" and an offset to there. The first of those isn't hard, the second is trickier.