re PR tree-optimization/43213 (Worse code generated with -O2)

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

	PR middle-end/43213
	* expr.c (expand_assignment): Use the alias-oracle to tell
	if the rhs aliases the result decl.

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

From-SVN: r157142
This commit is contained in:
Richard Guenther 2010-03-01 12:56:44 +00:00 committed by Richard Biener
parent 291c0a12c4
commit 434c8f4b99
4 changed files with 27 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-03-01 Richard Guenther <rguenther@suse.de>
PR middle-end/43213
* expr.c (expand_assignment): Use the alias-oracle to tell
if the rhs aliases the result decl.
2010-03-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR pch/14940

View File

@ -4432,9 +4432,11 @@ expand_assignment (tree to, tree from, bool nontemporal)
/* In case we are returning the contents of an object which overlaps
the place the value is being stored, use a safe function when copying
a value through a pointer into a structure value return block. */
if (TREE_CODE (to) == RESULT_DECL && TREE_CODE (from) == INDIRECT_REF
if (TREE_CODE (to) == RESULT_DECL
&& TREE_CODE (from) == INDIRECT_REF
&& ADDR_SPACE_GENERIC_P
(TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (from, 0)))))
(TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (from, 0)))))
&& refs_may_alias_p (to, from)
&& cfun->returns_struct
&& !cfun->returns_pcc_struct)
{

View File

@ -1,3 +1,8 @@
2010-03-01 Richard Guenther <rguenther@suse.de>
PR middle-end/43213
* gcc.dg/pr43213.c: New testcase.
2010-03-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/target-supports.exp (check_effective_target_ucn_nocache):

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
struct S {
int i;
};
struct S f(int i)
{
return *(struct S *)&i;
}
/* { dg-final { scan-assembler-not "memmove" } } */