http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50162
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |irar at gcc dot gnu.org
AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org
|gnu.org |
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-23
08:52:26 UTC ---
Fix:
Index: gcc/tree-vect-stmts.c
===================================================================
--- gcc/tree-vect-stmts.c (revision 177983)
+++ gcc/tree-vect-stmts.c (working copy)
@@ -1697,7 +1697,7 @@ vectorizable_call (gimple stmt, gimple_s
}
else
{
- vec_oprnd1 = gimple_call_arg (new_stmt, 2*i);
+ vec_oprnd1 = gimple_call_arg (new_stmt, 2*i + 1);
vec_oprnd0
= vect_get_vec_def_for_stmt_copy (dt[i], vec_oprnd1);
vec_oprnd1
Ira, does that make sense? I suppose we replace foo (a, b, c) with
foo_vec_pack (a1, a2, b1, b2, c1, c2), etc. And we want the second
argument from each pair from the last stmt? (I wonder if all this even
works for nargs != 1).