[1/4] IBM Z: Use tree_fits_uhwi_p in vector_alignment hook

Message ID 20191105133454.8188-2-krebbel@linux.ibm.com
State New
Headers show
Series
  • IBM Z: Fix a few testsuite problems
Related show

Commit Message

Andreas Krebbel Nov. 5, 2019, 1:34 p.m.
This fixes an ICE in gcc.dg/attr-vector_size.c testcase.

gcc/ChangeLog:

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.c (s390_vector_alignment): Check if the value
	fits into uhwi before using it.
---
 gcc/config/s390/s390.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

-- 
2.23.0

Patch

diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 151b80da0b3..ff0b43c2c29 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -16075,13 +16075,19 @@  s390_support_vector_misalignment (machine_mode mode ATTRIBUTE_UNUSED,
 static HOST_WIDE_INT
 s390_vector_alignment (const_tree type)
 {
+  tree size = TYPE_SIZE (type);
+
   if (!TARGET_VX_ABI)
     return default_vector_alignment (type);
 
   if (TYPE_USER_ALIGN (type))
     return TYPE_ALIGN (type);
 
-  return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
+  if (tree_fits_uhwi_p (size)
+      && tree_to_uhwi (size) < BIGGEST_ALIGNMENT)
+    return tree_to_uhwi (size);
+
+  return BIGGEST_ALIGNMENT;
 }
 
 /* Implement TARGET_CONSTANT_ALIGNMENT.  Alignment on even addresses for