aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimple.c2
-rw-r--r--gcc/tree-ssa-structalias.c2
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;