Commit 8eb7bc3c by Richard Guenther Committed by Richard Biener

re PR tree-optimization/43971 (index domain error in tree-ssa-structalias.c:3450)

2010-05-03  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43971
	* tree-ssa-structalias.c (get_constraint_for_1): Fix
	constraints in the !flag_delete_null_pointer_checks case.

	* gcc.dg/pr43971.c: New testcase.

From-SVN: r158991
parent c4e26da1
2010-05-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43971
* tree-ssa-structalias.c (get_constraint_for_1): Fix
constraints in the !flag_delete_null_pointer_checks case.
2010-05-03 Jakub Jelinek <jakub@redhat.com>
PR debug/43972
......
2010-05-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43971
* gcc.dg/pr43971.c: New testcase.
2010-05-03 Jakub Jelinek <jakub@redhat.com>
PR debug/43972
......
/* { dg-do compile } */
/* { dg-options "-Os -fno-delete-null-pointer-checks" } */
union ktime {
long tv64;
};
typedef union ktime ktime_t;
ktime_t
do_one_initcall(ktime_t rettime, ktime_t calltime)
{
ktime_t delta;
delta = ({ (ktime_t){ .tv64 = (rettime).tv64 - (calltime).tv64 }; });
return delta;
}
......@@ -3286,16 +3286,18 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p)
in that case *NULL does not fail, so it _should_ alias *anything.
It is not worth adding a new option or renaming the existing one,
since this case is relatively obscure. */
if (flag_delete_null_pointer_checks
&& ((TREE_CODE (t) == INTEGER_CST
&& integer_zerop (t))
/* The only valid CONSTRUCTORs in gimple with pointer typed
elements are zero-initializer. But in IPA mode we also
process global initializers, so verify at least. */
|| (TREE_CODE (t) == CONSTRUCTOR
&& CONSTRUCTOR_NELTS (t) == 0)))
{
temp.var = nothing_id;
if ((TREE_CODE (t) == INTEGER_CST
&& integer_zerop (t))
/* The only valid CONSTRUCTORs in gimple with pointer typed
elements are zero-initializer. But in IPA mode we also
process global initializers, so verify at least. */
|| (TREE_CODE (t) == CONSTRUCTOR
&& CONSTRUCTOR_NELTS (t) == 0))
{
if (flag_delete_null_pointer_checks)
temp.var = nothing_id;
else
temp.var = anything_id;
temp.type = ADDRESSOF;
temp.offset = 0;
VEC_safe_push (ce_s, heap, *results, &temp);
......
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