This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/30771] ice for legal code with -O2 -ftree-vectorize
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Feb 2007 09:58:07 -0000
- Subject: [Bug c++/30771] ice for legal code with -O2 -ftree-vectorize
- References: <bug-30771-9596@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla 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 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