tree-nrv.c (tree_nrv): Set DECL_VALUE_EXPR on found to result.

* tree-nrv.c (tree_nrv): Set DECL_VALUE_EXPR on found to result.

	* gcc.dg/guality/nrv-1.c: New test.

From-SVN: r161849
This commit is contained in:
Jakub Jelinek 2010-07-05 21:42:53 +02:00 committed by Jakub Jelinek
parent 0a8c9a1379
commit 938650d8fd
4 changed files with 40 additions and 2 deletions
gcc

View File

@ -1,3 +1,7 @@
2010-07-05 Jakub Jelinek <jakub@redhat.com>
* tree-nrv.c (tree_nrv): Set DECL_VALUE_EXPR on found to result.
2010-07-05 Anatoly Sokolov <aesok@post.ru>
* double-int.h (fit_double_type): Remove declaration.
@ -34,7 +38,6 @@
2010-07-05 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/42505
* tree-ssa-loop-ivopts.c (determine_set_costs): Delete obsolete
comments about cost model.
(try_add_cand_for): Add second strategy for choosing initial set

View File

@ -1,7 +1,10 @@
2010-07-05 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/guality/nrv-1.c: New test.
2010-07-05 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/42505
* gcc.target/arm/pr42505.c: New test case.
2010-07-05 Jakub Jelinek <jakub@redhat.com>

View File

@ -0,0 +1,29 @@
/* { dg-do run } */
/* { dg-options "-g -fno-tree-sra" } */
void abort (void);
struct A
{
int i[100];
};
struct A a1, a3;
__attribute__((noinline)) struct A
f ()
{
struct A a2;
a2.i[0] = 42;
if (a3.i[0] != 0)
abort ();
a2.i[4] = 7; /* { dg-final { gdb-test 20 "a2.i\[0\]" "42" } } */
return a2;
}
int
main ()
{
a1 = f ();
return 0;
}

View File

@ -259,6 +259,9 @@ tree_nrv (void)
}
}
SET_DECL_VALUE_EXPR (found, result);
DECL_HAS_VALUE_EXPR_P (found) = 1;
/* FOUND is no longer used. Ensure it gets removed. */
var_ann (found)->used = 0;
return 0;