This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
In this patch: http://gcc.gnu.org/ml/gcc-patches/2000-05/msg01680.html Richard Kenner changed the type of alias sets from int to HOST_WIDE_INT. However, the change was not made consistently. There are a number of places in the compiler which store alias sets in a simple int; e.g., the static variable alpha_sr_alias_set in alpha.c. According to his e-mail message, the change was made to permit frontends to use a sparse definition of alias sets. However, no frontend takes advantage of that facility, and I am doubtful that any frontend ever would. Since alias sets are allocated directly by the middle-end, as well as by the frontend via LANG_HOOKS_GET_ALIAS_SET, it is hard to see how a frontend could be sure to avoid alias sets allocated by the middle-end. The code in dse.c stores alias set numbers in bitmaps, which is only supported for int, not for HOST_WIDE_INT. This code is admittedly rather new. So there is no reason to use HOST_WIDE_INT for alias sets, it never fully worked, and it works even less well now. I think it is time to change alias sets back to have type int, which should save a bit of space in DECLs and MEM_ATTRs. To avoid the kind of error made in the original patch, in which some variables did not change type, this is a purely mechanical patch to change all alias set representations to have type alias_set_type. This does not change the compiler, except for correcting the cases where a variable had type int when it should have been HOST_WIDE_INT. If this patch seems OK, I'll change alias_set_type in a simple follow-on patch. Bootstrapped and tested on i686-pc-linux-gnu. I plan to commit this in a couple of days unless I get comments. Ian gcc/ChangeLog: 2007-08-09 Ian Lance Taylor <iant@google.com> * alias.h (alias_set_type): Define new type. (ALIAS_SET_MEMORY_BARRIER): Use it. * rtl.h: Include alias.h. (struct mem_attrs): Use alias_set_type. * tree.h: Include alias.h (struct tree_type): Use alias_set_type. (struct tree_struct_field_tag): Likewise. (struct tree_decl_common): Likewise. * alias.c (struct alias_set_entry): Use alias_set_type. (get_alias_set_entry, alias_set_subset_of): Likewise. (alias_sets_conflict_p): Likewise. (alias_sets_must_conflict_p): Likewise. (objects_must_conflict_p): Likewise. (get_alias_set, new_alias_set): Likewise. (record_alias_subset, record_component_aliases): Likewise. (varargs_set, frame_set): Change to alias_set_type. (get_varargs_alias_set): Use alias_set_type. (get_frame_alias_set): Likewise. * builtins.c (setjmp_alias_set): Change to alias_set_type. * dse.c (struct store_info): Use alias_set_type. (struct read_info, struct clear_alias_mode_holder): Likewise. (clear_alias_set_lookup, canon_address): Likewise. (record_store, check_mem_read_rtx): Likewise. (dse_record_singleton_alias_set): Likewise. (dse_invalidate_singleton_alias_set): Likewise. * emit-rtl.c (get_mem_attrs): Likewise. (set_mem_attributes_minus_bitpos): Likewise. (set_mem_alias_set): Likewise. * expr.c (store_constructor_field, store_field): Likewise. * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise. * langhooks.c (lhd_get_alias_set): Likewise. * langhooks-def.h (lhd_get_alias_set): Likewise. * reload1.c (alter_reg): Likewise. * tree-flow.h (struct fieldoff): Likewise. * tree-ssa-alias.c (struct alias_map_d): Likewise. (may_alias_p, get_smt_for, create_sft): Likewise. * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise. * tree-ssa-structalias.c (set_uids_in_ptset): Likewise. (merge_smts_into): Likewise. * varasm.c (const_alias_set): Likewise. * c-common.c (strict_aliasing_warning): Likewise. (c_common_get_alias_set): Likewise. * dse.h (dse_record_singleton_alias_set): Update declaration. (dse_invalidate_singleton_alias_set): Likewise. * emit-rtl.h (set_mem_alias_set): Likewise. * c-common.h (c_common_get_alias_set): Likewise. * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it. * print-tree.c (print_node): Likewise. * config/alpha/alpha.c (alpha_sr_alias_set): Change to alias_set_type. (alpha_setup_incoming_varargs): Use alias_set_type. * config/i386/i386.c (setup_incoming_varargs_64): Use alias_set_type. (setup_incoming_varargs_ms_64): Likewise. (ix86_GOT_alias_set): Likewise. * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise. * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise. (set): Change to alias_set_type. (get_TOC_alias_set): Use alias_set_type. * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update declaration. * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type. * config/sparc/sparc.c (sparc_sr_alias_set): Change to alias_set_type. (struct_value_alias_set): Likewise. * Makefile.in (GTFILES): Add $(srcdir)/alias.h. gcc/ada/ChangeLog: 2007-08-09 Ian Lance Taylor <iant@google.com> * misc.c (gnat_get_alias_set): Change return type to alias_set_type. gcc/cp/ChangeLog: 2007-08-09 Ian Lance Taylor <iant@google.com> * cp-objcp-common.c (cxx_get_alias_set): Change return type to alias_set_type. * cp/cp-tree.h (cxx_get_alias_set): Update declaration. gcc/fortran/ChangeLog: 2007-08-09 Ian Lance Taylor <iant@google.com> * f95-lang.c (gfc_get_alias_set): Change return type to alias_set_type.
Attachment:
foo.patch.gz
Description: alias_set_type patch
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |