aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-04-14 13:50:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-04-14 13:50:18 +0000
commit587aa06343905910d85ff1980cad0e3be57984b1 (patch)
tree3c14db1949615dbf483ab6fcfa12f3ac5e829397 /gcc/tree-cfg.c
parent58277f48923ae8fed82265aa5e7ded8f84528ae7 (diff)
downloadgcc-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.c67
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;