Commit 7c88f67a by Richard Guenther Committed by Richard Biener

tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar variable can be…

tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar variable can be only accessed through a...

2008-05-24  Richard Guenther  <rguenther@suse.de>

	* tree-dfa.c (refs_may_alias_p): Re-instantiate case that
	a scalar variable can be only accessed through a pointer
	or a union.

From-SVN: r135846
parent 32101f99
2008-05-24 Richard Guenther <rguenther@suse.de>
* tree-dfa.c (refs_may_alias_p): Re-instantiate case that
a scalar variable can be only accessed through a pointer
or a union.
2008-05-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2008-05-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE. * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
......
...@@ -1078,8 +1078,23 @@ refs_may_alias_p (tree ref1, tree ref2) ...@@ -1078,8 +1078,23 @@ refs_may_alias_p (tree ref1, tree ref2)
/* If one base is a ref-all pointer weird things are allowed. */ /* If one base is a ref-all pointer weird things are allowed. */
strict_aliasing_applies = (flag_strict_aliasing strict_aliasing_applies = (flag_strict_aliasing
&& get_alias_set (base1) != 0 && (!INDIRECT_REF_P (base1)
&& get_alias_set (base2) != 0); || get_alias_set (base1) != 0)
&& (!INDIRECT_REF_P (base2)
|| get_alias_set (base2) != 0));
/* If strict aliasing applies the only way to access a scalar variable
is through a pointer dereference or through a union (gcc extension). */
if (strict_aliasing_applies
&& ((SSA_VAR_P (ref2)
&& !AGGREGATE_TYPE_P (TREE_TYPE (ref2))
&& !INDIRECT_REF_P (ref1)
&& TREE_CODE (TREE_TYPE (base1)) != UNION_TYPE)
|| (SSA_VAR_P (ref1)
&& !AGGREGATE_TYPE_P (TREE_TYPE (ref1))
&& !INDIRECT_REF_P (ref2)
&& TREE_CODE (TREE_TYPE (base2)) != UNION_TYPE)))
return false;
/* If both references are through the same type, or if strict aliasing /* If both references are through the same type, or if strict aliasing
doesn't apply they are through two same pointers, they do not alias doesn't apply they are through two same pointers, they do not alias
......
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