summaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-09 19:31:45 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-09 19:31:45 +0000
commitba4876390b4cb6b94e4ee64d6646fee7aa43b556 (patch)
treed0452c9d439eb92c86bdb032f5caa94bb5be505c /gcc/cfgexpand.c
parentdf4ae4c4516593909d0074d4ddea3da9c0243fda (diff)
downloadgcc-ba4876390b4cb6b94e4ee64d6646fee7aa43b556.tar.gz
PR target/43808
* cfgexpand.c (partition_stack_vars): Call update_alias_info_with_stack_vars unconditionally. (update_alias_info_with_stack_vars): Allow unused unreferenced vars when not optimizing. * gfortran.dg/pr43808.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166509 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r--gcc/cfgexpand.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index c44649e857d..784639d9e65 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -516,9 +516,11 @@ update_alias_info_with_stack_vars (void)
unsigned int uid = DECL_PT_UID (decl);
/* We should never end up partitioning SSA names (though they
may end up on the stack). Neither should we allocate stack
- space to something that is unused and thus unreferenced. */
+ space to something that is unused and thus unreferenced, except
+ for -O0 where we are preserving even unreferenced variables. */
gcc_assert (DECL_P (decl)
- && referenced_var_lookup (DECL_UID (decl)));
+ && (!optimize
+ || referenced_var_lookup (DECL_UID (decl))));
bitmap_set_bit (part, uid);
*((bitmap *) pointer_map_insert (decls_to_partitions,
(void *)(size_t) uid)) = part;
@@ -684,8 +686,7 @@ partition_stack_vars (void)
}
}
- if (optimize)
- update_alias_info_with_stack_vars ();
+ update_alias_info_with_stack_vars ();
}
/* A debugging aid for expand_used_vars. Dump the generated partitions. */