aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2012-10-16 22:49:07 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-10-16 22:49:07 +0000
commit88d8330d67ec17569e4b7e52989934bf6908a1f0 (patch)
tree01d1822515deb56bf92d32e9ff0cc1bcea39dc1b /gcc/cfgexpand.c
parentda4fdf2d3ff45366d9378882ad1646306ceee305 (diff)
downloadgcc-88d8330d67ec17569e4b7e52989934bf6908a1f0.zip
gcc-88d8330d67ec17569e4b7e52989934bf6908a1f0.tar.gz
gcc-88d8330d67ec17569e4b7e52989934bf6908a1f0.tar.bz2
re PR rtl-optimization/54870 (gfortran.dg/array_constructor_4.f90 FAILs)
PR rtl-optimization/54870 * tree.h (TREE_ADDRESSABLE): Document special usage on SSA_NAME. * cfgexpand.c (update_alias_info_with_stack_vars ): Set it on the SSA_NAME pointer that points to a partition if there is at least one variable with it set in the partition. * dse.c (local_variable_can_escape): New predicate. (can_escape): Call it. * gimplify.c (mark_addressable): If this is a partitioned decl, also mark the SSA_NAME pointer that points to a partition. From-SVN: r192517
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r--gcc/cfgexpand.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 57589ad..4ae1600 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -635,6 +635,8 @@ update_alias_info_with_stack_vars (void)
(void *)(size_t) uid)) = part;
*((tree *) pointer_map_insert (cfun->gimple_df->decls_to_pointers,
decl)) = name;
+ if (TREE_ADDRESSABLE (decl))
+ TREE_ADDRESSABLE (name) = 1;
}
/* Make the SSA name point to all partition members. */