mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 03:30:27 +08:00
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
This commit is contained in:
parent
58277f4892
commit
587aa06343
@ -1,3 +1,17 @@
|
||||
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.
|
||||
|
||||
2009-04-13 Michael Eager <eager@eagercon.com>
|
||||
|
||||
* config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
|
||||
|
@ -1865,8 +1865,9 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
|
||||
tmp = create_tmp_var (TREE_TYPE (lhs), "new");
|
||||
add_referenced_var (tmp);
|
||||
rhs = gimple_assign_rhs1 (acc_info->stmt);
|
||||
new_stmt = gimple_build_assign (tmp,
|
||||
TREE_OPERAND (rhs, 0));
|
||||
rhs = fold_convert (TREE_TYPE (tmp),
|
||||
TREE_OPERAND (rhs, 0));
|
||||
new_stmt = gimple_build_assign (tmp, rhs);
|
||||
tmp = make_ssa_name (tmp, new_stmt);
|
||||
gimple_assign_set_lhs (new_stmt, tmp);
|
||||
gsi = gsi_for_stmt (acc_info->stmt);
|
||||
|
@ -5074,7 +5074,8 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
|
||||
/* Build the compare&swap statement. */
|
||||
new_storedi = build_call_expr (cmpxchg, 3, iaddr, loadedi, storedi);
|
||||
new_storedi = force_gimple_operand_gsi (&si,
|
||||
fold_convert (itype, new_storedi),
|
||||
fold_convert (TREE_TYPE (loadedi),
|
||||
new_storedi),
|
||||
true, NULL_TREE,
|
||||
true, GSI_SAME_STMT);
|
||||
|
||||
@ -5082,7 +5083,7 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
|
||||
old_vali = loadedi;
|
||||
else
|
||||
{
|
||||
old_vali = create_tmp_var (itype, NULL);
|
||||
old_vali = create_tmp_var (TREE_TYPE (loadedi), NULL);
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
add_referenced_var (old_vali);
|
||||
stmt = gimple_build_assign (old_vali, loadedi);
|
||||
|
@ -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;
|
||||
|
@ -1639,9 +1639,9 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
|
||||
if (POINTER_TYPE_P (TREE_TYPE (init_expr)))
|
||||
ni = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (init_expr),
|
||||
init_expr,
|
||||
fold_convert (sizetype,
|
||||
fold_build2 (MULT_EXPR, TREE_TYPE (niters),
|
||||
niters, step_expr)));
|
||||
fold_build2 (MULT_EXPR, sizetype,
|
||||
fold_convert (sizetype, niters),
|
||||
step_expr));
|
||||
else
|
||||
ni = fold_build2 (PLUS_EXPR, TREE_TYPE (init_expr),
|
||||
fold_build2 (MULT_EXPR, TREE_TYPE (init_expr),
|
||||
@ -1926,7 +1926,8 @@ vect_update_init_of_dr (struct data_reference *dr, tree niters)
|
||||
niters = fold_build2 (MULT_EXPR, sizetype,
|
||||
fold_convert (sizetype, niters),
|
||||
fold_convert (sizetype, DR_STEP (dr)));
|
||||
offset = fold_build2 (PLUS_EXPR, sizetype, offset, niters);
|
||||
offset = fold_build2 (PLUS_EXPR, sizetype,
|
||||
fold_convert (sizetype, offset), niters);
|
||||
DR_OFFSET (dr) = offset;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user