From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17297 invoked by alias); 22 Oct 2008 16:10:33 -0000 Received: (qmail 17286 invoked by uid 22791); 22 Oct 2008 16:10:33 -0000 X-Spam-Check-By: sourceware.org Received: from ey-out-1920.google.com (HELO ey-out-1920.google.com) (74.125.78.144) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 22 Oct 2008 16:09:58 +0000 Received: by ey-out-1920.google.com with SMTP id 21so1019868eyc.14 for ; Wed, 22 Oct 2008 09:09:42 -0700 (PDT) Received: by 10.210.59.3 with SMTP id h3mr12114371eba.150.1224691782729; Wed, 22 Oct 2008 09:09:42 -0700 (PDT) Received: by 10.210.76.11 with HTTP; Wed, 22 Oct 2008 09:09:42 -0700 (PDT) Message-ID: Date: Wed, 22 Oct 2008 16:10:00 -0000 From: "Sebastian Pop" To: gcc-bugzilla@gcc.gnu.org Subject: Re: [Bug tree-optimization/37573] [4.4 Regression] gcc-4.4 regression: incorrect code generation with -O1 -ftree-vectorize Cc: gcc-bugs@gcc.gnu.org In-Reply-To: <20081016081451.31371.qmail@sourceware.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20081016081451.31371.qmail@sourceware.org> X-IsSubscribed: yes Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-10/txt/msg01456.txt.bz2 > common base. Consider &s.c[1] and &s + i, obviously the accesses can > overlap - would you still say so if the base address of the first one > would be &s.c[0]? Yes, in the case &s.c[1] versus &s.c[0], we still have to consider the arrays to potentially overlap. > (really the base address of a non-variable access is the access > itself, right? &s.c[1] in this case) No, it cannot be &s.c[1] here. The base object for arrays in structs should be the struct itself. The base address tells you what memory object is accessed with an offset. For structs, you are allowed to access any of their contents using arithmetic. For instance in: struct s { int a[2]; int c[20]; } you could access s.c[10] from the address of struct s with: &s.a + 12.