Fix PR 44955: Strip off the real and complex parts.

2010-07-21  Changpeng Fang  <changpeng.fang@amd.com>

	PR tree-optimization/44955
	* tree-ssa-loop-prefetch.c (analyze_ref): Strip off the real
	and imagine parts of a complex, so that they can have the same
	base and fall into the same group.

From-SVN: r162381
This commit is contained in:
Changpeng Fang 2010-07-21 15:44:24 +00:00 committed by Sebastian Pop
parent 60f6be5a8e
commit 7c6dafac64
2 changed files with 18 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2010-07-21 Changpeng Fang <changpeng.fang@amd.com>
* tree-ssa-loop-prefetch.c (analyze_ref): Strip off the real
and imagine parts of a complex, so that they can have the same
base and fall into the same group.
2010-07-21 Richard Guenther <rguenther@suse.de>
PR lto/45018

View File

@ -486,10 +486,18 @@ analyze_ref (struct loop *loop, tree *ref_p, tree *base,
*step = NULL_TREE;
*delta = 0;
/* First strip off the component references. Ignore bitfields. */
if (TREE_CODE (ref) == COMPONENT_REF
&& DECL_NONADDRESSABLE_P (TREE_OPERAND (ref, 1)))
ref = TREE_OPERAND (ref, 0);
/* First strip off the component references. Ignore bitfields.
Also strip off the real and imagine parts of a complex, so that
they can have the same base. */
if (TREE_CODE (ref) == REALPART_EXPR
|| TREE_CODE (ref) == IMAGPART_EXPR
|| (TREE_CODE (ref) == COMPONENT_REF
&& DECL_NONADDRESSABLE_P (TREE_OPERAND (ref, 1))))
{
if (TREE_CODE (ref) == IMAGPART_EXPR)
*delta += int_size_in_bytes (TREE_TYPE (ref));
ref = TREE_OPERAND (ref, 0);
}
*ref_p = ref;