Commit 587aa063 by Richard Guenther Committed by Richard Biener

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
parent 58277f48
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> 2009-04-13 Michael Eager <eager@eagercon.com>
* config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu: * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
......
...@@ -1865,8 +1865,9 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED) ...@@ -1865,8 +1865,9 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
tmp = create_tmp_var (TREE_TYPE (lhs), "new"); tmp = create_tmp_var (TREE_TYPE (lhs), "new");
add_referenced_var (tmp); add_referenced_var (tmp);
rhs = gimple_assign_rhs1 (acc_info->stmt); rhs = gimple_assign_rhs1 (acc_info->stmt);
new_stmt = gimple_build_assign (tmp, rhs = fold_convert (TREE_TYPE (tmp),
TREE_OPERAND (rhs, 0)); TREE_OPERAND (rhs, 0));
new_stmt = gimple_build_assign (tmp, rhs);
tmp = make_ssa_name (tmp, new_stmt); tmp = make_ssa_name (tmp, new_stmt);
gimple_assign_set_lhs (new_stmt, tmp); gimple_assign_set_lhs (new_stmt, tmp);
gsi = gsi_for_stmt (acc_info->stmt); gsi = gsi_for_stmt (acc_info->stmt);
......
...@@ -5074,7 +5074,8 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb, ...@@ -5074,7 +5074,8 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
/* Build the compare&swap statement. */ /* Build the compare&swap statement. */
new_storedi = build_call_expr (cmpxchg, 3, iaddr, loadedi, storedi); new_storedi = build_call_expr (cmpxchg, 3, iaddr, loadedi, storedi);
new_storedi = force_gimple_operand_gsi (&si, new_storedi = force_gimple_operand_gsi (&si,
fold_convert (itype, new_storedi), fold_convert (TREE_TYPE (loadedi),
new_storedi),
true, NULL_TREE, true, NULL_TREE,
true, GSI_SAME_STMT); true, GSI_SAME_STMT);
...@@ -5082,7 +5083,7 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb, ...@@ -5082,7 +5083,7 @@ expand_omp_atomic_pipeline (basic_block load_bb, basic_block store_bb,
old_vali = loadedi; old_vali = loadedi;
else else
{ {
old_vali = create_tmp_var (itype, NULL); old_vali = create_tmp_var (TREE_TYPE (loadedi), NULL);
if (gimple_in_ssa_p (cfun)) if (gimple_in_ssa_p (cfun))
add_referenced_var (old_vali); add_referenced_var (old_vali);
stmt = gimple_build_assign (old_vali, loadedi); stmt = gimple_build_assign (old_vali, loadedi);
......
...@@ -3411,23 +3411,23 @@ verify_gimple_assign_unary (gimple stmt) ...@@ -3411,23 +3411,23 @@ verify_gimple_assign_unary (gimple stmt)
return false; 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 NEGATE_EXPR:
case ABS_EXPR: case ABS_EXPR:
case BIT_NOT_EXPR: case BIT_NOT_EXPR:
case PAREN_EXPR: case PAREN_EXPR:
case NON_LVALUE_EXPR: case NON_LVALUE_EXPR:
case CONJ_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; break;
default: default:
...@@ -3498,17 +3498,21 @@ verify_gimple_assign_binary (gimple stmt) ...@@ -3498,17 +3498,21 @@ verify_gimple_assign_binary (gimple stmt)
case LSHIFT_EXPR: case LSHIFT_EXPR:
case RSHIFT_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 LROTATE_EXPR:
case RROTATE_EXPR: case RROTATE_EXPR:
{ {
if (!INTEGRAL_TYPE_P (rhs1_type) /* Shifts and rotates are ok on integral types, fixed point
|| !INTEGRAL_TYPE_P (rhs2_type) 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)) || !useless_type_conversion_p (lhs_type, rhs1_type))
{ {
error ("type mismatch in shift expression"); error ("type mismatch in shift expression");
...@@ -3614,6 +3618,20 @@ verify_gimple_assign_binary (gimple stmt) ...@@ -3614,6 +3618,20 @@ verify_gimple_assign_binary (gimple stmt)
break; 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 MULT_EXPR:
case TRUNC_DIV_EXPR: case TRUNC_DIV_EXPR:
case CEIL_DIV_EXPR: case CEIL_DIV_EXPR:
...@@ -3630,17 +3648,6 @@ verify_gimple_assign_binary (gimple stmt) ...@@ -3630,17 +3648,6 @@ verify_gimple_assign_binary (gimple stmt)
case BIT_IOR_EXPR: case BIT_IOR_EXPR:
case BIT_XOR_EXPR: case BIT_XOR_EXPR:
case BIT_AND_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. */ /* Continue with generic binary expression handling. */
break; break;
...@@ -3905,7 +3912,7 @@ verify_gimple_phi (gimple stmt) ...@@ -3905,7 +3912,7 @@ verify_gimple_phi (gimple stmt)
} }
if (!useless_type_conversion_p (type, TREE_TYPE (arg))) 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 (type);
debug_generic_stmt (TREE_TYPE (arg)); debug_generic_stmt (TREE_TYPE (arg));
return true; return true;
......
...@@ -1639,9 +1639,9 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters, ...@@ -1639,9 +1639,9 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
if (POINTER_TYPE_P (TREE_TYPE (init_expr))) if (POINTER_TYPE_P (TREE_TYPE (init_expr)))
ni = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (init_expr), ni = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (init_expr),
init_expr, init_expr,
fold_convert (sizetype, fold_build2 (MULT_EXPR, sizetype,
fold_build2 (MULT_EXPR, TREE_TYPE (niters), fold_convert (sizetype, niters),
niters, step_expr))); step_expr));
else else
ni = fold_build2 (PLUS_EXPR, TREE_TYPE (init_expr), ni = fold_build2 (PLUS_EXPR, TREE_TYPE (init_expr),
fold_build2 (MULT_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) ...@@ -1926,7 +1926,8 @@ vect_update_init_of_dr (struct data_reference *dr, tree niters)
niters = fold_build2 (MULT_EXPR, sizetype, niters = fold_build2 (MULT_EXPR, sizetype,
fold_convert (sizetype, niters), fold_convert (sizetype, niters),
fold_convert (sizetype, DR_STEP (dr))); 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; DR_OFFSET (dr) = offset;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment