aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gcc.gnu.org>2004-10-01 09:59:01 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2004-10-01 09:59:01 +0000
commit02ca17189efc6ee7c13a8bb32f091943cc101c05 (patch)
treee71a63882077142ea946af8cdf52ab7d9377f6da /gcc
parentf67b6b7a9ec6f92aca5ee057c9472248f3f2ffcf (diff)
downloadgcc-02ca17189efc6ee7c13a8bb32f091943cc101c05.zip
gcc-02ca17189efc6ee7c13a8bb32f091943cc101c05.tar.gz
gcc-02ca17189efc6ee7c13a8bb32f091943cc101c05.tar.bz2
tree-vectorizer.c (vectorizable_operation): Fail unless the mode for the vector type is indeed a vector mode.
2004-10-01 Paolo Bonzini <bonzini@gnu.org> * tree-vectorizer.c (vectorizable_operation): Fail unless the mode for the vector type is indeed a vector mode. From-SVN: r88390
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vectorizer.c12
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7bce571..d7d99a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,13 @@
+2004-10-01 Paolo Bonzini <bonzini@gnu.org>
+
+ * tree-vectorizer.c (vectorizable_operation): Fail unless
+ the mode for the vector type is indeed a vector mode.
+
2004-10-01 Zdenek Dvorak <dvorakz@suse.cz>
* tree-chrec.c (chrec_fold_plus_poly_poly, chrec_fold_plus_1,
chrec_fold_multiply): Use fold_convert or build_int_cst_type instead
- od fonvert.
+ of convert.
* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
add_to_evolution, set_nb_iterations_in_loop, follow_ssa_edge_in_rhs,
follow_ssa_edge_in_rhs): Ditto.
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 4493da1..e4de786 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -1408,6 +1408,16 @@ vectorizable_operation (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt)
return false;
}
vec_mode = TYPE_MODE (vectype);
+ if (!VECTOR_MODE_P (vec_mode))
+ {
+ /* TODO: tree-complex.c sometimes can parallelize operations
+ on generic vectors. We can vectorize the loop in that case,
+ but then we should re-run the lowering pass. */
+ if (vect_debug_details (NULL))
+ fprintf (dump_file, "mode not supported by target.");
+ return false;
+ }
+
if (optab->handlers[(int) vec_mode].insn_code == CODE_FOR_nothing)
{
if (vect_debug_details (NULL))
@@ -1421,7 +1431,7 @@ vectorizable_operation (tree stmt, block_stmt_iterator *bsi, tree *vec_stmt)
return true;
}
- /** Trasform. **/
+ /** Transform. **/
if (vect_debug_details (NULL))
fprintf (dump_file, "transform binary/unary operation.");