This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch] Remove obsolete code in layout_type
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sun, 20 Sep 2009 23:16:08 +0200
- Subject: [Patch] Remove obsolete code in layout_type
Hi,
a complete bootstrap/regtest cycle has succeeded with the following assert
Index: stor-layout.c
===================================================================
--- stor-layout.c (revision 151898)
+++ stor-layout.c (working copy)
@@ -1998,6 +1998,8 @@ layout_type (tree type)
fold_convert (bitsizetype,
length));
+ gcc_assert (!integer_onep (element_size));
+
/* If we know the size of the element, calculate the total
size directly, rather than do some division thing below.
This optimization helps Fortran assumed-size arrays
on x86_64-suse-linux so it looks like the code just above
/* Special handling for arrays of bits (for Chill). */
element_size = TYPE_SIZE (element);
if (TYPE_PACKED (type) && INTEGRAL_TYPE_P (element)
&& (integer_zerop (TYPE_MAX_VALUE (element))
|| integer_onep (TYPE_MAX_VALUE (element)))
&& host_integerp (TYPE_MIN_VALUE (element), 1))
{
HOST_WIDE_INT maxvalue
= tree_low_cst (TYPE_MAX_VALUE (element), 1);
HOST_WIDE_INT minvalue
= tree_low_cst (TYPE_MIN_VALUE (element), 1);
if (maxvalue - minvalue == 1
&& (maxvalue == 1 || maxvalue == 0))
element_size = integer_one_node;
}
is really obsolete. Hence the attached patch, retested on i586-suse-linux.
OK for mainline?
2009-09-20 Eric Botcazou <ebotcazou@adacore.com>
* stor-layout.c (layout_type): Remove obsolete code.
--
Eric Botcazou
Index: stor-layout.c
===================================================================
--- stor-layout.c (revision 151898)
+++ stor-layout.c (working copy)
@@ -1956,8 +1956,8 @@ layout_type (tree type)
{
tree ub = TYPE_MAX_VALUE (index);
tree lb = TYPE_MIN_VALUE (index);
+ tree element_size = TYPE_SIZE (element);
tree length;
- tree element_size;
/* The initial subtraction should happen in the original type so
that (possible) negative values are handled appropriately. */
@@ -1968,23 +1968,6 @@ layout_type (tree type)
TREE_TYPE (lb),
ub, lb)));
- /* Special handling for arrays of bits (for Chill). */
- element_size = TYPE_SIZE (element);
- if (TYPE_PACKED (type) && INTEGRAL_TYPE_P (element)
- && (integer_zerop (TYPE_MAX_VALUE (element))
- || integer_onep (TYPE_MAX_VALUE (element)))
- && host_integerp (TYPE_MIN_VALUE (element), 1))
- {
- HOST_WIDE_INT maxvalue
- = tree_low_cst (TYPE_MAX_VALUE (element), 1);
- HOST_WIDE_INT minvalue
- = tree_low_cst (TYPE_MIN_VALUE (element), 1);
-
- if (maxvalue - minvalue == 1
- && (maxvalue == 1 || maxvalue == 0))
- element_size = integer_one_node;
- }
-
/* If neither bound is a constant and sizetype is signed, make
sure the size is never negative. We should really do this
if *either* bound is non-constant, but this is the best
@@ -1998,15 +1981,11 @@ layout_type (tree type)
fold_convert (bitsizetype,
length));
- /* If we know the size of the element, calculate the total
- size directly, rather than do some division thing below.
- This optimization helps Fortran assumed-size arrays
- (where the size of the array is determined at runtime)
- substantially.
- Note that we can't do this in the case where the size of
- the elements is one bit since TYPE_SIZE_UNIT cannot be
- set correctly in that case. */
- if (TYPE_SIZE_UNIT (element) != 0 && ! integer_onep (element_size))
+ /* If we know the size of the element, calculate the total size
+ directly, rather than do some division thing below. This
+ optimization helps Fortran assumed-size arrays (where the
+ size of the array is determined at runtime) substantially. */
+ if (TYPE_SIZE_UNIT (element))
TYPE_SIZE_UNIT (type)
= size_binop (MULT_EXPR, TYPE_SIZE_UNIT (element), length);
}