aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@nextmovesoftware.com>2020-09-01 12:03:21 +0100
committerRoger Sayle <roger@nextmovesoftware.com>2020-09-01 12:03:21 +0100
commitb61eaa25b0812a5996024e0ddb3535dde5a89c88 (patch)
tree2d5b1b9e36d1da76a49eb6593ca4dd7d2f166582 /gcc
parent3d137b75febd1a4ad70bcc64e0f79198f5571b86 (diff)
downloadgcc-b61eaa25b0812a5996024e0ddb3535dde5a89c88.zip
gcc-b61eaa25b0812a5996024e0ddb3535dde5a89c88.tar.gz
gcc-b61eaa25b0812a5996024e0ddb3535dde5a89c88.tar.bz2
PR middle-end/90597: gcc_assert ICE in layout_type
This patch fixes the default implementation of TARGET_VECTOR_ALIGNMENT, known as default_vector_alignment, using the same logic as my earlier nvptx patch, as the ICE caused by TYPE_SIZE(type) being zero during error handling in gcc.dg/attr-vector_size.c is common among backends, and is known in bugzilla as PR middle-end/90597, apparently a recent regression. 2020-09-01 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog: PR middle-end/90597 * targhooks.c (default_vector_alignment): Return at least the GET_MODE_ALIGNMENT for the type's mode.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/targhooks.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 0113c7b..da4805d 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1233,8 +1233,9 @@ default_vector_alignment (const_tree type)
tree size = TYPE_SIZE (type);
if (tree_fits_uhwi_p (size))
align = tree_to_uhwi (size);
-
- return align < MAX_OFILE_ALIGNMENT ? align : MAX_OFILE_ALIGNMENT;
+ if (align >= MAX_OFILE_ALIGNMENT)
+ return MAX_OFILE_ALIGNMENT;
+ return MAX (align, GET_MODE_ALIGNMENT (TYPE_MODE (type)));
}
/* The default implementation of