From b61eaa25b0812a5996024e0ddb3535dde5a89c88 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Tue, 1 Sep 2020 12:03:21 +0100 Subject: [PATCH] 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 gcc/ChangeLog: PR middle-end/90597 * targhooks.c (default_vector_alignment): Return at least the GET_MODE_ALIGNMENT for the type's mode. --- gcc/targhooks.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 0113c7b0ce2..da4805d284e 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 -- 2.30.2