re PR tree-optimization/49742 (ICE for gcc.dg/vect/O3-pr39675-2.c on ARM)

gcc/
	PR tree-optimization/49742
	* tree-data-ref.c (get_references_in_stmt): Treat the lhs of a call
	as a potential write.

From-SVN: r176446
This commit is contained in:
Richard Sandiford 2011-07-19 12:37:03 +00:00 committed by Richard Sandiford
parent aaa7ad9081
commit 1b14d8150e
2 changed files with 23 additions and 13 deletions

View File

@ -1,3 +1,9 @@
2011-07-19 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/49742
* tree-data-ref.c (get_references_in_stmt): Treat the lhs of a call
as a potential write.
2011-07-19 Richard Guenther <rguenther@suse.de>
* gimplify.c (gimplify_expr): Gimplify TRUTH_NOT_EXPR as

View File

@ -4158,33 +4158,37 @@ get_references_in_stmt (gimple stmt, VEC (data_ref_loc, heap) **references)
ref->pos = op1;
ref->is_read = true;
}
if (DECL_P (*op0)
|| (REFERENCE_CLASS_P (*op0) && get_base_address (*op0)))
{
ref = VEC_safe_push (data_ref_loc, heap, *references, NULL);
ref->pos = op0;
ref->is_read = false;
}
}
else if (stmt_code == GIMPLE_CALL)
{
unsigned i, n = gimple_call_num_args (stmt);
unsigned i, n;
op0 = gimple_call_lhs_ptr (stmt);
n = gimple_call_num_args (stmt);
for (i = 0; i < n; i++)
{
op0 = gimple_call_arg_ptr (stmt, i);
op1 = gimple_call_arg_ptr (stmt, i);
if (DECL_P (*op0)
|| (REFERENCE_CLASS_P (*op0) && get_base_address (*op0)))
if (DECL_P (*op1)
|| (REFERENCE_CLASS_P (*op1) && get_base_address (*op1)))
{
ref = VEC_safe_push (data_ref_loc, heap, *references, NULL);
ref->pos = op0;
ref->pos = op1;
ref->is_read = true;
}
}
}
else
return clobbers_memory;
if (*op0
&& (DECL_P (*op0)
|| (REFERENCE_CLASS_P (*op0) && get_base_address (*op0))))
{
ref = VEC_safe_push (data_ref_loc, heap, *references, NULL);
ref->pos = op0;
ref->is_read = false;
}
return clobbers_memory;
}