As discussed on gcc@, this removes the internal_reference_types machinery,
which is used only by the Ada compiler for a reason probably long obsolete.
Tested on x86_64-suse-linux, applied on the mainline.
2016-04-27 Eric Botcazou <ebotca...@adacore.com>
PR ada/70759
* stor-layout.h (internal_reference_types): Delete.
* stor-layout.c (reference_types_internal): Likewise.
(internal_reference_types): Likewise.
(layout_type) <REFERENCE_TYPE>: Adjust.
2016-04-27 Eric Botcazou <ebotca...@adacore.com>
* gcc-interface/misc.c (gnat_init): Do not call
internal_reference_types.
--
Eric Botcazou
Index: ada/gcc-interface/misc.c
===================================================================
--- ada/gcc-interface/misc.c (revision 235394)
+++ ada/gcc-interface/misc.c (working copy)
@@ -369,9 +369,6 @@ gnat_init (void)
sbitsize_one_node = sbitsize_int (1);
sbitsize_unit_node = sbitsize_int (BITS_PER_UNIT);
- /* Show that REFERENCE_TYPEs are internal and should be Pmode. */
- internal_reference_types ();
-
/* Register our internal error function. */
global_dc->internal_error = &internal_error_function;
Index: stor-layout.c
===================================================================
--- stor-layout.c (revision 235394)
+++ stor-layout.c (working copy)
@@ -49,11 +49,6 @@ tree sizetype_tab[(int) stk_type_kind_la
The value is measured in bits. */
unsigned int maximum_field_alignment = TARGET_DEFAULT_PACK_STRUCT * BITS_PER_UNIT;
-/* Nonzero if all REFERENCE_TYPEs are internal and hence should be allocated
- in the address spaces' address_mode, not pointer_mode. Set only by
- internal_reference_types called only by a front end. */
-static int reference_types_internal = 0;
-
static tree self_referential_size (tree);
static void finalize_record_size (record_layout_info);
static void finalize_type_size (tree);
@@ -62,15 +57,6 @@ static int excess_unit_span (HOST_WIDE_I
HOST_WIDE_INT, tree);
extern void debug_rli (record_layout_info);
-/* Show that REFERENCE_TYPES are internal and should use address_mode.
- Called only by front end. */
-
-void
-internal_reference_types (void)
-{
- reference_types_internal = 1;
-}
-
/* Given a size SIZE that may not be a constant, return a SAVE_EXPR
to serve as the actual size-expression for a type or decl. */
@@ -2245,12 +2231,6 @@ layout_type (tree type)
case REFERENCE_TYPE:
{
machine_mode mode = TYPE_MODE (type);
- if (TREE_CODE (type) == REFERENCE_TYPE && reference_types_internal)
- {
- addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type));
- mode = targetm.addr_space.address_mode (as);
- }
-
TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (mode));
TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (mode));
TYPE_UNSIGNED (type) = 1;
Index: stor-layout.h
===================================================================
--- stor-layout.h (revision 235394)
+++ stor-layout.h (working copy)
@@ -22,7 +22,6 @@ along with GCC; see the file COPYING3.
extern void set_min_and_max_values_for_integral_type (tree, int, signop);
extern void fixup_signed_type (tree);
-extern void internal_reference_types (void);
extern unsigned int update_alignment_for_field (record_layout_info, tree,
unsigned int);
extern record_layout_info start_record_layout (tree);