diff options
author | Richard Guenther <rguenther@suse.de> | 2009-10-28 13:52:20 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-10-28 13:52:20 +0000 |
commit | 14cf68d935bbe7e74d01ef08da9540a08423dd12 (patch) | |
tree | 173b119f1eca7e90448f2b336299d2a06df7254e /gcc/tree.c | |
parent | 69ba91edf437188d6fb6522153903144353c0f61 (diff) | |
download | gcc-14cf68d935bbe7e74d01ef08da9540a08423dd12.zip gcc-14cf68d935bbe7e74d01ef08da9540a08423dd12.tar.gz gcc-14cf68d935bbe7e74d01ef08da9540a08423dd12.tar.bz2 |
tree.c (free_lang_data_in_type): Do not call get_alias_set.
2009-10-28 Richard Guenther <rguenther@suse.de>
* tree.c (free_lang_data_in_type): Do not call get_alias_set.
(free_lang_data): Unconditionally compute alias sets for all
standard integer types. Bail out if gate bailed out previously.
Do not reset the types_compatible_p langhook.
(gate_free_lang_data): Remove.
(struct pass_ipa_free_lang_data): Enable unconditionally.
* gimple.c (gimple_get_alias_set): Use the same alias-set for
all pointer types.
From-SVN: r153659
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 37 |
1 files changed, 17 insertions, 20 deletions
@@ -4171,11 +4171,6 @@ free_lang_data_in_type (tree type) { gcc_assert (TYPE_P (type)); - /* Fill in the alias-set. We need to at least track zeroness here - for correctness. */ - if (lang_hooks.get_alias_set (type) == 0) - TYPE_ALIAS_SET (type) = 0; - /* Give the FE a chance to remove its own data first. */ lang_hooks.free_lang_data (type); @@ -4924,6 +4919,20 @@ free_lang_data_in_cgraph (void) static unsigned free_lang_data (void) { + unsigned i; + + /* Allocate and assign alias sets to the standard integer types + while the slots are still in the way the frontends generated them. */ + for (i = 0; i < itk_none; ++i) + if (integer_types[i]) + TYPE_ALIAS_SET (integer_types[i]) = get_alias_set (integer_types[i]); + + /* FIXME. Remove after save_debug_info is working. */ + if (!(flag_generate_lto + || (!in_lto_p + && !flag_gtoggle && debug_info_level <= DINFO_LEVEL_TERSE))) + return 0; + /* Traverse the IL resetting language specific information for operands, expressions, etc. */ free_lang_data_in_cgraph (); @@ -4951,9 +4960,9 @@ free_lang_data (void) else signed_char_type_node = char_type_node; - /* Reset some langhooks. */ + /* Reset some langhooks. Do not reset types_compatible_p, it may + still be used indirectly via the get_alias_set langhook. */ lang_hooks.callgraph.analyze_expr = NULL; - lang_hooks.types_compatible_p = NULL; lang_hooks.dwarf_name = lhd_dwarf_name; lang_hooks.decl_printable_name = gimple_decl_printable_name; lang_hooks.set_decl_assembler_name = lhd_set_decl_assembler_name; @@ -4975,24 +4984,12 @@ free_lang_data (void) } -/* Gate function for free_lang_data. */ - -static bool -gate_free_lang_data (void) -{ - /* FIXME. Remove after save_debug_info is working. */ - return (flag_generate_lto - || (!in_lto_p - && !flag_gtoggle && debug_info_level <= DINFO_LEVEL_TERSE)); -} - - struct simple_ipa_opt_pass pass_ipa_free_lang_data = { { SIMPLE_IPA_PASS, NULL, /* name */ - gate_free_lang_data, /* gate */ + NULL, /* gate */ free_lang_data, /* execute */ NULL, /* sub */ NULL, /* next */ |