aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-09-09 09:30:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-09-09 09:30:26 +0000
commitccffb7554eb3c2ab5760c2d817c2ff4e8aae09bc (patch)
tree04799c8a0b105d294ad0d8399468daab5893b09a /gcc/tree.c
parente79faf7e4465a87a20f7654ce1b5f442e576371a (diff)
downloadgcc-ccffb7554eb3c2ab5760c2d817c2ff4e8aae09bc.zip
gcc-ccffb7554eb3c2ab5760c2d817c2ff4e8aae09bc.tar.gz
gcc-ccffb7554eb3c2ab5760c2d817c2ff4e8aae09bc.tar.bz2
tree.c (free_lang_data_in_type): Do not free the type variant chains.
2009-09-09 Richard Guenther <rguenther@suse.de> * tree.c (free_lang_data_in_type): Do not free the type variant chains. (free_lang_data): Merge char_type_node with its properly signed variant. (pass_ipa_free): Collect after freeing language specific data. From-SVN: r151558
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 010aeff..17009c6 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4238,16 +4238,6 @@ free_lang_data_in_type (tree type)
TYPE_CONTEXT (type) = NULL_TREE;
TYPE_STUB_DECL (type) = NULL_TREE;
-
- /* Remove type variants other than the main variant. This is both
- wasteful and it may introduce infinite loops when the types are
- read from disk and merged (since the variant will be the same
- type as the main variant, traversing type variants will get into
- an infinite loop). */
- if (TYPE_MAIN_VARIANT (type))
- TYPE_NEXT_VARIANT (TYPE_MAIN_VARIANT (type)) = NULL_TREE;
-
- TYPE_NEXT_VARIANT (type) = NULL_TREE;
}
@@ -4856,6 +4846,12 @@ free_lang_data (void)
boolean_true_node = TYPE_MAX_VALUE (boolean_type_node);
}
+ /* Unify char_type_node with its properly signed variant. */
+ if (TYPE_UNSIGNED (char_type_node))
+ unsigned_char_type_node = char_type_node;
+ else
+ signed_char_type_node = char_type_node;
+
/* Reset some langhooks. */
lang_hooks.callgraph.analyze_expr = NULL;
lang_hooks.types_compatible_p = NULL;
@@ -4898,7 +4894,7 @@ struct simple_ipa_opt_pass pass_ipa_free_lang_data =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0 /* todo_flags_finish */
+ TODO_ggc_collect /* todo_flags_finish */
}
};