------- Comment #2 from rguenth at gcc dot gnu dot org 2007-02-12 09:58 ------- Confirmed. We hit
#1 0x0000000000ecf362 in vectorizable_type_promotion (stmt=0x2afac97cd000, bsi=0x0, vec_stmt=0x0) at /space/rguenther/src/svn/trunk/gcc/tree-vect-transform.c:2752 2752 gcc_assert (ncopies >= 1); because nunits_in is 4 but LOOP_VINFO_VECT_FACTOR (loop_vinfo) is 2. As this is actually a widening (i_45 is int): D.6364_12 = (long unsigned int) i_45 This is the loop: # SMT.373_48 = PHI <SMT.373_35(5), SMT.373_33(3)> # SMT.372_46 = PHI <SMT.372_34(5), SMT.372_32(3)> # i_45 = PHI <i_17(5), 0(3)> <L0>:; d.29_10 = pretmp.393_8; D.6363_11 = pretmp.394_7; D.6364_12 = (long unsigned int) i_45; D.6365_13 = D.6364_12 * 12; D.6366_14 = (struct LADSPA_PortRangeHint *) D.6365_13; D.6367_15 = pretmp.394_7 + D.6366_14; D.6368_16 = &D.6367_15->LowerBound; # SMT.372_34 = VDEF <SMT.372_46> # SMT.373_35 = VDEF <SMT.373_48> plugin_3->ports[i_45] = D.6368_16; i_17 = i_45 + 1; if (i_17 < D.6359_44) goto <L9>; else goto <L2>; so we are actually trying to vectorize a widening of the induction variable. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dorit at il dot ibm dot com, | |rguenth at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30771