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>
* builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
......
......@@ -1078,8 +1078,23 @@ refs_may_alias_p (tree ref1, tree ref2)
/* If one base is a ref-all pointer weird things are allowed. */
strict_aliasing_applies = (flag_strict_aliasing
&& get_alias_set (base1) != 0
&& get_alias_set (base2) != 0);
&& (!INDIRECT_REF_P (base1)
|| 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
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