diff options
author | Paolo Bonzini <bonzini@gcc.gnu.org> | 2004-10-01 09:59:01 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2004-10-01 09:59:01 +0000 |
commit | 02ca17189efc6ee7c13a8bb32f091943cc101c05 (patch) | |
tree | e71a63882077142ea946af8cdf52ab7d9377f6da /gcc | |
parent | f67b6b7a9ec6f92aca5ee057c9472248f3f2ffcf (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-vectorizer.c | 12 |
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."); |