]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
IBM Z: Use tree_fits_uhwi_p in vector_alignment hook
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 5 Nov 2019 15:24:43 +0000 (15:24 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Tue, 5 Nov 2019 15:24:43 +0000 (15:24 +0000)
This fixes an ICE in gcc.dg/attr-vector_size.c testcase.

gcc/ChangeLog:

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

Backport from mainline
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.

From-SVN: r277841

gcc/ChangeLog
gcc/config/s390/s390.c

index b534127d23283d2de3b9ff712bf10ebccf19c649..d84440809a70167c50088e4fddc77748dcf5bf67 100644 (file)
@@ -1,3 +1,11 @@
+2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       Backport from mainline
+       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.
+
 2019-11-01  John David Anglin  <danglin@gcc.gnu.org>
 
        Backport from mainline
index 21aaae1fdbd6349edf5fef43b0890cb3fed03278..081b67d8dab524972de10a5ae228dd8511e6de00 100644 (file)
@@ -15974,13 +15974,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