re PR tree-optimization/43074 (ICE in vectorizable_reduction, at tree-vect-loop.c:3491)
PR tree-optimization/43074 * tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New. * tree-vect-loop.c (vect_analyze_loop_operations): Add vectorizable cycles in hybrid SLP check. * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise. From-SVN: r156800
This commit is contained in:
parent
f47e08d97a
commit
99f51320d4
@ -1,3 +1,11 @@
|
|||||||
|
2010-02-16 Ira Rosen <irar@il.ibm.com>
|
||||||
|
|
||||||
|
PR tree-optimization/43074
|
||||||
|
* tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New.
|
||||||
|
* tree-vect-loop.c (vect_analyze_loop_operations): Add
|
||||||
|
vectorizable cycles in hybrid SLP check.
|
||||||
|
* tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
|
||||||
|
|
||||||
2010-02-16 Richard Guenther <rguenther@suse.de>
|
2010-02-16 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
* alias.c (memrefs_conflict_p): Distinguish must-alias from
|
* alias.c (memrefs_conflict_p): Distinguish must-alias from
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2010-02-16 Ira Rosen <irar@il.ibm.com>
|
||||||
|
|
||||||
|
PR tree-optimization/43074
|
||||||
|
* gcc.dg/vect/fast-math-pr43074.c: New test.
|
||||||
|
|
||||||
2010-02-16 Jakub Jelinek <jakub@redhat.com>
|
2010-02-16 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* lib/prune.exp: Prune variable tracking size limit exceeded
|
* lib/prune.exp: Prune variable tracking size limit exceeded
|
||||||
|
16
gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c
Normal file
16
gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
float
|
||||||
|
pvslockprocess(float *fout, float *fin, int framesize)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
float mag=0.0f, diff;
|
||||||
|
for (i = 0; i < framesize; i += 2) {
|
||||||
|
mag += fin[i];
|
||||||
|
fout[i] = fin[i];
|
||||||
|
fout[i+1] = fin[i+1];
|
||||||
|
}
|
||||||
|
return mag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* { dg-final { cleanup-tree-dump "vect" } } */
|
@ -1184,7 +1184,10 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo)
|
|||||||
if (!vect_analyze_stmt (stmt, &need_to_vectorize, NULL))
|
if (!vect_analyze_stmt (stmt, &need_to_vectorize, NULL))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (STMT_VINFO_RELEVANT_P (stmt_info) && !PURE_SLP_STMT (stmt_info))
|
if ((STMT_VINFO_RELEVANT_P (stmt_info)
|
||||||
|
|| VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
|
||||||
|
&& !PURE_SLP_STMT (stmt_info))
|
||||||
|
|
||||||
/* STMT needs both SLP and loop-based vectorization. */
|
/* STMT needs both SLP and loop-based vectorization. */
|
||||||
only_slp_in_loop = false;
|
only_slp_in_loop = false;
|
||||||
}
|
}
|
||||||
|
@ -1102,6 +1102,7 @@ vect_detect_hybrid_slp_stmts (slp_tree node)
|
|||||||
gimple stmt;
|
gimple stmt;
|
||||||
imm_use_iterator imm_iter;
|
imm_use_iterator imm_iter;
|
||||||
gimple use_stmt;
|
gimple use_stmt;
|
||||||
|
stmt_vec_info stmt_vinfo;
|
||||||
|
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
@ -1110,9 +1111,10 @@ vect_detect_hybrid_slp_stmts (slp_tree node)
|
|||||||
if (PURE_SLP_STMT (vinfo_for_stmt (stmt))
|
if (PURE_SLP_STMT (vinfo_for_stmt (stmt))
|
||||||
&& TREE_CODE (gimple_op (stmt, 0)) == SSA_NAME)
|
&& TREE_CODE (gimple_op (stmt, 0)) == SSA_NAME)
|
||||||
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, gimple_op (stmt, 0))
|
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, gimple_op (stmt, 0))
|
||||||
if (vinfo_for_stmt (use_stmt)
|
if ((stmt_vinfo = vinfo_for_stmt (use_stmt))
|
||||||
&& !STMT_SLP_TYPE (vinfo_for_stmt (use_stmt))
|
&& !STMT_SLP_TYPE (stmt_vinfo)
|
||||||
&& STMT_VINFO_RELEVANT (vinfo_for_stmt (use_stmt)))
|
&& (STMT_VINFO_RELEVANT (stmt_vinfo)
|
||||||
|
|| VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_vinfo))))
|
||||||
vect_mark_slp_stmts (node, hybrid, i);
|
vect_mark_slp_stmts (node, hybrid, i);
|
||||||
|
|
||||||
vect_detect_hybrid_slp_stmts (SLP_TREE_LEFT (node));
|
vect_detect_hybrid_slp_stmts (SLP_TREE_LEFT (node));
|
||||||
|
@ -66,6 +66,10 @@ enum vect_def_type {
|
|||||||
vect_unknown_def_type
|
vect_unknown_def_type
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define VECTORIZABLE_CYCLE_DEF(D) (((D) == vect_reduction_def) \
|
||||||
|
|| ((D) == vect_double_reduction_def) \
|
||||||
|
|| ((D) == vect_nested_cycle))
|
||||||
|
|
||||||
/* Define verbosity levels. */
|
/* Define verbosity levels. */
|
||||||
enum verbosity_levels {
|
enum verbosity_levels {
|
||||||
REPORT_NONE,
|
REPORT_NONE,
|
||||||
|
Loading…
Reference in New Issue
Block a user