Commit f63d806d by Richard Guenther Committed by Richard Biener

tree-ssa-alias.c (indirect_refs_may_alias_p): Fix TARGET_MEM_REF handling.

2011-04-27  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (indirect_refs_may_alias_p): Fix
	TARGET_MEM_REF handling.

From-SVN: r173018
parent 97d20907
2011-04-27 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (indirect_refs_may_alias_p): Fix
TARGET_MEM_REF handling.
2011-04-27 Nick Clifton <nickc@redhat.com> 2011-04-27 Nick Clifton <nickc@redhat.com>
* config/frv/frv.h (enum reg_class): Delete EVEN_ACC_REGS, * config/frv/frv.h (enum reg_class): Delete EVEN_ACC_REGS,
......
...@@ -925,12 +925,12 @@ indirect_refs_may_alias_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, ...@@ -925,12 +925,12 @@ indirect_refs_may_alias_p (tree ref1 ATTRIBUTE_UNUSED, tree base1,
/* If both references are through the same type, they do not alias /* If both references are through the same type, they do not alias
if the accesses do not overlap. This does extra disambiguation if the accesses do not overlap. This does extra disambiguation
for mixed/pointer accesses but requires strict aliasing. */ for mixed/pointer accesses but requires strict aliasing. */
if ((TREE_CODE (base1) != TARGET_MEM_REF || !TMR_INDEX (base1)) if ((TREE_CODE (base1) != TARGET_MEM_REF
&& (TREE_CODE (base2) != TARGET_MEM_REF || !TMR_INDEX (base2)) || (!TMR_INDEX (base1) && !TMR_INDEX2 (base1)))
&& (TREE_CODE (base1) != MEM_REF && (TREE_CODE (base2) != TARGET_MEM_REF
|| same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1) || (!TMR_INDEX (base2) && !TMR_INDEX2 (base2)))
&& (TREE_CODE (base2) != MEM_REF && same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1
|| same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1) && same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1
&& same_type_for_tbaa (TREE_TYPE (ptrtype1), && same_type_for_tbaa (TREE_TYPE (ptrtype1),
TREE_TYPE (ptrtype2)) == 1) TREE_TYPE (ptrtype2)) == 1)
return ranges_overlap_p (offset1, max_size1, offset2, max_size2); return ranges_overlap_p (offset1, max_size1, offset2, max_size2);
...@@ -942,14 +942,9 @@ indirect_refs_may_alias_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, ...@@ -942,14 +942,9 @@ indirect_refs_may_alias_p (tree ref1 ATTRIBUTE_UNUSED, tree base1,
/* Do access-path based disambiguation. */ /* Do access-path based disambiguation. */
if (ref1 && ref2 if (ref1 && ref2
&& handled_component_p (ref1) && (handled_component_p (ref1) || handled_component_p (ref2))
&& handled_component_p (ref2) && same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1
&& TREE_CODE (base1) != TARGET_MEM_REF && same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1)
&& TREE_CODE (base2) != TARGET_MEM_REF
&& (TREE_CODE (base1) != MEM_REF
|| same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1)
&& (TREE_CODE (base2) != MEM_REF
|| same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1))
return aliasing_component_refs_p (ref1, return aliasing_component_refs_p (ref1,
ref1_alias_set, base1_alias_set, ref1_alias_set, base1_alias_set,
offset1, max_size1, offset1, max_size1,
......
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