From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18878 invoked by alias); 4 May 2008 12:08:10 -0000 Received: (qmail 11757 invoked by uid 48); 4 May 2008 12:07:25 -0000 Date: Sun, 04 May 2008 12:08:00 -0000 Message-ID: <20080504120725.11753.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/36119] [4.4 regression] internal compiler error: in vectorizable_assignment, at tree-vect-transform.c:3671 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "irar at il dot ibm dot com" 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-05/txt/msg00231.txt.bz2 ------- Comment #8 from irar at il dot ibm dot com 2008-05-04 12:07 ------- (In reply to comment #7) > It does - and the loop is vectorized. But it looks like a hack ;) It is not. We actually do this in all vectorizable_...() that support SLP. SLP currently does not support multiple types (I am working on this right now). So in the analysis phase we check that there is only one type in the loop before we try to SLP it. In loop-based vectorization of loops with multiple types we generate "copies" of stmts of the bigger type, and the number of copies is vf/nunits. In SLP this expression is meaningless, therefore, we overwrite NCOPIES with 1 (which is the correct number of copies in case there is only one type in the loop). Ira > > Richard. > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36119