diff options
author | Richard Guenther <rguenther@suse.de> | 2009-04-14 13:50:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-04-14 13:50:18 +0000 |
commit | 587aa06343905910d85ff1980cad0e3be57984b1 (patch) | |
tree | 3c14db1949615dbf483ab6fcfa12f3ac5e829397 /gcc/tree-cfg.c | |
parent | 58277f48923ae8fed82265aa5e7ded8f84528ae7 (diff) | |
download | gcc-587aa06343905910d85ff1980cad0e3be57984b1.zip gcc-587aa06343905910d85ff1980cad0e3be57984b1.tar.gz gcc-587aa06343905910d85ff1980cad0e3be57984b1.tar.bz2 |
tree-cfg.c (verify_gimple_assign_unary): Adjust vector code verification.
2000-04-14 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
verification.
(verify_gimple_assign_binary): Likewise. Handle shifts and
rotates correctly.
(verify_gimple_phi): Print the mismatched argument position.
* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
Fix types.
(vect_update_init_of_dr): Likewise.
* matrix-reorg.c (transform_access_sites): Do what the
comment suggests.
* omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
From-SVN: r146035
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 67 |
1 files changed, 37 insertions, 30 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 2255ea1..6c5eb87 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3411,23 +3411,23 @@ verify_gimple_assign_unary (gimple stmt) return false; } - case TRUTH_NOT_EXPR: - { - } + case VEC_UNPACK_HI_EXPR: + case VEC_UNPACK_LO_EXPR: + case REDUC_MAX_EXPR: + case REDUC_MIN_EXPR: + case REDUC_PLUS_EXPR: + case VEC_UNPACK_FLOAT_HI_EXPR: + case VEC_UNPACK_FLOAT_LO_EXPR: + /* FIXME. */ + return false; + case TRUTH_NOT_EXPR: case NEGATE_EXPR: case ABS_EXPR: case BIT_NOT_EXPR: case PAREN_EXPR: case NON_LVALUE_EXPR: case CONJ_EXPR: - case REDUC_MAX_EXPR: - case REDUC_MIN_EXPR: - case REDUC_PLUS_EXPR: - case VEC_UNPACK_HI_EXPR: - case VEC_UNPACK_LO_EXPR: - case VEC_UNPACK_FLOAT_HI_EXPR: - case VEC_UNPACK_FLOAT_LO_EXPR: break; default: @@ -3498,17 +3498,21 @@ verify_gimple_assign_binary (gimple stmt) case LSHIFT_EXPR: case RSHIFT_EXPR: - if (FIXED_POINT_TYPE_P (rhs1_type) - && INTEGRAL_TYPE_P (rhs2_type) - && useless_type_conversion_p (lhs_type, rhs1_type)) - return false; - /* Fall through. */ - case LROTATE_EXPR: case RROTATE_EXPR: { - if (!INTEGRAL_TYPE_P (rhs1_type) - || !INTEGRAL_TYPE_P (rhs2_type) + /* Shifts and rotates are ok on integral types, fixed point + types and integer vector types. */ + if ((!INTEGRAL_TYPE_P (rhs1_type) + && !FIXED_POINT_TYPE_P (rhs1_type) + && !(TREE_CODE (rhs1_type) == VECTOR_TYPE + && TREE_CODE (TREE_TYPE (rhs1_type)) == INTEGER_TYPE)) + || (!INTEGRAL_TYPE_P (rhs2_type) + /* Vector shifts of vectors are also ok. */ + && !(TREE_CODE (rhs1_type) == VECTOR_TYPE + && TREE_CODE (TREE_TYPE (rhs1_type)) == INTEGER_TYPE + && TREE_CODE (rhs2_type) == VECTOR_TYPE + && TREE_CODE (TREE_TYPE (rhs2_type)) == INTEGER_TYPE)) || !useless_type_conversion_p (lhs_type, rhs1_type)) { error ("type mismatch in shift expression"); @@ -3614,6 +3618,20 @@ verify_gimple_assign_binary (gimple stmt) break; } + case WIDEN_SUM_EXPR: + case WIDEN_MULT_EXPR: + case VEC_WIDEN_MULT_HI_EXPR: + case VEC_WIDEN_MULT_LO_EXPR: + case VEC_PACK_TRUNC_EXPR: + case VEC_PACK_SAT_EXPR: + case VEC_PACK_FIX_TRUNC_EXPR: + case VEC_EXTRACT_EVEN_EXPR: + case VEC_EXTRACT_ODD_EXPR: + case VEC_INTERLEAVE_HIGH_EXPR: + case VEC_INTERLEAVE_LOW_EXPR: + /* FIXME. */ + return false; + case MULT_EXPR: case TRUNC_DIV_EXPR: case CEIL_DIV_EXPR: @@ -3630,17 +3648,6 @@ verify_gimple_assign_binary (gimple stmt) case BIT_IOR_EXPR: case BIT_XOR_EXPR: case BIT_AND_EXPR: - case WIDEN_SUM_EXPR: - case WIDEN_MULT_EXPR: - case VEC_WIDEN_MULT_HI_EXPR: - case VEC_WIDEN_MULT_LO_EXPR: - case VEC_PACK_TRUNC_EXPR: - case VEC_PACK_SAT_EXPR: - case VEC_PACK_FIX_TRUNC_EXPR: - case VEC_EXTRACT_EVEN_EXPR: - case VEC_EXTRACT_ODD_EXPR: - case VEC_INTERLEAVE_HIGH_EXPR: - case VEC_INTERLEAVE_LOW_EXPR: /* Continue with generic binary expression handling. */ break; @@ -3905,7 +3912,7 @@ verify_gimple_phi (gimple stmt) } if (!useless_type_conversion_p (type, TREE_TYPE (arg))) { - error ("Incompatible types in PHI argument"); + error ("Incompatible types in PHI argument %u", i); debug_generic_stmt (type); debug_generic_stmt (TREE_TYPE (arg)); return true; |