diff options
author | Richard Guenther <rguenther@suse.de> | 2009-06-17 10:29:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-06-17 10:29:22 +0000 |
commit | 4d61856d0a221c695bbb5193ae18403d07cde0d4 (patch) | |
tree | 824902ba221886d42966346c76169bbff0889f86 /gcc | |
parent | 3cb8677cc030b145391ac547f159609b03dbbd6c (diff) | |
download | gcc-4d61856d0a221c695bbb5193ae18403d07cde0d4.zip gcc-4d61856d0a221c695bbb5193ae18403d07cde0d4.tar.gz gcc-4d61856d0a221c695bbb5193ae18403d07cde0d4.tar.bz2 |
re PR c++/40389 (optimizer bug (possibly))
2009-06-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40389
* tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
to addressable types.
* gimple.c (walk_stmt_load_store_addr_ops): Likewise.
From-SVN: r148597
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimple.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-structalias.c | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6fab0ba..c21b72e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2009-06-17 Richard Guenther <rguenther@suse.de> + PR tree-optimization/40389 + * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case + to addressable types. + * gimple.c (walk_stmt_load_store_addr_ops): Likewise. + +2009-06-17 Richard Guenther <rguenther@suse.de> + PR middle-end/40460 * tree-chrec.h (build_polynomial_chrec): If we cannot determine if there is no evolution of left in the loop bail out. diff --git a/gcc/gimple.c b/gcc/gimple.c index 91057b4..4f18b78 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -3267,7 +3267,7 @@ walk_stmt_load_store_addr_ops (gimple stmt, void *data, if (visit_addr && gimple_call_return_slot_opt_p (stmt) && gimple_call_lhs (stmt) != NULL_TREE - && TREE_ADDRESSABLE (gimple_call_lhs (stmt))) + && TREE_ADDRESSABLE (TREE_TYPE (gimple_call_lhs (stmt)))) ret |= visit_addr (stmt, gimple_call_lhs (stmt), data); } else if (gimple_code (stmt) == GIMPLE_ASM) diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index f60b24c..60863d5 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -3362,7 +3362,7 @@ handle_rhs_call (gimple stmt, VEC(ce_s, heap) **results) /* And if we applied NRV the address of the return slot escapes as well. */ if (gimple_call_return_slot_opt_p (stmt) && gimple_call_lhs (stmt) != NULL_TREE - && TREE_ADDRESSABLE (gimple_call_lhs (stmt))) + && TREE_ADDRESSABLE (TREE_TYPE (gimple_call_lhs (stmt)))) { VEC(ce_s, heap) *tmpc = NULL; struct constraint_expr lhsc, *c; |