From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1529 invoked by alias); 3 Feb 2014 13:51:06 -0000 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 Received: (qmail 1490 invoked by uid 48); 3 Feb 2014 13:51:01 -0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/60042] vectorizer still does too many dependence tests for himeno:jacobi Date: Mon, 03 Feb 2014 13:51:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-02/txt/msg00152.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60042 --- Comment #2 from Richard Biener --- With some more dumping I seee himenobmtxpa.c:296:9: note: === vect_prune_runtime_alias_test_list === himenobmtxpa.c:296:9: note: merging ranges for *_205, *_324 and *_49, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_205, *_324 and *_192, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_168, *_324 and *_69, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_168, *_324 and *_154, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_265, *_324 and *_296, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_265, *_324 and *_89, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_174, *_324 and *_248, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_174, *_324 and *_161, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_211, *_324 and *_231, *_324 himenobmtxpa.c:296:9: note: merging ranges for *_211, *_324 and *_199, *_324 himenobmtxpa.c:296:9: note: improved number of alias checks from 31 to 21 and Creating dr for *_205 analyze_innermost: success. base_address: pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1009 * 4) offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1009 * 4) Access function 0: {0B, +, 4}_7 Creating dr for *_168 analyze_innermost: success. base_address: pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1023 * 4) offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1023 * 4) Access function 0: {0B, +, 4}_7 Creating dr for *_265 analyze_innermost: success. base_address: pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1034 * 4) offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1034 * 4) Access function 0: {0B, +, 4}_7 Creating dr for *_174 analyze_innermost: success. base_address: pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1063 * 4) offset from base address: 0 constant offset from base address: 0 step: 4 aligned to: 128 base_object: *pretmp_1004 + (sizetype) ((long unsigned int) pretmp_1063 * 4) Access function 0: {0B, +, 4}_7 ... so the remaining DDRs against *_324 all look related. pretmp_1062 = pretmp_1020 + pretmp_1047; pretmp_1063 = _25 * pretmp_1062; pretmp_1033 = j_380 + pretmp_1020; pretmp_1034 = _25 * pretmp_1033; pretmp_1022 = pretmp_1020 + pretmp_1021; pretmp_1023 = _25 * pretmp_1022; but SCEV doesn't expand stmts before the loop and thus doesn't see this. It's obviously far from trivial to merge segments with symbolic start addresses ... these are multi-dimensional accesses: for(k=1 ; k