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
This commit is contained in:
Richard Guenther 2009-06-17 10:29:22 +00:00 committed by Richard Biener
parent 3cb8677cc0
commit 4d61856d0a
3 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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)

View File

@ -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;