From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28672 invoked by alias); 12 Oct 2005 07:23:35 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 28655 invoked by uid 48); 12 Oct 2005 07:23:32 -0000 Date: Wed, 12 Oct 2005 07:23:00 -0000 Message-ID: <20051012072332.28654.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/24262] [4.1 Regression] ICE: verify_ssa failed with -O -msse2 -ftree-vectorize In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "dorit at il dot ibm dot com" X-SW-Source: 2005-10/txt/msg01486.txt.bz2 List-Id: ------- Comment #2 from dorit at il dot ibm dot com 2005-10-12 07:23 ------- There are two problems here: 1) This is the data-reference structure created (using the same testcase but with floats instead of doubles): Created dr for A[D.1705_7] base_address: &A offset from base address: () (D.1703_5 * 8) constant offset from base address: 0 base_object: A step: 4B misalignment from base: memtag: A We then use the information in the fields above to calculate the first address accessed, as follows: base_off.31_18 = D.1703_5 * 8; vect_pA.32_19 = &A + base_off.31_18; but the problem is that we can't use the expression "D.1703_5 * 8" from field "offset from base address" as is, because D.1703_5 depends on other computations that should take place first. I think we had this problem in the past but it had been solved. I wonder why it reappeared - maybe this is related to the second problem: 2) This loop shouldn't be vectorized in the first place, because the vectorizer can currently handle only consecutive accesses, but this loop accesses locations {0,1,4,5,8,9}. For some reason (scalar evolution bug? dataref analysis bug?) we conclude that the step of the access is simply 4B (i.e. consecutive accesses). (Indeed for doubles, pairs of iterations can be vectorized ({0,1} {4,5} and {8,9}) with a proper stride between the vectorized iterations, but the vectorizer can't do something like that now). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24262