aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7161319..f5d0413 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Fri Sep 10 16:48:26 1999 Andrew Haley <aph@cygnus.com>
+
+ * tree.c (type_hash_lookup): Check for equal TYPE_ALIGN fields
+ when comparing types.
+
Wed Sep 8 16:12:04 1999 Andrew Haley <aph@cygnus.com>
* alias.c (rtx_equal_for_memref_p): Allow CONST_DOUBLEs to be used
diff --git a/gcc/tree.c b/gcc/tree.c
index 2dc6361..b10ce01 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -3672,12 +3672,18 @@ type_hash_lookup (hashcode, type)
tree type;
{
register struct type_hash *h;
+
+ /* The TYPE_ALIGN field of a type is set by layout_type(), so we
+ must call that routine before comparing TYPE_ALIGNs. */
+ layout_type (type);
+
for (h = type_hash_table[hashcode % TYPE_HASH_SIZE]; h; h = h->next)
if (h->hashcode == hashcode
&& TREE_CODE (h->type) == TREE_CODE (type)
&& TREE_TYPE (h->type) == TREE_TYPE (type)
&& attribute_list_equal (TYPE_ATTRIBUTES (h->type),
TYPE_ATTRIBUTES (type))
+ && TYPE_ALIGN (h->type) == TYPE_ALIGN (type)
&& (TYPE_MAX_VALUE (h->type) == TYPE_MAX_VALUE (type)
|| tree_int_cst_equal (TYPE_MAX_VALUE (h->type),
TYPE_MAX_VALUE (type)))