aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/varpool.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3045f2b..0989c48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/55395
+ * varpool.c (varpool_remove_node): Don't drop DECL_INITIAL
+ if -g and emitting DWARF2+.
+
2012-12-06 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 87f29a0..7f4cfe7 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -65,7 +65,10 @@ varpool_remove_node (struct varpool_node *node)
&& !DECL_VIRTUAL_P (node->symbol.decl)
/* dbxout output constant initializers for readonly vars. */
&& (!host_integerp (DECL_INITIAL (node->symbol.decl), 0)
- || !TREE_READONLY (node->symbol.decl)))
+ || !TREE_READONLY (node->symbol.decl))
+ /* dwarf2out can use most of the initializers. */
+ && write_symbols != DWARF2_DEBUG
+ && write_symbols != VMS_AND_DWARF2_DEBUG)
DECL_INITIAL (node->symbol.decl) = error_mark_node;
ggc_free (node);
}