This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/46142] [4.6 Regression] FMA test failures
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 31 Oct 2010 07:02:27 +0000
- Subject: [Bug middle-end/46142] [4.6 Regression] FMA test failures
- Auto-submitted: auto-generated
- References: <bug-46142-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46142
Uros Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2010.10.31 06:55:48
Target Milestone|--- |4.6.0
Ever Confirmed|0 |1
--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2010-10-31 06:55:48 UTC ---
Well, well.
static bool
vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt)
{
...
enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
...
/* Bail out if the function has more than three arguments, we do not have
interesting builtin functions to vectorize with more than two arguments
except for fma. No arguments is also not good. */
if (nargs == 0 || nargs > 3)
return false;
...
}
For some reason, valgrind didn't cathc this problem. Anyway, the patch is
obvious:
Index: tree-vect-stmts.c
===================================================================
--- tree-vect-stmts.c (revision 166104)
+++ tree-vect-stmts.c (working copy)
@@ -1308,7 +1308,8 @@ vectorizable_call (gimple stmt, gimple_s
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
tree fndecl, new_temp, def, rhs_type;
gimple def_stmt;
- enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
+ enum vect_def_type dt[3]
+ = {vect_unknown_def_type, vect_unknown_def_type, vect_unknown_def_type};
gimple new_stmt = NULL;
int ncopies, j;
VEC(tree, heap) *vargs = NULL;