summaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-09-09 09:30:26 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2009-09-09 09:30:26 +0000
commitca1de3a62d14399000f480cd55dec6c1d79c463f (patch)
tree04799c8a0b105d294ad0d8399468daab5893b09a /gcc/tree.c
parent15b4ae7588b663c9b828bcb9be535f89fe43d9a8 (diff)
downloadgcc-ca1de3a62d14399000f480cd55dec6c1d79c463f.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151558 138bc75d-0d04-0410-961f-82ee72b054a4
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 010aeff2f57..17009c6b8e4 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 */
}
};