This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/30771] ice for legal code with -O2 -ftree-vectorize



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]