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

2007-02-12 Thread dcb314 at hotmail dot com


--- Comment #1 from dcb314 at hotmail dot com  2007-02-12 08:53 ---
Created an attachment (id=13038)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13038action=view)
C++ source code


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30771



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

2007-02-12 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2007-02-12 09:58 ---
Confirmed.  We hit

#1  0x00ecf362 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



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

2007-02-12 Thread dorit at il dot ibm dot com


--- Comment #3 from dorit at il dot ibm dot com  2007-02-12 10:11 ---
I'll look into it.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30771