diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-09 09:30:26 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-09 09:30:26 +0000 |
commit | ca1de3a62d14399000f480cd55dec6c1d79c463f (patch) | |
tree | 04799c8a0b105d294ad0d8399468daab5893b09a /gcc/tree.c | |
parent | 15b4ae7588b663c9b828bcb9be535f89fe43d9a8 (diff) | |
download | gcc-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.c | 18 |
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 */ } }; |