This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/52091] [4.7 Regression] ICE: verify_gimple failed
- From: "irar at il dot ibm.com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 02 Feb 2012 15:16:18 +0000
- Subject: [Bug tree-optimization/52091] [4.7 Regression] ICE: verify_gimple failed
- Auto-submitted: auto-generated
- References: <bug-52091-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52091
--- Comment #7 from Ira Rosen <irar at il dot ibm.com> 2012-02-02 15:16:18 UTC ---
(In reply to comment #6)
> (In reply to comment #5)
> > I think we should fail to vectorize D.2030_19 = prephitmp.17_21 & 65535, or any
> > other non-phi/not vect_double_reduction_def stmt with a double reduction phi as
> > a def_stmt.
> >
> > We can either check this in every vectorizable_* for every operand, like this:
> > Index: tree-vect-stmts.c
> > ===================================================================
> > --- tree-vect-stmts.c (revision 183125)
> > +++ tree-vect-stmts.c (working copy)
> > @@ -3326,7 +3326,8 @@ vectorizable_operation (gimple stmt, gimple_stmt_i
> >
> > op0 = gimple_assign_rhs1 (stmt);
> > if (!vect_is_simple_use_1 (op0, loop_vinfo, bb_vinfo,
> > - &def_stmt, &def, &dt[0], &vectype))
> > + &def_stmt, &def, &dt[0], &vectype)
> > + || dt[0] == vect_double_reduction_def)
> > {
> > if (vect_print_dump_info (REPORT_DETAILS))
> > fprintf (vect_dump, "use not simple.");
> >
> >
> > or pass stmt or stmt_info to vect_is_simple_use and check it there.
>
> Are you going to write a patch for this? Not sure how exactly would you like
> it to look up.
>
We need to check that if def_stmt is vect_double_reduction_def, the stmt itself
needs to be vect_double_reduction_def. We know def_type (dt in the above patch)
of def_stmt from vect_is_simple_use. We call it from all the vectorizable_*
functions. We don't pass the stmt itself to vect_is_simple_use, therefore, we
should either do that and perform the check in vect_is_simple_use, or check
this in all the vectorizable_* (except perhaps vectorizable_reduction). I
prefer to pass stmt or stmt_info to vect_is_simple_use.
I can do this on Sunday. You are welcome to do this yourself. Whatever you
prefer.